public void RemoveClip(ClipBehaviourEditor editor)
        {
            SerializedObject.Update();

            var propClips = SerializedObject.FindProperty(TrackBehaviour.PropNameClips);
            var index     = Utility.IndexOf(propClips, editor.Asset);

            if (index >= 0)
            {
                Utility.RemoveAt(propClips, index);
            }

            SerializedObject.ApplyModifiedProperties();

            for (int i = m_ClipEditors.Count - 1; i >= 0; i--)
            {
                var instance = m_ClipEditors[i];
                if (instance == editor)
                {
                    m_ClipEditors.RemoveAt(i);
                    break;
                }
            }

            Object.DestroyImmediate(editor.Asset, true);
            EditorUtility.SetDirty(Asset);
            AssetDatabase.SaveAssets();
        }
        ClipBehaviourEditor CreateClipEditor(ClipBehaviour clip)
        {
            var cutomEditor = GetCustomClipEditor(clip.GetType());

            if (cutomEditor == null)
            {
                return(ClipBehaviourEditor.Create(typeof(ClipBehaviourEditor), clip));
            }

            return(ClipBehaviourEditor.Create(cutomEditor, clip));
        }