/// <summary>
            /// ボタン群を検索する。
            /// </summary>
            /// <param name="types">検索対象ボタン種別配列。</param>
            /// <returns>ボタン AutomationElement 配列。見つからなければ null 。</returns>
            private async Task <AutomationElement[]> FindButtons(params ButtonType[] types)
            {
                if (types == null)
                {
                    throw new ArgumentNullException(nameof(types));
                }

                var root        = MakeElementFromHandle(this.MainWindowHandle);
                var buttonsRoot = FindFirstChildByAutomationId(root, @"c");

                if (buttonsRoot == null)
                {
                    return(null);
                }

                var results = new AutomationElement[types.Length];

                try
                {
                    await Task.Run(
                        () =>
                    {
                        // ボタン群取得
                        var buttons =
                            buttonsRoot.FindAll(
                                TreeScope.Children,
                                new PropertyCondition(
                                    AutomationElement.ControlTypeProperty,
                                    ControlType.Button));

                        foreach (AutomationElement button in buttons)
                        {
                            // 子のテキストからボタン種別決定
                            var buttonText =
                                FindFirstChildByControlType(button, ControlType.Text);
                            if (
                                buttonText != null &&
                                NamedButtonTypes.TryGetValue(
                                    buttonText.Current.Name,
                                    out var type))
                            {
                                var index = Array.IndexOf(types, type);
                                if (index >= 0)
                                {
                                    results[index] = button;
                                }
                            }
                        }
                    });
                }
                catch
                {
                    return(null);
                }

                // すべてのボタンが揃っているか確認
                return(results.Any(b => b == null) ? null : results);
            }