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; }