/// <inheritdoc />
        public async Task ProcessPayload(PullRequestEventPayload payload, CancellationToken cancellationToken)
        {
            if (payload == null)
            {
                throw new ArgumentNullException(nameof(payload));
            }
            if (payload.Action != "opened")
            {
                throw new NotSupportedException();
            }

            if (await gitHubManager.UserHasWriteAccess(payload.PullRequest.User).ConfigureAwait(false))
            {
                return;
            }

            var allPrs = await gitHubManager.GetOpenPullRequests().ConfigureAwait(false);

            string result = null;

            foreach (var I in allPrs.Where(x => x.User.Id == payload.PullRequest.User.Id && x.Id != payload.PullRequest.Id).Select(x => x.Number))
            {
                result = (result != null) ? result + String.Format(CultureInfo.InvariantCulture, ", #{0}", I) : String.Format(CultureInfo.InvariantCulture, "#{0}", I);
            }

            if (result != null)
            {
                await gitHubManager.CreateComment(payload.PullRequest.Number, stringLocalizer["TooManyPRs", result]).ConfigureAwait(false);

                await gitHubManager.Close(payload.PullRequest.Number).ConfigureAwait(false);
            }
        }