private IPolicy FilterPolicy(IPolicy policy)
        {
            if (null == policy)
                return null;

            IPolicyObjectCollection<IPolicyObject> conditions = FilterConditions(ConditionLogic.OR, policy.Conditions);
            if (0 == conditions.Count)
                return null;

            P5Policy reducedPolicy = new P5Policy(m_reducedPolicySet, Guid.NewGuid(), policy.Name, policy.Status);

            Dictionary<string, IPolicyLanguageItem>.Enumerator enumerator = policy.GetAttributeEnumerator();
            while (enumerator.MoveNext())
            {
                reducedPolicy[enumerator.Current.Key] = enumerator.Current.Value;
            }

            reducedPolicy.Conditions = conditions;
            reducedPolicy.Channels = policy.Channels;
            return reducedPolicy;
        }