public override bool Compare(Rule other)
        {
            UnconditionalRule unconditionalRule = other as UnconditionalRule;

            if (unconditionalRule != null)
            {
                return(base.Compare(other));
            }
            else
            {
                return(false);
            }
        }
		private void HandleRuleBody__Conditions_IMPLY_RuleAction_SEMICOLON()
		{
			Microsoft.ActiveDirectory.TRLParser.LanguageParser.Rule unconditionalRule;
			if (this._policyObjects.Count != 0)
			{
				object obj = this._policyObjects.Peek();
				if (obj.GetType() == typeof(RuleOutput))
				{
					RuleOutput ruleOutput = (RuleOutput)obj;
					this._policyObjects.Pop();
					IssuanceStatement issuanceStatement = this._policyObjects.Peek() as IssuanceStatement;
					if (issuanceStatement != null)
					{
						this._policyObjects.Pop();
						obj = this._policyObjects.Peek();
						if (obj.GetType() == typeof(ConditionType))
						{
							ConditionType conditionType = (ConditionType)obj;
							this._policyObjects.Pop();
							ConditionType conditionType1 = conditionType;
							if (conditionType1 == ConditionType.Unconditional)
							{
								unconditionalRule = new UnconditionalRule(issuanceStatement);
							}
							else if (conditionType1 == ConditionType.Selection)
							{
								unconditionalRule = new SelectionRule(issuanceStatement);
								Collection<SelectionCondition> selectionConditions = this._policyObjects.Peek() as Collection<SelectionCondition>;
								foreach (SelectionCondition selectionCondition in selectionConditions)
								{
									((SelectionRule)unconditionalRule).Conditions.Add(selectionCondition);
								}
								this._policyObjects.Pop();
							}
							else
							{
								object[] objArray = new object[1];
								objArray[0] = (object)conditionType;
								throw new InvalidOperationException(SR.GetString("POLICY0034", objArray));
							}
							unconditionalRule.Output = ruleOutput;
							this._policyObjects.Push(unconditionalRule);
							return;
						}
						else
						{
							object[] objArray1 = new object[1];
							objArray1[0] = "ConditionType";
							throw new InvalidOperationException(SR.GetString("POLICY0037", objArray1));
						}
					}
					else
					{
						object[] objArray2 = new object[1];
						objArray2[0] = "IssuanceStatement";
						throw new InvalidOperationException(SR.GetString("POLICY0037", objArray2));
					}
				}
				else
				{
					object[] objArray3 = new object[1];
					objArray3[0] = "RuleOutput";
					throw new InvalidOperationException(SR.GetString("POLICY0037", objArray3));
				}
			}
			else
			{
				throw new InvalidOperationException(SR.GetString("POLICY0038", new object[0]));
			}
		}