public void AddAnimationTrack(string layer)
        {
            var track = CreateInstance <AnimationTrack>();

            USUndoManager.RegisterCreatedObjectUndo(track, "Add New Track");

            track.Layer = MecanimAnimationUtility.LayerNameToIndex(AnimationTimeline.AffectedObject.gameObject, layer);

            USUndoManager.RegisterCompleteObjectUndo(AnimationTimeline, "Add New Track");
            AnimationTimeline.AddTrack(track);

            var hierarchyItem = CreateInstance(typeof(USAnimationTimelineTrackHierarchyItem)) as USAnimationTimelineTrackHierarchyItem;

            USUndoManager.RegisterCreatedObjectUndo(hierarchyItem, "Add New Track");
            hierarchyItem.AnimationTrack             = track;
            hierarchyItem.AnimationTimelineHierarchy = this;
            hierarchyItem.AnimationTimeline          = AnimationTimeline;
            hierarchyItem.Initialize(AnimationTimeline);

            USUndoManager.RegisterCompleteObjectUndo(USHierarchy, "Add New Track");
            USHierarchy.RootItems.Add(hierarchyItem as IUSHierarchyItem);

            if (AnimationTimeline.AnimationTracks.Count == 1)
            {
                IsExpanded = true;
            }
        }