private void updateNotesMenu(IEnumerable <object> selectedNotes)
        {
            var hasVariousNotesUnequalNull = (IsGenericMidi && !_selectedNotes.Where(n => n.ToString() != _note).Any()) ||
                                             (!IsGenericMidi && !_selectedNotes.Cast <AMidiDefinition>().Where(n => n.Note != _note).Any());

            if (hasVariousNotesUnequalNull)
            {
                if (NotesMenu.Contains(_selectedNotesMenuItem))
                {
                    NotesMenu.Remove(SEPARATOR);
                    NotesMenu.Remove(_selectedNotesMenuItem);
                }

                return;
            }

            _selectedNotesMenuItem.Children = NotesMenuBuilder.Instance.BuildSelectedNotesMenu(selectedNotes);

            if (!NotesMenu.Contains(_selectedNotesMenuItem))
            {
                NotesMenu.Insert(0, SEPARATOR);
                NotesMenu.Insert(0, _selectedNotesMenuItem);
            }
        }
        private void updateNotesMenu(IEnumerable <object> selectedNotes)
        {
            // remove possible previous entries
            while (NotesMenu_shortcuts > 0)
            {
                //OutCommands.Add(_separator);
                NotesMenu.RemoveAt(0);
                NotesMenu_shortcuts -= 1;
            }

            ////
            var hasVariousNotesUnequalNull = (IsGenericMidi && !_selectedNotes.Where(n => n.ToString() != _note).Any()) ||
                                             (!IsGenericMidi && !_selectedNotes.Cast <AMidiDefinition>().Where(n => n.Note != _note).Any());

            if (selectedNotes.Count() > 0)
            {
                // todo: do real C# code here
                _selectedNotesMenuItem.Children = NotesMenuBuilder.Instance.BuildSelectedNotesMenu(selectedNotes);
                foreach (var item in _selectedNotesMenuItem.Children)
                {
                    NotesMenu.Insert(0, item);
                    NotesMenu_shortcuts += 1;
                }
            }

            // note: this is already reverse sorted
            foreach (var st in _selectedStrings)
            {
                // FIXME: Hack: we use '_' to signifify that it has channel+note
                var item = new MenuItemViewModel {
                    Text = st, Tag = '_' + st
                };                                                               //special tags start with '_'
                NotesMenu.Insert(0, item);
                NotesMenu_shortcuts += 1;
            }
        }