void OnHierarchyChange()
    {
        ReferenceExplorerData.RestoreAllData();

        CallbackData.UpdateSenderRecieverlist();
        CallbackData.UpdateCallbacklist(isSelectedObject, searchText);
    }
    void OnEnable()
    {
        codeSearch = new CodeSearch();

        ReferenceExplorerData.RestoreAllData();

        CallbackData.UpdateSenderRecieverlist();
        CallbackData.UpdateCallbacklist(isSelectedObject, searchText);
    }
    private static void Collection(List <ReferenceInfomation> refList, List <Type> refTypes, bool isOnlyComponent)
    {
        List <Type> allTypes = new List <Type>();

        foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
        {
            if (ignoreAssemblys.Any(item => assembly.ManifestModule.ScopeName.IndexOf(item) != -1))
            {
                continue;
            }

            var types = Assembly.Load(assembly.GetName()).GetExportedTypes();
            allTypes.AddRange(types);
        }

        var allMonoScript = new List <MonoScript>();


        allMonoScript.AddRange(ReferenceExplorerData.allComponents
                               .Where(item => null != item as MonoBehaviour)
                               .Select(item => MonoScript.FromMonoBehaviour((MonoBehaviour)item))
                               .ToList());
        allMonoScript.AddRange(ReferenceExplorerData.animatorBehaviourList
                               .Where(item => item != null)
                               .Select(item => MonoScript.FromScriptableObject(item.behaviour)));
        var allUniqueMonoscript = allMonoScript.Distinct();


        EditorUtility.DisplayProgressBar("Export Comonent Graph", "Collection All Callbacks", 0);

        CallbackData.UpdateSenderRecieverlist();
        CallbackData.UpdateCallbacklist(false, null);



        int currentTypeCount = 0;
        int max = allUniqueMonoscript.Count();

        foreach (var monoscript in allUniqueMonoscript)
        {
            var ignoreNamespace = new Dictionary <string, bool>();

            currentTypeCount++;
            EditorUtility.DisplayProgressBar("Export Comonent Graph", "Lists reference class" + monoscript.name, (float)(currentTypeCount) / max);

            foreach (var type in allTypes)
            {
                if (ignoreTypes.Contains(type))
                {
                    continue;
                }

                if (isOnlyComponent == true && type.IsSubclassOf(typeof(Component)) == false)
                {
                    continue;
                }

                // ネームスペースでスキップ
                if (type.Namespace != null)
                {
                    if (ignoreNamespace.ContainsKey(type.Namespace))
                    {
                        if (ignoreNamespace[type.Namespace] == false)
                        {
                            continue;
                        }
                    }
                    else
                    {
                        string namespacepattern = string.Format("{0}+[\\.;\\S]", type.Namespace);
                        if (Regex.IsMatch(monoscript.text, namespacepattern) == false)
                        {
                            ignoreNamespace.Add(type.Namespace, false);
                            continue;
                        }
                        else
                        {
                            ignoreNamespace.Add(type.Namespace, true);
                        }
                    }
                }



                string pattern = string.Format("[\\.\\s\\<)]+{0}[\\.\\s\\)>]", type.Name);

                if (monoscript.GetClass() == type ||
                    ignoreTypes.Contains(monoscript.GetClass()))
                {
                    continue;
                }

                var text = Regex.Replace(monoscript.text, "//.*\\n", "");
                text = text.Replace("\\n", " ");
                text = Regex.Replace(text, "/\\*.*\\*/", " ");

                var match = Regex.Match(text, pattern);

                if (match.Success == false)
                {
                    continue;
                }

                refList.Add(new ReferenceInfomation()
                {
                    from = monoscript.GetClass(),
                    to   = type
                });

                refTypes.Add(monoscript.GetClass());
                refTypes.Add(type);
            }
        }
    }