protected override void Start()
        {
            if (materialsOverride == null)
            {
                materialsOverride = FindObjectOfType <MaterialsOverride>();
            }

            if (materialsOverride == null)
            {
                enabled = false;
                return;
            }

            base.Start();

            _listControl.SetDataSource(_listControlDataSource);
            _listControl.onOpen += OnOptionsChanged;
        }
        internal static void FindMaterialsForSyncPrefabImporter(SyncPrefabScriptedImporter importer)
        {
            var targetPath = EditorUtility.OpenFolderPanel(
                "Pick Materials Location",
                Application.dataPath,
                "");

            if (targetPath == string.Empty)
            {
                return;
            }

            // issue error if path is outside of Project's Assets
            if (!targetPath.StartsWith(Application.dataPath))
            {
                Debug.LogError("Cannot save materials outside of project's assets folder!");
                return;
            }
            targetPath = "Assets" + targetPath.Substring(Application.dataPath.Length);

            var materialsGUIDS = AssetDatabase.FindAssets("t:Material", new string[1] {
                targetPath
            });
            var materials = new Dictionary <string, Material>();

            foreach (string guid in materialsGUIDS)
            {
                var mat = AssetDatabase.LoadAssetAtPath <Material>(AssetDatabase.GUIDToAssetPath(guid));
                if (mat)
                {
                    materials.Add(mat.name, mat);
                }
            }
            var remaps = new Dictionary <string, Material>();

            importer.GetRemaps(out remaps);
            switch (ReflectEditorPreferences.materialSearchMatchType)
            {
            case MaterialMappings.MatchType.A_Equals_B:
                foreach (KeyValuePair <string, Material> kvp in materials)
                {
                    if (remaps.ContainsKey(kvp.Key) && remaps[kvp.Key] == null)     // TODO : add an option to override existing materials ?
                    {
                        remaps[kvp.Key] = kvp.Value;
                    }
                }
                break;

            default:
                var remapsNames = remaps.Keys.ToList();
                foreach (KeyValuePair <string, Material> kvp_m in materials)
                {
                    foreach (string r in remapsNames)
                    {
                        if (MaterialsOverride.Match(kvp_m.Key, r, ReflectEditorPreferences.materialSearchMatchType) && remaps[r] == null)
                        {
                            remaps[r] = kvp_m.Value;
                        }
                    }
                }
                break;
            }
            importer.SetRemaps(remaps);
        }