protected override void ProcessRecord()
        {
            if (ParameterSetName == ParameterSetNames.ByName)
            {
                Subscription = GetProjectPrefixForSubscription(Subscription, Project);
                PerformAction(AckId.ToList(), Subscription);
            }

            if (ParameterSetName == ParameterSetNames.ByObject)
            {
                // We group the message with the subscription name as key and Ack IDs as values and send 1 request per subscription.
                IEnumerable<IGrouping<string, string>> messageGroups =
                    InputObject.GroupBy(message => message.Subscription, message => message.AckId);
                foreach (IGrouping<string, string> messageGroup in messageGroups)
                {
                    PerformAction(messageGroup.ToList(), messageGroup.Key);
                }
            }
        }
        public override int GetHashCode()
        {
            unchecked
            {
                int hashCode = Type.GetHashCode();

                hashCode = (hashCode * 397) ^ (Data != null ? Data.GetHashCode() : 0);
                hashCode = (hashCode * 397) ^ (Ack != null ? Ack.GetHashCode() : 0);
                hashCode = (hashCode * 397) ^ (AckId != null ? AckId.GetHashCode() : 0);
                hashCode = (hashCode * 397) ^ (EndPoint != null ? EndPoint.GetHashCode() : 0);
                hashCode = (hashCode * 397) ^ (Id != null ? Id.GetHashCode() : 0);
                hashCode = (hashCode * 397) ^ (Name != null ? Name.GetHashCode() : 0);
                hashCode = (hashCode * 397) ^ (Args != null ? Args.GetHashCode() : 0);
                hashCode = (hashCode * 397) ^ (Advice != null ? Advice.GetHashCode() : 0);
                hashCode = (hashCode * 397) ^ (Reason != null ? Reason.GetHashCode() : 0);
                hashCode = (hashCode * 397) ^ (QueryString != null ? QueryString.GetHashCode() : 0);

                return(hashCode);
            }
        }