// Token: 0x06001AD7 RID: 6871 RVA: 0x00070978 File Offset: 0x0006EB78
 private bool TryIsSenderMemberOfWithLimit(IEnumerable <ADObjectId> groupIdList, out bool isSenderMemberOf)
 {
     isSenderMemberOf = false;
     if (groupIdList == null)
     {
         return(true);
     }
     if (this.CheckMemberOfGroupInformationInCache(groupIdList))
     {
         ADRecipientRestriction.tracer.TraceDebug <ADObjectId>((long)this.GetHashCode(), "Found the IsMemberOf info in cache: {0}", this.senderId);
         isSenderMemberOf = true;
         return(true);
     }
     foreach (ADObjectId adobjectId in groupIdList)
     {
         bool flag;
         if (this.memberOfGroupsCache != null && this.memberOfGroupsCache.TryGetValue(adobjectId, out flag))
         {
             ADRecipientRestriction.tracer.TraceDebug <ADObjectId, bool>((long)this.GetHashCode(), "Found the MemberOfGroup info in Cache: {0} : {1}", this.senderId, flag);
             ExAssert.RetailAssert(!flag, "We should have checked the cache before going to AD.");
         }
         else
         {
             if (!ADRecipient.TryIsMemberOfWithLimit(this.senderId, adobjectId, false, this.Session, ref this.adQueryLimit, out flag))
             {
                 if (this.isFirstGroupSearch)
                 {
                     this.AddMemberOfGroup(adobjectId, false);
                 }
                 this.isFirstGroupSearch = false;
                 return(false);
             }
             this.isFirstGroupSearch = false;
             this.AddMemberOfGroup(adobjectId, flag);
             if (flag)
             {
                 ADRecipientRestriction.tracer.TraceDebug <ADObjectId, ADObjectId>((long)this.GetHashCode(), "Sender {0} is a member of group {1}", this.senderId, adobjectId);
                 isSenderMemberOf = true;
                 return(true);
             }
         }
     }
     return(true);
 }