/* --------------------------------------------------------------------- */
        ///
        /// Add
        ///
        /// <summary>
        /// PresetMenu を解析し、必要な ContextMenu オブジェクトを追加します。
        /// </summary>
        ///
        /// <param name="src">変換元オブジェクト</param>
        /// <param name="category">メニューのカテゴリ</param>
        /// <param name="cmp">変換対象となるメニュー一覧</param>
        /// <param name="dest">結果を格納するコレクション</param>
        ///
        /* --------------------------------------------------------------------- */
        private static void Add(PresetMenu src, PresetMenu category,
                                IDictionary <PresetMenu, ContextMenu> cmp, ICollection <ContextMenu> dest)
        {
            if (!src.HasFlag(category))
            {
                return;
            }

            var root = ToContextMenu(category);

            foreach (var kv in cmp)
            {
                if (src.HasFlag(kv.Key))
                {
                    root.Children.Add(kv.Value);
                }
            }
            if (root.Children.Count > 0)
            {
                dest.Add(root);
            }
        }
 /* --------------------------------------------------------------------- */
 ///
 /// Find
 ///
 /// <summary>
 /// メニューに対応する値を取得します。
 /// </summary>
 ///
 /* --------------------------------------------------------------------- */
 private static T Find <T>(PresetMenu src, IDictionary <PresetMenu, T> cmp) =>
 cmp.FirstOrDefault(e => src.HasFlag(e.Key)).Value;