public IConditionResult GetConditions(ISecurityItem securityItem)
 {
     ConditionResult conditionResult = (ConditionResult) OnlySelfGetConditions(securityItem);
     foreach (ISecurityIdentity parent in _securityIdentity.Parents)
     {
         ISecurityIdentityAuthorizer securityIdentityAuthorizer = _securityIdentityAuthorizerFactory.CreateCache(parent);
         IConditionResult parentConditions = securityIdentityAuthorizer.GetConditions(securityItem);
         MergeConditionResult(conditionResult,parentConditions);
     }
     return conditionResult;
 }
 private void MergeConditionResult(ConditionResult conditionResult, IConditionResult mergeFromConditionResult)
 {
     foreach (var pair in mergeFromConditionResult.Conditions) 
         ((Dictionary<IConditionalAuthorization, IEnumerable<IAccessCondition>>)conditionResult.Conditions).Add(pair.Key,pair.Value);
 }