/// <summary>
        /// Process Record.
        /// </summary>
        protected override void ProcessRecord()
        {
            using (var token = GetToken())
            {
                var attributes = ResourceAttribute ?? new ClaimSecurityAttribute[0];
                switch (ParameterSetName)
                {
                case "FromSddl":
                    WriteObject(NtSecurity.EvaluateConditionAce(token, Condition, attributes));
                    break;

                case "FromData":
                    WriteObject(NtSecurity.EvaluateConditionAce(token, ConditionData, attributes));
                    break;

                case "FromAce":
                    if (!Ace.IsConditionalAce)
                    {
                        throw new ArgumentException("Must specify a conditional ACE.");
                    }
                    WriteObject(NtSecurity.EvaluateConditionAce(token, Ace.ApplicationData, attributes));
                    break;
                }
            }
        }