public void RemoveTrack(TrackBehaviourEditor editor)
        {
            SerializedObject.Update();

            var propTracks = SerializedObject.FindProperty(SequenceBehaviour.PropNameTracks);
            var index      = Utility.IndexOf(propTracks, editor.Asset);

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

            SerializedObject.ApplyModifiedProperties();

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

            Object.DestroyImmediate(editor.Asset, true);
            EditorUtility.SetDirty(Asset);
            AssetDatabase.SaveAssets();
        }
        TrackBehaviourEditor CreateTrackEditor(TrackBehaviour track)
        {
            var customEditorType = GetCustomTrackEditor(track.GetType());

            if (customEditorType == null)
            {
                return(TrackBehaviourEditor.Create(typeof(TrackBehaviourEditor), track));
            }

            return(TrackBehaviourEditor.Create(customEditorType, track));
        }