A class indicates the GetSpecialTable request type.
Inheritance: AddressBookRequestBodyBase
        /// <summary>
        /// This method is used by the client to get a special table, which can be either an address book hierarchy table or an address creation table.
        /// </summary>
        /// <param name="getSpecialTableRequestBody">The GetSpecialTable request type request body.</param>
        /// <returns>The response body of the GetSpecialTable request type.</returns>
        public GetSpecialTableResponseBody GetSpecialTable(GetSpecialTableRequestBody getSpecialTableRequestBody)
        {
            CommonResponse commonResponse = this.SendAddressBookRequest(getSpecialTableRequestBody, RequestType.GetSpecialTable);
            GetSpecialTableResponseBody getSpecialTableResponseBody = GetSpecialTableResponseBody.Parse(commonResponse.ResponseBodyRawData);

            this.VerifyGetSpecialTableResponseBody(getSpecialTableResponseBody);

            return(getSpecialTableResponseBody);
        }
        /// <summary>
        /// Build the GetSpecialTable request body.
        /// </summary>
        /// <param name="flags">A set of bit flags that specify options to the server.</param>
        /// <param name="hasState">A Boolean value that specifies whether the State field is present.</param>
        /// <param name="state">A STAT structure that specifies the state of a specific address book container.</param>
        /// <param name="hasVersion">A Boolean value that specifies whether the Version field is present.</param>
        /// <param name="version">A unsigned integer that specifies the version number of the address book hierarchy table that the client has.</param>
        /// <returns>The GetSpecialTable request body.</returns>
        private GetSpecialTableRequestBody BuildGetSpecialTableRequestBody(uint flags, bool hasState, STAT state, bool hasVersion, uint version)
        {
            byte[] auxIn = new byte[] { };
            GetSpecialTableRequestBody getSpecialTableRequestBody = new GetSpecialTableRequestBody()
            {
                Flags = flags,
                HasState = hasState,
                HasVersion = hasVersion,
                AuxiliaryBuffer = auxIn,
                AuxiliaryBufferSize = (uint)auxIn.Length
            };

            if (hasState)
            {
                getSpecialTableRequestBody.State = state;
            }

            if (hasVersion)
            {
                getSpecialTableRequestBody.Version = version;
            }

            return getSpecialTableRequestBody;
        }
        /// <summary>
        /// This method is used by the client to get a special table, which can be either an address book hierarchy table or an address creation table.
        /// </summary>
        /// <param name="getSpecialTableRequestBody">The GetSpecialTable request type request body.</param>
        /// <returns>The response body of the GetSpecialTable request type.</returns>
        public GetSpecialTableResponseBody GetSpecialTable(GetSpecialTableRequestBody getSpecialTableRequestBody)
        {
            CommonResponse commonResponse = this.SendAddressBookRequest(getSpecialTableRequestBody, RequestType.GetSpecialTable);
            GetSpecialTableResponseBody getSpecialTableResponseBody = GetSpecialTableResponseBody.Parse(commonResponse.ResponseBodyRawData);
            this.VerifyGetSpecialTableResponseBody(getSpecialTableResponseBody);

            return getSpecialTableResponseBody;
        }