internal ADGroup[] GetAuthorizationGroups(string partitionDN, string principalDN)
        {
            this.Init();
            GetADPrincipalAuthorizationGroupRequest getADPrincipalAuthorizationGroupRequest = new GetADPrincipalAuthorizationGroupRequest();

            getADPrincipalAuthorizationGroupRequest.PrincipalDN = principalDN;
            getADPrincipalAuthorizationGroupRequest.PartitionDN = partitionDN;
            GetADPrincipalAuthorizationGroupResponse aDPrincipalAuthorizationGroup = this._acctMgmt.GetADPrincipalAuthorizationGroup(this._sessionHandle, getADPrincipalAuthorizationGroupRequest);
            List <ADGroup> aDGroups = new List <ADGroup>();

            if (aDPrincipalAuthorizationGroup.MemberOf == null)
            {
                return(new ADGroup[0]);
            }
            else
            {
                ActiveDirectoryGroup[] memberOf = aDPrincipalAuthorizationGroup.MemberOf;
                for (int i = 0; i < (int)memberOf.Length; i++)
                {
                    ActiveDirectoryGroup activeDirectoryGroup = memberOf[i];
                    ADGroup aDGroup = new ADGroup();
                    this.PopulateADGroupFromWebServiceData(activeDirectoryGroup, aDGroup);
                    aDGroups.Add(aDGroup);
                }
                return(aDGroups.ToArray());
            }
        }
        GetADPrincipalAuthorizationGroupResponse Microsoft.ActiveDirectory.Management.IADAccountManagement.GetADPrincipalAuthorizationGroup(ADSessionHandle handle, GetADPrincipalAuthorizationGroupRequest request)
        {
            GetADPrincipalAuthorizationGroupResponse aDPrincipalAuthorizationGroup = null;
            ADDirectoryServiceConnection             internalHandle = this.GetInternalHandle(handle);

            if (internalHandle != null)
            {
                aDPrincipalAuthorizationGroup = internalHandle.GetADPrincipalAuthorizationGroup(request);
            }
            return(aDPrincipalAuthorizationGroup);
        }