void CreateContextMenu(GameObject animatedGo, AnimationClip clip, float time, int eventIndex, bool[] selectedEvents)
        {
            GenericMenu menu          = new GenericMenu();
            var         contextData   = new EventLineContextMenuObject(animatedGo, clip, time, eventIndex, selectedEvents);
            var         selectedCount = selectedEvents.Count(selected => selected);

            menu.AddItem(Styles.textAddEvent, false, EventLineContextMenuAdd, contextData);
            if (selectedCount > 0 || eventIndex != -1)
            {
                menu.AddItem(selectedCount > 1 ? Styles.textDeleteEvents : Styles.textDeleteEvent, false, EventLineContextMenuDelete, contextData);
                menu.AddItem(Styles.textCopyEvents, false, EventLineContextMenuCopy, contextData);
            }
            else
            {
                menu.AddDisabledItem(Styles.textDeleteEvents);
                menu.AddDisabledItem(Styles.textCopyEvents);
            }
            if (AnimationWindowEventsClipboard.CanPaste())
            {
                menu.AddItem(Styles.textPasteEvents, false, EventLineContextMenuPaste, contextData);
            }
            else
            {
                menu.AddDisabledItem(Styles.textPasteEvents);
            }
            menu.ShowAsContext();
        }
        internal void PasteEvents(GameObject animated, AnimationClip clip, float time)
        {
            var oldEvents = AnimationUtility.GetAnimationEvents(clip);
            var newEvents = AnimationWindowEventsClipboard.AddPastedEvents(oldEvents, time, out var selected);

            if (newEvents == null)
            {
                return;
            }

            Undo.RegisterCompleteObjectUndo(clip, "Paste Events");
            EditEvents(animated, clip, selected);
            AnimationUtility.SetAnimationEvents(clip, newEvents);
            m_DirtyTooltip = true;
        }
        void CopyEvents(AnimationClip clip, bool[] selected, int explicitIndex = -1)
        {
            var allEvents = new List <AnimationEvent>(AnimationUtility.GetAnimationEvents(clip));

            AnimationWindowEventsClipboard.CopyEvents(allEvents, selected, explicitIndex);
        }