DefaultAutodiscoverRedirectionUrlValidationCallback method

bool DefaultAutodiscoverRedirectionUrlValidationCallback(
  1. String redirectionUrl
)
Gets Out of Office (OOF) settings for a specific user. Calling this method results in a call to EWS. The SMTP address of the user for which to retrieve OOF settings. Sets the Out of Office (OOF) settings for a specific mailbox. Calling this method results in a call to EWS. The SMTP address of the user for which to set OOF settings. The OOF settings. Gets detailed information about the availability of a set of users, rooms, and resources within a specified time window. The attendees for which to retrieve availability information. The time window in which to retrieve user availability information. The requested data (free/busy and/or suggestions). The options controlling the information returned. Gets detailed information about the availability of a set of users, rooms, and resources within a specified time window. The attendees for which to retrieve availability information. The time window in which to retrieve user availability information. The requested data (free/busy and/or suggestions). Retrieves a collection of all room lists in the organization. Retrieves a collection of all rooms in the specified room list in the organization. The e-mail address of the room list. Retrieves a collection of all Conversations in the specified Folder. The view controlling the number of conversations returned. The Id of the folder in which to search for conversations. Retrieves a collection of all Conversations in the specified Folder. The view controlling the number of conversations returned. The Id of the folder in which to search for conversations. The anchorMailbox Smtp address to route the request directly to group mailbox. Retrieves a collection of all Conversations in the specified Folder. The view controlling the number of conversations returned. The Id of the folder in which to search for conversations. The query string for which the search is being performed Searches for and retrieves a collection of Conversations in the specified Folder. Along with conversations, a list of highlight terms are returned. The view controlling the number of conversations returned. The Id of the folder in which to search for conversations. The query string for which the search is being performed Flag indicating if highlight terms should be returned in the response Searches for and retrieves a collection of Conversations in the specified Folder. Along with conversations, a list of highlight terms are returned. The view controlling the number of conversations returned. The Id of the folder in which to search for conversations. The query string for which the search is being performed Flag indicating if highlight terms should be returned in the response The mailbox scope to reference. Gets the items for a set of conversations. Conversations with items to load. The set of properties to load. The folders to ignore. Sort order of conversation tree nodes. The mailbox scope to reference. The smtpaddress of the mailbox that hosts the conversations Maximum number of items to return. What type of error handling should be performed. Gets the items for a set of conversations. Conversations with items to load. The set of properties to load. The folders to ignore. Conversation item sort order. Gets the items for a conversation. The conversation id. The set of properties to load. The optional sync state representing the point in time when to start the synchronization. The folders to ignore. Conversation item sort order. Gets the items for a conversation. The conversation id. The set of properties to load. The optional sync state representing the point in time when to start the synchronization. The folders to ignore. Conversation item sort order. The smtp address of the mailbox hosting the conversations Gets the items for a set of conversations. Conversations with items to load. The set of properties to load. The folders to ignore. Conversation item sort order. The mailbox scope to reference. Applies ConversationAction on the specified conversation. ConversationAction The conversation ids. True to process at once . This is blocking and false to let the Assistant process it in the back ground Catgories that need to be stamped can be null or empty True moves every current and future messages in the conversation to deleted items folder. False stops the alwasy delete action. This is applicable only if the action is AlwaysDelete Applicable if the action is AlwaysMove. This moves every current message and future message in the conversation to the specified folder. Can be null if tis is then it stops the always move action The error handling mode. Applies one time conversation action on items in specified folder inside the conversation. The action. The id time pairs. The context folder id. The destination folder id. Type of the delete. The is read. Retention policy type. Retention policy tag id. Null will clear the policy. Flag status. Suppress read receipts flag. The error handling mode. Sets up a conversation so that any item received within that conversation is always categorized. Calling this method results in a call to EWS. The id of the conversation. The categories that should be stamped on items in the conversation. Indicates whether the method should return only once enabling this rule and stamping existing items in the conversation is completely done. If processSynchronously is false, the method returns immediately. Sets up a conversation so that any item received within that conversation is no longer categorized. Calling this method results in a call to EWS. The id of the conversation. Indicates whether the method should return only once disabling this rule and removing the categories from existing items in the conversation is completely done. If processSynchronously is false, the method returns immediately. Sets up a conversation so that any item received within that conversation is always moved to Deleted Items folder. Calling this method results in a call to EWS. The id of the conversation. Indicates whether the method should return only once enabling this rule and deleting existing items in the conversation is completely done. If processSynchronously is false, the method returns immediately. Sets up a conversation so that any item received within that conversation is no longer moved to Deleted Items folder. Calling this method results in a call to EWS. The id of the conversation. Indicates whether the method should return only once disabling this rule and restoring the items in the conversation is completely done. If processSynchronously is false, the method returns immediately. Sets up a conversation so that any item received within that conversation is always moved to a specific folder. Calling this method results in a call to EWS. The id of the conversation. The Id of the folder to which conversation items should be moved. Indicates whether the method should return only once enabling this rule and moving existing items in the conversation is completely done. If processSynchronously is false, the method returns immediately. Sets up a conversation so that any item received within that conversation is no longer moved to a specific folder. Calling this method results in a call to EWS. The conversation ids. Indicates whether the method should return only once disabling this rule is completely done. If processSynchronously is false, the method returns immediately. Moves the items in the specified conversation to the specified destination folder. Calling this method results in a call to EWS. The pairs of Id of conversation whose items should be moved and the dateTime conversation was last synced (Items received after that dateTime will not be moved). The Id of the folder that contains the conversation. The Id of the destination folder. Copies the items in the specified conversation to the specified destination folder. Calling this method results in a call to EWS. The pairs of Id of conversation whose items should be copied and the date and time conversation was last synced (Items received after that date will not be copied). The context folder id. The destination folder id. Deletes the items in the specified conversation. Calling this method results in a call to EWS. The pairs of Id of conversation whose items should be deleted and the date and time conversation was last synced (Items received after that date will not be deleted). The Id of the folder that contains the conversation. The deletion mode. Sets the read state for items in conversation. Calling this method would result in call to EWS. The pairs of Id of conversation whose items should have their read state set and the date and time conversation was last synced (Items received after that date will not have their read state set). The Id of the folder that contains the conversation. if set to , conversation items are marked as read; otherwise they are marked as unread. Sets the read state for items in conversation. Calling this method would result in call to EWS. The pairs of Id of conversation whose items should have their read state set and the date and time conversation was last synced (Items received after that date will not have their read state set). The Id of the folder that contains the conversation. if set to , conversation items are marked as read; otherwise they are marked as unread. if set to read receipts are suppressed. Sets the retention policy for items in conversation. Calling this method would result in call to EWS. The pairs of Id of conversation whose items should have their retention policy set and the date and time conversation was last synced (Items received after that date will not have their retention policy set). The Id of the folder that contains the conversation. Retention policy type. Retention policy tag id. Null will clear the policy. Sets flag status for items in conversation. Calling this method would result in call to EWS. The pairs of Id of conversation whose items should have their read state set and the date and time conversation was last synced (Items received after that date will not have their read state set). The Id of the folder that contains the conversation. Flag status to apply to conversation items. Converts multiple Ids from one format to another in a single call to EWS. The Ids to convert. The destination format. Type of error handling to perform. Converts multiple Ids from one format to another in a single call to EWS. The Ids to convert. The destination format. Converts Id from one format to another in a single call to EWS. The Id to convert. The destination format. Adds delegates to a specific mailbox. Calling this method results in a call to EWS. The mailbox to add delegates to. Indicates how meeting requests should be sent to delegates. The delegate users to add. Adds delegates to a specific mailbox. Calling this method results in a call to EWS. The mailbox to add delegates to. Indicates how meeting requests should be sent to delegates. The delegate users to add. Updates delegates on a specific mailbox. Calling this method results in a call to EWS. The mailbox to update delegates on. Indicates how meeting requests should be sent to delegates. The delegate users to update. Updates delegates on a specific mailbox. Calling this method results in a call to EWS. The mailbox to update delegates on. Indicates how meeting requests should be sent to delegates. The delegate users to update. Removes delegates on a specific mailbox. Calling this method results in a call to EWS. The mailbox to remove delegates from. The Ids of the delegate users to remove. Removes delegates on a specific mailbox. Calling this method results in a call to EWS. The mailbox to remove delegates from. The Ids of the delegate users to remove. Retrieves the delegates of a specific mailbox. Calling this method results in a call to EWS. The mailbox to retrieve the delegates of. Indicates whether detailed permissions should be returned fro each delegate. The optional Ids of the delegate users to retrieve. Retrieves the delegates of a specific mailbox. Calling this method results in a call to EWS. The mailbox to retrieve the delegates of. Indicates whether detailed permissions should be returned fro each delegate. The optional Ids of the delegate users to retrieve. Creates a UserConfiguration. The UserConfiguration. Deletes a UserConfiguration. Name of the UserConfiguration to retrieve. Id of the folder containing the UserConfiguration. Gets a UserConfiguration. Name of the UserConfiguration to retrieve. Id of the folder containing the UserConfiguration. Properties to retrieve. Loads the properties of the specified userConfiguration. The userConfiguration containing properties to load. Properties to retrieve. Updates a UserConfiguration. The UserConfiguration. Retrieves inbox rules of the authenticated user. Retrieves the inbox rules of the specified user. The SMTP address of the user whose inbox rules should be retrieved. Updates the authenticated user's inbox rules by applying the specified operations. The operations that should be applied to the user's inbox rules. Indicate whether or not to remove Outlook Rule Blob. Update the specified user's inbox rules by applying the specified operations. The operations that should be applied to the user's inbox rules. Indicate whether or not to remove Outlook Rule Blob. The SMTP address of the user whose inbox rules should be updated. Get dicovery search configuration Search Id True if want to expand group membership True if only want the inplacehold configuration Get searchable mailboxes Search filter True if want to expand group membership Search mailboxes Collection of query and mailboxes Search result type Search mailboxes Collection of query and mailboxes Search result type Sort by property name Sort order Page size Page navigation direction Item reference used for paging Search mailboxes Search mailboxes parameters Asynchronous call to search mailboxes callback state search parameters Asynchronous call to end search mailboxes Set hold on mailboxes Hold id Action type Query string Collection of mailboxes Set hold on mailboxes Hold id Action type Query string in-place hold identity Set hold on mailboxes Hold id Action type Query string in-place hold identity item hold period Set hold on mailboxes Set hold parameters Get hold on mailboxes Hold id Get non indexable item details Array of mailbox legacy DN Get non indexable item details Array of mailbox legacy DN The page size Page item reference Page direction Get non indexable item details Get non indexable item details parameters Asynchronous call to get non indexable item details callback state Get non indexable item details parameters Asynchronous call to get non indexable item details Get non indexable item statistics Array of mailbox legacy DN Get non indexable item statistics Get non indexable item statistics parameters Asynchronous call to get non indexable item statistics callback state Get non indexable item statistics parameters Asynchronous call to get non indexable item statistics Create get non indexable item details request Get non indexable item details parameters Create get non indexable item statistics request Get non indexable item statistics parameters Creates SearchMailboxesRequest from SearchMailboxesParameters search parameters Get user retention policy tags. Default implementation of AutodiscoverRedirectionUrlValidationCallback. Always returns true indicating that the URL can be used. The redirection URL.

Implementation

//OofSettings GetUserOofSettings(string smtpAddress)
//        {
//            EwsUtilities.ValidateParam(smtpAddress, "smtpAddress");
//
//            GetUserOofSettingsRequest request = new GetUserOofSettingsRequest(this);
//
//            request.SmtpAddress = smtpAddress;
//
//            return request.Execute().OofSettings;
//        }

/// <summary>
/// Sets the Out of Office (OOF) settings for a specific mailbox. Calling this method results in a call to EWS.
/// </summary>
/// <param name="smtpAddress">The SMTP address of the user for which to set OOF settings.</param>
/// <param name="oofSettings">The OOF settings.</param>
//void SetUserOofSettings(string smtpAddress, OofSettings oofSettings)
//        {
//            EwsUtilities.ValidateParam(smtpAddress, "smtpAddress");
//            EwsUtilities.ValidateParam(oofSettings, "oofSettings");
//
//            SetUserOofSettingsRequest request = new SetUserOofSettingsRequest(this);
//
//            request.SmtpAddress = smtpAddress;
//            request.OofSettings = oofSettings;
//
//            request.Execute();
//        }

/// <summary>
/// Gets detailed information about the availability of a set of users, rooms, and resources within a
/// specified time window.
/// </summary>
/// <param name="attendees">The attendees for which to retrieve availability information.</param>
/// <param name="timeWindow">The time window in which to retrieve user availability information.</param>
/// <param name="requestedData">The requested data (free/busy and/or suggestions).</param>
/// <param name="options">The options controlling the information returned.</param>
/// <returns>
/// The availability information for each user appears in a unique FreeBusyResponse object. The order of users
/// in the request determines the order of availability data for each user in the response.
/// </returns>
//GetUserAvailabilityResults GetUserAvailability(
//            Iterable<AttendeeInfo> attendees,
//            TimeWindow timeWindow,
//            AvailabilityData requestedData,
//            AvailabilityOptions options)
//        {
//            EwsUtilities.ValidateParamCollection(attendees, "attendees");
//            EwsUtilities.ValidateParam(timeWindow, "timeWindow");
//            EwsUtilities.ValidateParam(options, "options");
//
//            GetUserAvailabilityRequest request = new GetUserAvailabilityRequest(this);
//
//            request.Attendees = attendees;
//            request.TimeWindow = timeWindow;
//            request.RequestedData = requestedData;
//            request.Options = options;
//
//            return request.Execute();
//        }

/// <summary>
/// Gets detailed information about the availability of a set of users, rooms, and resources within a
/// specified time window.
/// </summary>
/// <param name="attendees">The attendees for which to retrieve availability information.</param>
/// <param name="timeWindow">The time window in which to retrieve user availability information.</param>
/// <param name="requestedData">The requested data (free/busy and/or suggestions).</param>
/// <returns>
/// The availability information for each user appears in a unique FreeBusyResponse object. The order of users
/// in the request determines the order of availability data for each user in the response.
/// </returns>
//GetUserAvailabilityResults GetUserAvailability(
//            Iterable<AttendeeInfo> attendees,
//            TimeWindow timeWindow,
//            AvailabilityData requestedData)
//        {
//            return this.GetUserAvailability(
//                attendees,
//                timeWindow,
//                requestedData,
//                new AvailabilityOptions());
//        }

/// <summary>
/// Retrieves a collection of all room lists in the organization.
/// </summary>
/// <returns>An EmailAddressCollection containing all the room lists in the organization.</returns>
//EmailAddressCollection GetRoomLists()
//        {
//            GetRoomListsRequest request = new GetRoomListsRequest(this);
//
//            return request.Execute().RoomLists;
//        }

/// <summary>
/// Retrieves a collection of all rooms in the specified room list in the organization.
/// </summary>
/// <param name="emailAddress">The e-mail address of the room list.</param>
/// <returns>A collection of EmailAddress objects representing all the rooms within the specifed room list.</returns>
//Collection<EmailAddress> GetRooms(EmailAddress emailAddress)
//        {
//            EwsUtilities.ValidateParam(emailAddress, "emailAddress");
//
//            GetRoomsRequest request = new GetRoomsRequest(this);
//
//            request.RoomList = emailAddress;
//
//            return request.Execute().Rooms;
//        }

/// <summary>
/// Retrieves a collection of all Conversations in the specified Folder.
/// </summary>
/// <param name="view">The view controlling the number of conversations returned.</param>
/// <param name="folderId">The Id of the folder in which to search for conversations.</param>
/// <returns>Collection of conversations.</returns>
//ICollection<Conversation> FindConversation(ViewBase view, FolderId folderId)
//        {
//            EwsUtilities.ValidateParam(view, "view");
//            EwsUtilities.ValidateParam(folderId, "folderId");
//            EwsUtilities.ValidateMethodVersion(
//                                            this,
//                                            ExchangeVersion.Exchange2010_SP1,
//                                            "FindConversation");
//
//            FindConversationRequest request = new FindConversationRequest(this);
//
//            request.View = view;
//            request.FolderId = new FolderIdWrapper(folderId);
//
//            return request.Execute().Conversations;
//        }

/// <summary>
/// Retrieves a collection of all Conversations in the specified Folder.
/// </summary>
/// <param name="view">The view controlling the number of conversations returned.</param>
/// <param name="folderId">The Id of the folder in which to search for conversations.</param>
/// <param name="anchorMailbox">The anchorMailbox Smtp address to route the request directly to group mailbox.</param>
/// <returns>Collection of conversations.</returns>
/// <remarks>
/// This API designed to be used primarily in groups scenarios where we want to set the
/// anchor mailbox header so that request is routed directly to the group mailbox backend server.
/// </remarks>
//Collection<Conversation> FindGroupConversation(
//            ViewBase view,
//            FolderId folderId,
//            string anchorMailbox)
//        {
//            EwsUtilities.ValidateParam(view, "view");
//            EwsUtilities.ValidateParam(folderId, "folderId");
//            EwsUtilities.ValidateParam(anchorMailbox, "anchorMailbox");
//            EwsUtilities.ValidateMethodVersion(
//                                            this,
//                                            ExchangeVersion.Exchange2015,
//                                            "FindConversation");
//
//            FindConversationRequest request = new FindConversationRequest(this);
//
//            request.View = view;
//            request.FolderId = new FolderIdWrapper(folderId);
//            request.AnchorMailbox = anchorMailbox;
//
//            return request.Execute().Conversations;
//        }

/// <summary>
/// Retrieves a collection of all Conversations in the specified Folder.
/// </summary>
/// <param name="view">The view controlling the number of conversations returned.</param>
/// <param name="folderId">The Id of the folder in which to search for conversations.</param>
/// <param name="queryString">The query string for which the search is being performed</param>
/// <returns>Collection of conversations.</returns>
//ICollection<Conversation> FindConversation(ViewBase view, FolderId folderId, string queryString)
//        {
//            EwsUtilities.ValidateParam(view, "view");
//            EwsUtilities.ValidateParamAllowNull(queryString, "queryString");
//            EwsUtilities.ValidateParam(folderId, "folderId");
//            EwsUtilities.ValidateMethodVersion(
//                                            this,
//                                            ExchangeVersion.Exchange2013, // This method is only applicable for Exchange2013
//                                            "FindConversation");
//
//            FindConversationRequest request = new FindConversationRequest(this);
//
//            request.View = view;
//            request.FolderId = new FolderIdWrapper(folderId);
//            request.QueryString = queryString;
//
//            return request.Execute().Conversations;
//        }

/// <summary>
/// Searches for and retrieves a collection of Conversations in the specified Folder.
/// Along with conversations, a list of highlight terms are returned.
/// </summary>
/// <param name="view">The view controlling the number of conversations returned.</param>
/// <param name="folderId">The Id of the folder in which to search for conversations.</param>
/// <param name="queryString">The query string for which the search is being performed</param>
/// <param name="returnHighlightTerms">Flag indicating if highlight terms should be returned in the response</param>
/// <returns>FindConversation results.</returns>
//FindConversationResults FindConversation(ViewBase view, FolderId folderId, string queryString, bool returnHighlightTerms)
//        {
//            EwsUtilities.ValidateParam(view, "view");
//            EwsUtilities.ValidateParamAllowNull(queryString, "queryString");
//            EwsUtilities.ValidateParam(returnHighlightTerms, "returnHighlightTerms");
//            EwsUtilities.ValidateParam(folderId, "folderId");
//            EwsUtilities.ValidateMethodVersion(
//                                            this,
//                                            ExchangeVersion.Exchange2013, // This method is only applicable for Exchange2013
//                                            "FindConversation");
//
//            FindConversationRequest request = new FindConversationRequest(this);
//
//            request.View = view;
//            request.FolderId = new FolderIdWrapper(folderId);
//            request.QueryString = queryString;
//            request.ReturnHighlightTerms = returnHighlightTerms;
//
//            return request.Execute().Results;
//        }

/// <summary>
/// Searches for and retrieves a collection of Conversations in the specified Folder.
/// Along with conversations, a list of highlight terms are returned.
/// </summary>
/// <param name="view">The view controlling the number of conversations returned.</param>
/// <param name="folderId">The Id of the folder in which to search for conversations.</param>
/// <param name="queryString">The query string for which the search is being performed</param>
/// <param name="returnHighlightTerms">Flag indicating if highlight terms should be returned in the response</param>
/// <param name="mailboxScope">The mailbox scope to reference.</param>
/// <returns>FindConversation results.</returns>
//FindConversationResults FindConversation(ViewBase view, FolderId folderId, string queryString, bool returnHighlightTerms, MailboxSearchLocation? mailboxScope)
//        {
//            EwsUtilities.ValidateParam(view, "view");
//            EwsUtilities.ValidateParamAllowNull(queryString, "queryString");
//            EwsUtilities.ValidateParam(returnHighlightTerms, "returnHighlightTerms");
//            EwsUtilities.ValidateParam(folderId, "folderId");
//
//            EwsUtilities.ValidateMethodVersion(
//                                            this,
//                                            ExchangeVersion.Exchange2013, // This method is only applicable for Exchange2013
//                                            "FindConversation");
//
//            FindConversationRequest request = new FindConversationRequest(this);
//
//            request.View = view;
//            request.FolderId = new FolderIdWrapper(folderId);
//            request.QueryString = queryString;
//            request.ReturnHighlightTerms = returnHighlightTerms;
//            request.MailboxScope = mailboxScope;
//
//            return request.Execute().Results;
//        }

/// <summary>
/// Gets the items for a set of conversations.
/// </summary>
/// <param name="conversations">Conversations with items to load.</param>
/// <param name="propertySet">The set of properties to load.</param>
/// <param name="foldersToIgnore">The folders to ignore.</param>
/// <param name="sortOrder">Sort order of conversation tree nodes.</param>
/// <param name="mailboxScope">The mailbox scope to reference.</param>
/// <param name="anchorMailbox">The smtpaddress of the mailbox that hosts the conversations</param>
/// <param name="maxItemsToReturn">Maximum number of items to return.</param>
/// <param name="errorHandling">What type of error handling should be performed.</param>
/// <returns>GetConversationItems response.</returns>
//        ServiceResponseCollection<GetConversationItemsResponse> InternalGetConversationItems(
//                            Iterable<ConversationRequest> conversations,
//                            PropertySet propertySet,
//                            Iterable<FolderId> foldersToIgnore,
//                            ConversationSortOrder? sortOrder,
//                            MailboxSearchLocation? mailboxScope,
//                            int? maxItemsToReturn,
//                            string anchorMailbox,
//                            ServiceErrorHandling errorHandling)
//        {
//            EwsUtilities.ValidateParam(conversations, "conversations");
//            EwsUtilities.ValidateParam(propertySet, "itemProperties");
//            EwsUtilities.ValidateParamAllowNull(foldersToIgnore, "foldersToIgnore");
//            EwsUtilities.ValidateMethodVersion(
//                                            this,
//                                            ExchangeVersion.Exchange2013,
//                                            "GetConversationItems");
//
//            GetConversationItemsRequest request = new GetConversationItemsRequest(this, errorHandling);
//            request.ItemProperties = propertySet;
//            request.FoldersToIgnore = new FolderIdCollection(foldersToIgnore);
//            request.SortOrder = sortOrder;
//            request.MailboxScope = mailboxScope;
//            request.MaxItemsToReturn = maxItemsToReturn;
//            request.AnchorMailbox = anchorMailbox;
//            request.Conversations = conversations.ToList();
//
//            return request.Execute();
//        }

/// <summary>
/// Gets the items for a set of conversations.
/// </summary>
/// <param name="conversations">Conversations with items to load.</param>
/// <param name="propertySet">The set of properties to load.</param>
/// <param name="foldersToIgnore">The folders to ignore.</param>
/// <param name="sortOrder">Conversation item sort order.</param>
/// <returns>GetConversationItems response.</returns>
//ServiceResponseCollection<GetConversationItemsResponse> GetConversationItems(
//                                                Iterable<ConversationRequest> conversations,
//                                                PropertySet propertySet,
//                                                Iterable<FolderId> foldersToIgnore,
//                                                ConversationSortOrder? sortOrder)
//        {
//            return this.InternalGetConversationItems(
//                                conversations,
//                                propertySet,
//                                foldersToIgnore,
//                                null,               /* sortOrder */
//                                null,               /* mailboxScope */
//                                null,               /* maxItemsToReturn*/
//                                null, /* anchorMailbox */
//                                ServiceErrorHandling.ReturnErrors);
//        }

/// <summary>
/// Gets the items for a conversation.
/// </summary>
/// <param name="conversationId">The conversation id.</param>
/// <param name="propertySet">The set of properties to load.</param>
/// <param name="syncState">The optional sync state representing the point in time when to start the synchronization.</param>
/// <param name="foldersToIgnore">The folders to ignore.</param>
/// <param name="sortOrder">Conversation item sort order.</param>
/// <returns>ConversationResponseType response.</returns>
//ConversationResponse GetConversationItems(
//                                                ConversationId conversationId,
//                                                PropertySet propertySet,
//                                                string syncState,
//                                                Iterable<FolderId> foldersToIgnore,
//                                                ConversationSortOrder? sortOrder)
//        {
//            List<ConversationRequest> conversations = <ConversationRequest> [];
//            conversations.Add(new ConversationRequest(conversationId, syncState));
//
//            return this.InternalGetConversationItems(
//                                conversations,
//                                propertySet,
//                                foldersToIgnore,
//                                sortOrder,
//                                null,           /* mailboxScope */
//                                null,           /* maxItemsToReturn */
//                                null, /* anchorMailbox */
//                                ServiceErrorHandling.ThrowOnError)[0].Conversation;
//        }

/// <summary>
/// Gets the items for a conversation.
/// </summary>
/// <param name="conversationId">The conversation id.</param>
/// <param name="propertySet">The set of properties to load.</param>
/// <param name="syncState">The optional sync state representing the point in time when to start the synchronization.</param>
/// <param name="foldersToIgnore">The folders to ignore.</param>
/// <param name="sortOrder">Conversation item sort order.</param>
/// <param name="anchorMailbox">The smtp address of the mailbox hosting the conversations</param>
/// <returns>ConversationResponseType response.</returns>
/// <remarks>
/// This API designed to be used primarily in groups scenarios where we want to set the
/// anchor mailbox header so that request is routed directly to the group mailbox backend server.
/// </remarks>
//ConversationResponse GetGroupConversationItems(
//                                                ConversationId conversationId,
//                                                PropertySet propertySet,
//                                                string syncState,
//                                                Iterable<FolderId> foldersToIgnore,
//                                                ConversationSortOrder? sortOrder,
//                                                string anchorMailbox)
//        {
//            EwsUtilities.ValidateParam(anchorMailbox, "anchorMailbox");
//
//            List<ConversationRequest> conversations = <ConversationRequest> [];
//            conversations.Add(new ConversationRequest(conversationId, syncState));
//
//            return this.InternalGetConversationItems(
//                                conversations,
//                                propertySet,
//                                foldersToIgnore,
//                                sortOrder,
//                                null,           /* mailboxScope */
//                                null,           /* maxItemsToReturn */
//                                anchorMailbox, /* anchorMailbox */
//                                ServiceErrorHandling.ThrowOnError)[0].Conversation;
//        }

/// <summary>
/// Gets the items for a set of conversations.
/// </summary>
/// <param name="conversations">Conversations with items to load.</param>
/// <param name="propertySet">The set of properties to load.</param>
/// <param name="foldersToIgnore">The folders to ignore.</param>
/// <param name="sortOrder">Conversation item sort order.</param>
/// <param name="mailboxScope">The mailbox scope to reference.</param>
/// <returns>GetConversationItems response.</returns>
//ServiceResponseCollection<GetConversationItemsResponse> GetConversationItems(
//                                                Iterable<ConversationRequest> conversations,
//                                                PropertySet propertySet,
//                                                Iterable<FolderId> foldersToIgnore,
//                                                ConversationSortOrder? sortOrder,
//                                                MailboxSearchLocation? mailboxScope)
//        {
//            return this.InternalGetConversationItems(
//                                conversations,
//                                propertySet,
//                                foldersToIgnore,
//                                null,               /* sortOrder */
//                                mailboxScope,
//                                null,               /* maxItemsToReturn*/
//                                null, /* anchorMailbox */
//                                ServiceErrorHandling.ReturnErrors);
//        }

/// <summary>
/// Applies ConversationAction on the specified conversation.
/// </summary>
/// <param name="actionType">ConversationAction</param>
/// <param name="conversationIds">The conversation ids.</param>
/// <param name="processRightAway">True to process at once . This is blocking
/// and false to let the Assistant process it in the back ground</param>
/// <param name="categories">Catgories that need to be stamped can be null or empty</param>
/// <param name="enableAlwaysDelete">True moves every current and future messages in the conversation
/// to deleted items folder. False stops the alwasy delete action. This is applicable only if
/// the action is AlwaysDelete</param>
/// <param name="destinationFolderId">Applicable if the action is AlwaysMove. This moves every current message and future
/// message in the conversation to the specified folder. Can be null if tis is then it stops
/// the always move action</param>
/// <param name="errorHandlingMode">The error handling mode.</param>
/// <returns></returns>
//ServiceResponseCollection<ServiceResponse> ApplyConversationAction(
//                ConversationActionType actionType,
//                Iterable<ConversationId> conversationIds,
//                bool processRightAway,
//                StringList categories,
//                bool enableAlwaysDelete,
//                FolderId destinationFolderId,
//                ServiceErrorHandling errorHandlingMode)
//        {
//            EwsUtilities.Assert(
//                actionType == ConversationActionType.AlwaysCategorize ||
//                actionType == ConversationActionType.AlwaysMove ||
//                actionType == ConversationActionType.AlwaysDelete,
//                "ApplyConversationAction",
//                "Invalid actionType");
//
//            EwsUtilities.ValidateParam(conversationIds, "conversationId");
//            EwsUtilities.ValidateMethodVersion(
//                                this,
//                                ExchangeVersion.Exchange2010_SP1,
//                                "ApplyConversationAction");
//
//            ApplyConversationActionRequest request = new ApplyConversationActionRequest(this, errorHandlingMode);
//
//            for (var conversationId in conversationIds)
//            {
//                ConversationAction action = new ConversationAction();
//
//                action.Action = actionType;
//                action.ConversationId = conversationId;
//                action.ProcessRightAway = processRightAway;
//                action.Categories = categories;
//                action.EnableAlwaysDelete = enableAlwaysDelete;
//                action.DestinationFolderId = destinationFolderId != null ? new FolderIdWrapper(destinationFolderId) : null;
//
//                request.ConversationActions.Add(action);
//            }
//
//            return request.Execute();
//        }

/// <summary>
/// Applies one time conversation action on items in specified folder inside
/// the conversation.
/// </summary>
/// <param name="actionType">The action.</param>
/// <param name="idTimePairs">The id time pairs.</param>
/// <param name="contextFolderId">The context folder id.</param>
/// <param name="destinationFolderId">The destination folder id.</param>
/// <param name="deleteType">Type of the delete.</param>
/// <param name="isRead">The is read.</param>
/// <param name="retentionPolicyType">Retention policy type.</param>
/// <param name="retentionPolicyTagId">Retention policy tag id.  Null will clear the policy.</param>
/// <param name="flag">Flag status.</param>
/// <param name="suppressReadReceipts">Suppress read receipts flag.</param>
/// <param name="errorHandlingMode">The error handling mode.</param>
/// <returns></returns>
//ServiceResponseCollection<ServiceResponse> ApplyConversationOneTimeAction(
//            ConversationActionType actionType,
//            Iterable<MapEntry<ConversationId, DateTime?>> idTimePairs,
//            FolderId contextFolderId,
//            FolderId destinationFolderId,
//            DeleteMode? deleteType,
//            bool? isRead,
//            RetentionType? retentionPolicyType,
//            Guid? retentionPolicyTagId,
//            Flag flag,
//            bool? suppressReadReceipts,
//            ServiceErrorHandling errorHandlingMode)
//        {
//            EwsUtilities.Assert(
//                actionType == ConversationActionType.Move ||
//                actionType == ConversationActionType.Delete ||
//                actionType == ConversationActionType.SetReadState ||
//                actionType == ConversationActionType.SetRetentionPolicy ||
//                actionType == ConversationActionType.Copy ||
//                actionType == ConversationActionType.Flag,
//                "ApplyConversationOneTimeAction",
//                "Invalid actionType");
//
//            EwsUtilities.ValidateParamCollection(idTimePairs, "idTimePairs");
//            EwsUtilities.ValidateMethodVersion(
//                                this,
//                                ExchangeVersion.Exchange2010_SP1,
//                                "ApplyConversationAction");
//
//            ApplyConversationActionRequest request = new ApplyConversationActionRequest(this, errorHandlingMode);
//
//            for (var idTimePair in idTimePairs)
//            {
//                ConversationAction action = new ConversationAction();
//
//                action.Action = actionType;
//                action.ConversationId = idTimePair.Key;
//                action.ContextFolderId = contextFolderId != null ? new FolderIdWrapper(contextFolderId) : null;
//                action.DestinationFolderId = destinationFolderId != null ? new FolderIdWrapper(destinationFolderId) : null;
//                action.ConversationLastSyncTime = idTimePair.Value;
//                action.IsRead = isRead;
//                action.DeleteType = deleteType;
//                action.RetentionPolicyType = retentionPolicyType;
//                action.RetentionPolicyTagId = retentionPolicyTagId;
//                action.Flag = flag;
//                action.SuppressReadReceipts = suppressReadReceipts;
//
//                request.ConversationActions.Add(action);
//            }
//
//            return request.Execute();
//        }

/// <summary>
/// Sets up a conversation so that any item received within that conversation is always categorized.
/// Calling this method results in a call to EWS.
/// </summary>
/// <param name="conversationId">The id of the conversation.</param>
/// <param name="categories">The categories that should be stamped on items in the conversation.</param>
/// <param name="processSynchronously">Indicates whether the method should return only once enabling this rule and stamping existing items
/// in the conversation is completely done. If processSynchronously is false, the method returns immediately.</param>
/// <returns></returns>
//ServiceResponseCollection<ServiceResponse> EnableAlwaysCategorizeItemsInConversations(
//            Iterable<ConversationId> conversationId,
//            Iterable<String> categories,
//            bool processSynchronously)
//        {
//            EwsUtilities.ValidateParamCollection(categories, "categories");
//            return this.ApplyConversationAction(
//                        ConversationActionType.AlwaysCategorize,
//                        conversationId,
//                        processSynchronously,
//                        new StringList(categories),
//                        false,
//                        null,
//                        ServiceErrorHandling.ReturnErrors);
//        }

/// <summary>
/// Sets up a conversation so that any item received within that conversation is no longer categorized.
/// Calling this method results in a call to EWS.
/// </summary>
/// <param name="conversationId">The id of the conversation.</param>
/// <param name="processSynchronously">Indicates whether the method should return only once disabling this rule and removing the categories from existing items
/// in the conversation is completely done. If processSynchronously is false, the method returns immediately.</param>
/// <returns></returns>
//ServiceResponseCollection<ServiceResponse> DisableAlwaysCategorizeItemsInConversations(
//            Iterable<ConversationId> conversationId,
//            bool processSynchronously)
//        {
//            return this.ApplyConversationAction(
//                        ConversationActionType.AlwaysCategorize,
//                        conversationId,
//                        processSynchronously,
//                        null,
//                        false,
//                        null,
//                        ServiceErrorHandling.ReturnErrors);
//        }

/// <summary>
/// Sets up a conversation so that any item received within that conversation is always moved to Deleted Items folder.
/// Calling this method results in a call to EWS.
/// </summary>
/// <param name="conversationId">The id of the conversation.</param>
/// <param name="processSynchronously">Indicates whether the method should return only once enabling this rule and deleting existing items
/// in the conversation is completely done. If processSynchronously is false, the method returns immediately.</param>
/// <returns></returns>
//ServiceResponseCollection<ServiceResponse> EnableAlwaysDeleteItemsInConversations(
//            Iterable<ConversationId> conversationId,
//            bool processSynchronously)
//        {
//            return this.ApplyConversationAction(
//                        ConversationActionType.AlwaysDelete,
//                        conversationId,
//                        processSynchronously,
//                        null,
//                        true,
//                        null,
//                        ServiceErrorHandling.ReturnErrors);
//        }

/// <summary>
/// Sets up a conversation so that any item received within that conversation is no longer moved to Deleted Items folder.
/// Calling this method results in a call to EWS.
/// </summary>
/// <param name="conversationId">The id of the conversation.</param>
/// <param name="processSynchronously">Indicates whether the method should return only once disabling this rule and restoring the items
/// in the conversation is completely done. If processSynchronously is false, the method returns immediately.</param>
/// <returns></returns>
//ServiceResponseCollection<ServiceResponse> DisableAlwaysDeleteItemsInConversations(
//            Iterable<ConversationId> conversationId,
//            bool processSynchronously)
//        {
//            return this.ApplyConversationAction(
//                        ConversationActionType.AlwaysDelete,
//                        conversationId,
//                        processSynchronously,
//                        null,
//                        false,
//                        null,
//                        ServiceErrorHandling.ReturnErrors);
//        }

/// <summary>
/// Sets up a conversation so that any item received within that conversation is always moved to a specific folder.
/// Calling this method results in a call to EWS.
/// </summary>
/// <param name="conversationId">The id of the conversation.</param>
/// <param name="destinationFolderId">The Id of the folder to which conversation items should be moved.</param>
/// <param name="processSynchronously">Indicates whether the method should return only once enabling this rule and moving existing items
/// in the conversation is completely done. If processSynchronously is false, the method returns immediately.</param>
/// <returns></returns>
//ServiceResponseCollection<ServiceResponse> EnableAlwaysMoveItemsInConversations(
//            Iterable<ConversationId> conversationId,
//            FolderId destinationFolderId,
//            bool processSynchronously)
//        {
//            EwsUtilities.ValidateParam(destinationFolderId, "destinationFolderId");
//            return this.ApplyConversationAction(
//                        ConversationActionType.AlwaysMove,
//                        conversationId,
//                        processSynchronously,
//                        null,
//                        false,
//                        destinationFolderId,
//                        ServiceErrorHandling.ReturnErrors);
//        }

/// <summary>
/// Sets up a conversation so that any item received within that conversation is no longer moved to a specific folder.
/// Calling this method results in a call to EWS.
/// </summary>
/// <param name="conversationIds">The conversation ids.</param>
/// <param name="processSynchronously">Indicates whether the method should return only once disabling this rule is completely done.
/// If processSynchronously is false, the method returns immediately.</param>
/// <returns></returns>
//ServiceResponseCollection<ServiceResponse> DisableAlwaysMoveItemsInConversations(
//            Iterable<ConversationId> conversationIds,
//            bool processSynchronously)
//        {
//            return this.ApplyConversationAction(
//                        ConversationActionType.AlwaysMove,
//                        conversationIds,
//                        processSynchronously,
//                        null,
//                        false,
//                        null,
//                        ServiceErrorHandling.ReturnErrors);
//        }

/// <summary>
/// Moves the items in the specified conversation to the specified destination folder.
/// Calling this method results in a call to EWS.
/// </summary>
/// <param name="idLastSyncTimePairs">The pairs of Id of conversation whose
/// items should be moved and the dateTime conversation was last synced
/// (Items received after that dateTime will not be moved).</param>
/// <param name="contextFolderId">The Id of the folder that contains the conversation.</param>
/// <param name="destinationFolderId">The Id of the destination folder.</param>
/// <returns></returns>
//ServiceResponseCollection<ServiceResponse> MoveItemsInConversations(
//            Iterable<MapEntry<ConversationId, DateTime?>> idLastSyncTimePairs,
//            FolderId contextFolderId,
//            FolderId destinationFolderId)
//        {
//            EwsUtilities.ValidateParam(destinationFolderId, "destinationFolderId");
//            return this.ApplyConversationOneTimeAction(
//                ConversationActionType.Move,
//                idLastSyncTimePairs,
//                contextFolderId,
//                destinationFolderId,
//                null,
//                null,
//                null,
//                null,
//                null,
//                null,
//                ServiceErrorHandling.ReturnErrors);
//        }

/// <summary>
/// Copies the items in the specified conversation to the specified destination folder.
/// Calling this method results in a call to EWS.
/// </summary>
/// <param name="idLastSyncTimePairs">The pairs of Id of conversation whose
/// items should be copied and the date and time conversation was last synced
/// (Items received after that date will not be copied).</param>
/// <param name="contextFolderId">The context folder id.</param>
/// <param name="destinationFolderId">The destination folder id.</param>
/// <returns></returns>
//ServiceResponseCollection<ServiceResponse> CopyItemsInConversations(
//            Iterable<MapEntry<ConversationId, DateTime?>> idLastSyncTimePairs,
//            FolderId contextFolderId,
//            FolderId destinationFolderId)
//        {
//            EwsUtilities.ValidateParam(destinationFolderId, "destinationFolderId");
//            return this.ApplyConversationOneTimeAction(
//                ConversationActionType.Copy,
//                idLastSyncTimePairs,
//                contextFolderId,
//                destinationFolderId,
//                null,
//                null,
//                null,
//                null,
//                null,
//                null,
//                ServiceErrorHandling.ReturnErrors);
//        }

/// <summary>
/// Deletes the items in the specified conversation. Calling this method results in a call to EWS.
/// </summary>
/// <param name="idLastSyncTimePairs">The pairs of Id of conversation whose
/// items should be deleted and the date and time conversation was last synced
/// (Items received after that date will not be deleted).</param>
/// <param name="contextFolderId">The Id of the folder that contains the conversation.</param>
/// <param name="deleteMode">The deletion mode.</param>
/// <returns></returns>
//ServiceResponseCollection<ServiceResponse> DeleteItemsInConversations(
//            Iterable<MapEntry<ConversationId, DateTime?>> idLastSyncTimePairs,
//            FolderId contextFolderId,
//            DeleteMode deleteMode)
//        {
//            return this.ApplyConversationOneTimeAction(
//                ConversationActionType.Delete,
//                idLastSyncTimePairs,
//                contextFolderId,
//                null,
//                deleteMode,
//                null,
//                null,
//                null,
//                null,
//                null,
//                ServiceErrorHandling.ReturnErrors);
//        }

/// <summary>
/// Sets the read state for items in conversation. Calling this method would
/// result in call to EWS.
/// </summary>
/// <param name="idLastSyncTimePairs">The pairs of Id of conversation whose
/// items should have their read state set and the date and time conversation
/// was last synced (Items received after that date will not have their read
/// state set).</param>
/// <param name="contextFolderId">The Id of the folder that contains the conversation.</param>
/// <param name="isRead">if set to <c>true</c>, conversation items are marked as read; otherwise they are marked as unread.</param>
//ServiceResponseCollection<ServiceResponse> SetReadStateForItemsInConversations(
//            Iterable<MapEntry<ConversationId, DateTime?>> idLastSyncTimePairs,
//            FolderId contextFolderId,
//            bool isRead)
//        {
//            return this.ApplyConversationOneTimeAction(
//                ConversationActionType.SetReadState,
//                idLastSyncTimePairs,
//                contextFolderId,
//                null,
//                null,
//                isRead,
//                null,
//                null,
//                null,
//                null,
//                ServiceErrorHandling.ReturnErrors);
//        }

/// <summary>
/// Sets the read state for items in conversation. Calling this method would
/// result in call to EWS.
/// </summary>
/// <param name="idLastSyncTimePairs">The pairs of Id of conversation whose
/// items should have their read state set and the date and time conversation
/// was last synced (Items received after that date will not have their read
/// state set).</param>
/// <param name="contextFolderId">The Id of the folder that contains the conversation.</param>
/// <param name="isRead">if set to <c>true</c>, conversation items are marked as read; otherwise they are marked as unread.</param>
/// <param name="suppressReadReceipts">if set to <c>true</c> read receipts are suppressed.</param>
//ServiceResponseCollection<ServiceResponse> SetReadStateForItemsInConversations(
//            Iterable<MapEntry<ConversationId, DateTime?>> idLastSyncTimePairs,
//            FolderId contextFolderId,
//            bool isRead,
//            bool suppressReadReceipts)
//        {
//            EwsUtilities.ValidateMethodVersion(this, ExchangeVersion.Exchange2013, "SetReadStateForItemsInConversations");
//
//            return this.ApplyConversationOneTimeAction(
//                ConversationActionType.SetReadState,
//                idLastSyncTimePairs,
//                contextFolderId,
//                null,
//                null,
//                isRead,
//                null,
//                null,
//                null,
//                suppressReadReceipts,
//                ServiceErrorHandling.ReturnErrors);
//        }

/// <summary>
/// Sets the retention policy for items in conversation. Calling this method would
/// result in call to EWS.
/// </summary>
/// <param name="idLastSyncTimePairs">The pairs of Id of conversation whose
/// items should have their retention policy set and the date and time conversation
/// was last synced (Items received after that date will not have their retention
/// policy set).</param>
/// <param name="contextFolderId">The Id of the folder that contains the conversation.</param>
/// <param name="retentionPolicyType">Retention policy type.</param>
/// <param name="retentionPolicyTagId">Retention policy tag id.  Null will clear the policy.</param>
//ServiceResponseCollection<ServiceResponse> SetRetentionPolicyForItemsInConversations(
//            Iterable<MapEntry<ConversationId, DateTime?>> idLastSyncTimePairs,
//            FolderId contextFolderId,
//            RetentionType retentionPolicyType,
//            Guid? retentionPolicyTagId)
//        {
//            return this.ApplyConversationOneTimeAction(
//                ConversationActionType.SetRetentionPolicy,
//                idLastSyncTimePairs,
//                contextFolderId,
//                null,
//                null,
//                null,
//                retentionPolicyType,
//                retentionPolicyTagId,
//                null,
//                null,
//                ServiceErrorHandling.ReturnErrors);
//        }

/// <summary>
/// Sets flag status for items in conversation. Calling this method would result in call to EWS.
/// </summary>
/// <param name="idLastSyncTimePairs">The pairs of Id of conversation whose
/// items should have their read state set and the date and time conversation
/// was last synced (Items received after that date will not have their read
/// state set).</param>
/// <param name="contextFolderId">The Id of the folder that contains the conversation.</param>
/// <param name="flagStatus">Flag status to apply to conversation items.</param>
//ServiceResponseCollection<ServiceResponse> SetFlagStatusForItemsInConversations(
//            Iterable<MapEntry<ConversationId, DateTime?>> idLastSyncTimePairs,
//            FolderId contextFolderId,
//            Flag flagStatus)
//        {
//            EwsUtilities.ValidateMethodVersion(this, ExchangeVersion.Exchange2013, "SetFlagStatusForItemsInConversations");
//
//            return this.ApplyConversationOneTimeAction(
//                ConversationActionType.Flag,
//                idLastSyncTimePairs,
//                contextFolderId,
//                null,
//                null,
//                null,
//                null,
//                null,
//                flagStatus,
//                null,
//                ServiceErrorHandling.ReturnErrors);
//        }

/// <summary>
/// Converts multiple Ids from one format to another in a single call to EWS.
/// </summary>
/// <param name="ids">The Ids to convert.</param>
/// <param name="destinationFormat">The destination format.</param>
/// <param name="errorHandling">Type of error handling to perform.</param>
/// <returns>A ServiceResponseCollection providing conversion results for each specified Ids.</returns>
//ServiceResponseCollection<ConvertIdResponse> InternalConvertIds(
//            Iterable<AlternateIdBase> ids,
//            IdFormat destinationFormat,
//            ServiceErrorHandling errorHandling)
//        {
//            EwsUtilities.ValidateParamCollection(ids, "ids");
//
//            ConvertIdRequest request = new ConvertIdRequest(this, errorHandling);
//
//            request.Ids.AddRange(ids);
//            request.DestinationFormat = destinationFormat;
//
//            return request.Execute();
//        }

/// <summary>
/// Converts multiple Ids from one format to another in a single call to EWS.
/// </summary>
/// <param name="ids">The Ids to convert.</param>
/// <param name="destinationFormat">The destination format.</param>
/// <returns>A ServiceResponseCollection providing conversion results for each specified Ids.</returns>
//ServiceResponseCollection<ConvertIdResponse> ConvertIds(Iterable<AlternateIdBase> ids, IdFormat destinationFormat)
//        {
//            EwsUtilities.ValidateParamCollection(ids, "ids");
//
//            return this.InternalConvertIds(
//                ids,
//                destinationFormat,
//                ServiceErrorHandling.ReturnErrors);
//        }

/// <summary>
/// Converts Id from one format to another in a single call to EWS.
/// </summary>
/// <param name="id">The Id to convert.</param>
/// <param name="destinationFormat">The destination format.</param>
/// <returns>The converted Id.</returns>
//AlternateIdBase ConvertId(AlternateIdBase id, IdFormat destinationFormat)
//        {
//            EwsUtilities.ValidateParam(id, "id");
//
//            ServiceResponseCollection<ConvertIdResponse> responses = this.InternalConvertIds(
//                new AlternateIdBase[] { id },
//                destinationFormat,
//                ServiceErrorHandling.ThrowOnError);
//
//            return responses[0].ConvertedId;
//        }

/// <summary>
/// Adds delegates to a specific mailbox. Calling this method results in a call to EWS.
/// </summary>
/// <param name="mailbox">The mailbox to add delegates to.</param>
/// <param name="meetingRequestsDeliveryScope">Indicates how meeting requests should be sent to delegates.</param>
/// <param name="delegateUsers">The delegate users to add.</param>
/// <returns>A collection of DelegateUserResponse objects providing the results of the operation.</returns>
//Collection<DelegateUserResponse> AddDelegates(
//            Mailbox mailbox,
//            MeetingRequestsDeliveryScope? meetingRequestsDeliveryScope,
//            params DelegateUser[] delegateUsers)
//        {
//            return this.AddDelegates(
//                mailbox,
//                meetingRequestsDeliveryScope,
//                (Iterable<DelegateUser>)delegateUsers);
//        }

/// <summary>
/// Adds delegates to a specific mailbox. Calling this method results in a call to EWS.
/// </summary>
/// <param name="mailbox">The mailbox to add delegates to.</param>
/// <param name="meetingRequestsDeliveryScope">Indicates how meeting requests should be sent to delegates.</param>
/// <param name="delegateUsers">The delegate users to add.</param>
/// <returns>A collection of DelegateUserResponse objects providing the results of the operation.</returns>
//Collection<DelegateUserResponse> AddDelegates(
//            Mailbox mailbox,
//            MeetingRequestsDeliveryScope? meetingRequestsDeliveryScope,
//            Iterable<DelegateUser> delegateUsers)
//        {
//            EwsUtilities.ValidateParam(mailbox, "mailbox");
//            EwsUtilities.ValidateParamCollection(delegateUsers, "delegateUsers");
//
//            AddDelegateRequest request = new AddDelegateRequest(this);
//
//            request.Mailbox = mailbox;
//            request.DelegateUsers.AddRange(delegateUsers);
//            request.MeetingRequestsDeliveryScope = meetingRequestsDeliveryScope;
//
//            DelegateManagementResponse response = request.Execute();
//            return response.DelegateUserResponses;
//        }

/// <summary>
/// Updates delegates on a specific mailbox. Calling this method results in a call to EWS.
/// </summary>
/// <param name="mailbox">The mailbox to update delegates on.</param>
/// <param name="meetingRequestsDeliveryScope">Indicates how meeting requests should be sent to delegates.</param>
/// <param name="delegateUsers">The delegate users to update.</param>
/// <returns>A collection of DelegateUserResponse objects providing the results of the operation.</returns>
//Collection<DelegateUserResponse> UpdateDelegates(
//            Mailbox mailbox,
//            MeetingRequestsDeliveryScope? meetingRequestsDeliveryScope,
//            params DelegateUser[] delegateUsers)
//        {
//            return this.UpdateDelegates(
//                mailbox,
//                meetingRequestsDeliveryScope,
//                (Iterable<DelegateUser>)delegateUsers);
//        }

/// <summary>
/// Updates delegates on a specific mailbox. Calling this method results in a call to EWS.
/// </summary>
/// <param name="mailbox">The mailbox to update delegates on.</param>
/// <param name="meetingRequestsDeliveryScope">Indicates how meeting requests should be sent to delegates.</param>
/// <param name="delegateUsers">The delegate users to update.</param>
/// <returns>A collection of DelegateUserResponse objects providing the results of the operation.</returns>
//Collection<DelegateUserResponse> UpdateDelegates(
//            Mailbox mailbox,
//            MeetingRequestsDeliveryScope? meetingRequestsDeliveryScope,
//            Iterable<DelegateUser> delegateUsers)
//        {
//            EwsUtilities.ValidateParam(mailbox, "mailbox");
//            EwsUtilities.ValidateParamCollection(delegateUsers, "delegateUsers");
//
//            UpdateDelegateRequest request = new UpdateDelegateRequest(this);
//
//            request.Mailbox = mailbox;
//            request.DelegateUsers.AddRange(delegateUsers);
//            request.MeetingRequestsDeliveryScope = meetingRequestsDeliveryScope;
//
//            DelegateManagementResponse response = request.Execute();
//            return response.DelegateUserResponses;
//        }

/// <summary>
/// Removes delegates on a specific mailbox. Calling this method results in a call to EWS.
/// </summary>
/// <param name="mailbox">The mailbox to remove delegates from.</param>
/// <param name="userIds">The Ids of the delegate users to remove.</param>
/// <returns>A collection of DelegateUserResponse objects providing the results of the operation.</returns>
//Collection<DelegateUserResponse> RemoveDelegates(Mailbox mailbox, params UserId[] userIds)
//        {
//            return this.RemoveDelegates(mailbox, (Iterable<UserId>)userIds);
//        }

/// <summary>
/// Removes delegates on a specific mailbox. Calling this method results in a call to EWS.
/// </summary>
/// <param name="mailbox">The mailbox to remove delegates from.</param>
/// <param name="userIds">The Ids of the delegate users to remove.</param>
/// <returns>A collection of DelegateUserResponse objects providing the results of the operation.</returns>
//Collection<DelegateUserResponse> RemoveDelegates(Mailbox mailbox, Iterable<UserId> userIds)
//        {
//            EwsUtilities.ValidateParam(mailbox, "mailbox");
//            EwsUtilities.ValidateParamCollection(userIds, "userIds");
//
//            RemoveDelegateRequest request = new RemoveDelegateRequest(this);
//
//            request.Mailbox = mailbox;
//            request.UserIds.AddRange(userIds);
//
//            DelegateManagementResponse response = request.Execute();
//            return response.DelegateUserResponses;
//        }

/// <summary>
/// Retrieves the delegates of a specific mailbox. Calling this method results in a call to EWS.
/// </summary>
/// <param name="mailbox">The mailbox to retrieve the delegates of.</param>
/// <param name="includePermissions">Indicates whether detailed permissions should be returned fro each delegate.</param>
/// <param name="userIds">The optional Ids of the delegate users to retrieve.</param>
/// <returns>A GetDelegateResponse providing the results of the operation.</returns>
//DelegateInformation GetDelegates(
//            Mailbox mailbox,
//            bool includePermissions,
//            params UserId[] userIds)
//        {
//            return this.GetDelegates(
//                mailbox,
//                includePermissions,
//                (Iterable<UserId>)userIds);
//        }

/// <summary>
/// Retrieves the delegates of a specific mailbox. Calling this method results in a call to EWS.
/// </summary>
/// <param name="mailbox">The mailbox to retrieve the delegates of.</param>
/// <param name="includePermissions">Indicates whether detailed permissions should be returned fro each delegate.</param>
/// <param name="userIds">The optional Ids of the delegate users to retrieve.</param>
/// <returns>A GetDelegateResponse providing the results of the operation.</returns>
//DelegateInformation GetDelegates(
//            Mailbox mailbox,
//            bool includePermissions,
//            Iterable<UserId> userIds)
//        {
//            EwsUtilities.ValidateParam(mailbox, "mailbox");
//
//            GetDelegateRequest request = new GetDelegateRequest(this);
//
//            request.Mailbox = mailbox;
//            request.UserIds.AddRange(userIds);
//            request.IncludePermissions = includePermissions;
//
//            GetDelegateResponse response = request.Execute();
//            DelegateInformation delegateInformation = new DelegateInformation(
//                response.DelegateUserResponses,
//                response.MeetingRequestsDeliveryScope);
//
//            return delegateInformation;
//        }

/// <summary>
/// Creates a UserConfiguration.
/// </summary>
/// <param name="userConfiguration">The UserConfiguration.</param>
//        void CreateUserConfiguration(UserConfiguration userConfiguration)
//        {
//            EwsUtilities.ValidateParam(userConfiguration, "userConfiguration");
//
//            CreateUserConfigurationRequest request = new CreateUserConfigurationRequest(this);
//
//            request.UserConfiguration = userConfiguration;
//
//            request.Execute();
//        }

/// <summary>
/// Deletes a UserConfiguration.
/// </summary>
/// <param name="name">Name of the UserConfiguration to retrieve.</param>
/// <param name="parentFolderId">Id of the folder containing the UserConfiguration.</param>
//        void DeleteUserConfiguration(string name, FolderId parentFolderId)
//        {
//            EwsUtilities.ValidateParam(name, "name");
//            EwsUtilities.ValidateParam(parentFolderId, "parentFolderId");
//
//            DeleteUserConfigurationRequest request = new DeleteUserConfigurationRequest(this);
//
//            request.Name = name;
//            request.ParentFolderId = parentFolderId;
//
//            request.Execute();
//        }

/// <summary>
/// Gets a UserConfiguration.
/// </summary>
/// <param name="name">Name of the UserConfiguration to retrieve.</param>
/// <param name="parentFolderId">Id of the folder containing the UserConfiguration.</param>
/// <param name="properties">Properties to retrieve.</param>
/// <returns>A UserConfiguration.</returns>
//        UserConfiguration GetUserConfiguration(
//            string name,
//            FolderId parentFolderId,
//            UserConfigurationProperties properties)
//        {
//            EwsUtilities.ValidateParam(name, "name");
//            EwsUtilities.ValidateParam(parentFolderId, "parentFolderId");
//
//            GetUserConfigurationRequest request = new GetUserConfigurationRequest(this);
//
//            request.Name = name;
//            request.ParentFolderId = parentFolderId;
//            request.Properties = properties;
//
//            return request.Execute()[0].UserConfiguration;
//        }

/// <summary>
/// Loads the properties of the specified userConfiguration.
/// </summary>
/// <param name="userConfiguration">The userConfiguration containing properties to load.</param>
/// <param name="properties">Properties to retrieve.</param>
//        void LoadPropertiesForUserConfiguration(UserConfiguration userConfiguration, UserConfigurationProperties properties)
//        {
//            EwsUtilities.Assert(
//                userConfiguration != null,
//                "ExchangeService.LoadPropertiesForUserConfiguration",
//                "userConfiguration is null");
//
//            GetUserConfigurationRequest request = new GetUserConfigurationRequest(this);
//
//            request.UserConfiguration = userConfiguration;
//            request.Properties = properties;
//
//            request.Execute();
//        }

/// <summary>
/// Updates a UserConfiguration.
/// </summary>
/// <param name="userConfiguration">The UserConfiguration.</param>
//        void UpdateUserConfiguration(UserConfiguration userConfiguration)
//        {
//            EwsUtilities.ValidateParam(userConfiguration, "userConfiguration");
//
//            UpdateUserConfigurationRequest request = new UpdateUserConfigurationRequest(this);
//
//            request.UserConfiguration = userConfiguration;
//
//            request.Execute();
//        }

/// <summary>
/// Retrieves inbox rules of the authenticated user.
/// </summary>
/// <returns>A RuleCollection object containing the authenticated user's inbox rules.</returns>
//RuleCollection GetInboxRules()
//        {
//            GetInboxRulesRequest request = new GetInboxRulesRequest(this);
//
//            return request.Execute().Rules;
//        }

/// <summary>
/// Retrieves the inbox rules of the specified user.
/// </summary>
/// <param name="mailboxSmtpAddress">The SMTP address of the user whose inbox rules should be retrieved.</param>
/// <returns>A RuleCollection object containing the inbox rules of the specified user.</returns>
//RuleCollection GetInboxRules(string mailboxSmtpAddress)
//        {
//            EwsUtilities.ValidateParam(mailboxSmtpAddress, "MailboxSmtpAddress");
//
//            GetInboxRulesRequest request = new GetInboxRulesRequest(this);
//            request.MailboxSmtpAddress = mailboxSmtpAddress;
//
//            return request.Execute().Rules;
//        }

/// <summary>
/// Updates the authenticated user's inbox rules by applying the specified operations.
/// </summary>
/// <param name="operations">The operations that should be applied to the user's inbox rules.</param>
/// <param name="removeOutlookRuleBlob">Indicate whether or not to remove Outlook Rule Blob.</param>
//void UpdateInboxRules(
//            Iterable<RuleOperation> operations,
//            bool removeOutlookRuleBlob)
//        {
//            UpdateInboxRulesRequest request = new UpdateInboxRulesRequest(this);
//            request.InboxRuleOperations = operations;
//            request.RemoveOutlookRuleBlob = removeOutlookRuleBlob;
//            request.Execute();
//        }

/// <summary>
/// Update the specified user's inbox rules by applying the specified operations.
/// </summary>
/// <param name="operations">The operations that should be applied to the user's inbox rules.</param>
/// <param name="removeOutlookRuleBlob">Indicate whether or not to remove Outlook Rule Blob.</param>
/// <param name="mailboxSmtpAddress">The SMTP address of the user whose inbox rules should be updated.</param>
//void UpdateInboxRules(
//            Iterable<RuleOperation> operations,
//            bool removeOutlookRuleBlob,
//            string mailboxSmtpAddress)
//        {
//            UpdateInboxRulesRequest request = new UpdateInboxRulesRequest(this);
//            request.InboxRuleOperations = operations;
//            request.RemoveOutlookRuleBlob = removeOutlookRuleBlob;
//            request.MailboxSmtpAddress = mailboxSmtpAddress;
//            request.Execute();
//        }

/// <summary>
/// Get dicovery search configuration
/// </summary>
/// <param name="searchId">Search Id</param>
/// <param name="expandGroupMembership">True if want to expand group membership</param>
/// <param name="inPlaceHoldConfigurationOnly">True if only want the inplacehold configuration</param>
/// <returns>Service response object</returns>
//GetDiscoverySearchConfigurationResponse GetDiscoverySearchConfiguration(string searchId, bool expandGroupMembership, bool inPlaceHoldConfigurationOnly)
//        {
//            GetDiscoverySearchConfigurationRequest request = new GetDiscoverySearchConfigurationRequest(this);
//            request.SearchId = searchId;
//            request.ExpandGroupMembership = expandGroupMembership;
//            request.InPlaceHoldConfigurationOnly = inPlaceHoldConfigurationOnly;
//
//            return request.Execute();
//        }

/// <summary>
/// Get searchable mailboxes
/// </summary>
/// <param name="searchFilter">Search filter</param>
/// <param name="expandGroupMembership">True if want to expand group membership</param>
/// <returns>Service response object</returns>
//GetSearchableMailboxesResponse GetSearchableMailboxes(string searchFilter, bool expandGroupMembership)
//        {
//            GetSearchableMailboxesRequest request = new GetSearchableMailboxesRequest(this);
//            request.SearchFilter = searchFilter;
//            request.ExpandGroupMembership = expandGroupMembership;
//
//            return request.Execute();
//        }

/// <summary>
/// Search mailboxes
/// </summary>
/// <param name="mailboxQueries">Collection of query and mailboxes</param>
/// <param name="resultType">Search result type</param>
/// <returns>Collection of search mailboxes response object</returns>
//ServiceResponseCollection<SearchMailboxesResponse> SearchMailboxes(Iterable<MailboxQuery> mailboxQueries, SearchResultType resultType)
//        {
//            SearchMailboxesRequest request = new SearchMailboxesRequest(this, ServiceErrorHandling.ReturnErrors);
//            if (mailboxQueries != null)
//            {
//                request.SearchQueries.AddRange(mailboxQueries);
//            }
//
//            request.ResultType = resultType;
//
//            return request.Execute();
//        }

/// <summary>
/// Search mailboxes
/// </summary>
/// <param name="mailboxQueries">Collection of query and mailboxes</param>
/// <param name="resultType">Search result type</param>
/// <param name="sortByProperty">Sort by property name</param>
/// <param name="sortOrder">Sort order</param>
/// <param name="pageSize">Page size</param>
/// <param name="pageDirection">Page navigation direction</param>
/// <param name="pageItemReference">Item reference used for paging</param>
/// <returns>Collection of search mailboxes response object</returns>
//ServiceResponseCollection<SearchMailboxesResponse> SearchMailboxes(
//            Iterable<MailboxQuery> mailboxQueries,
//            SearchResultType resultType,
//            string sortByProperty,
//            SortDirection sortOrder,
//            int pageSize,
//            SearchPageDirection pageDirection,
//            string pageItemReference)
//        {
//            SearchMailboxesRequest request = new SearchMailboxesRequest(this, ServiceErrorHandling.ReturnErrors);
//            if (mailboxQueries != null)
//            {
//                request.SearchQueries.AddRange(mailboxQueries);
//            }
//
//            request.ResultType = resultType;
//            request.SortByProperty = sortByProperty;
//            request.SortOrder = sortOrder;
//            request.PageSize = pageSize;
//            request.PageDirection = pageDirection;
//            request.PageItemReference = pageItemReference;
//
//            return request.Execute();
//        }

/// <summary>
/// Search mailboxes
/// </summary>
/// <param name="searchParameters">Search mailboxes parameters</param>
/// <returns>Collection of search mailboxes response object</returns>
//ServiceResponseCollection<SearchMailboxesResponse> SearchMailboxes(SearchMailboxesParameters searchParameters)
//        {
//            EwsUtilities.ValidateParam(searchParameters, "searchParameters");
//            EwsUtilities.ValidateParam(searchParameters.SearchQueries, "searchParameters.SearchQueries");
//
//            SearchMailboxesRequest request = this.CreateSearchMailboxesRequest(searchParameters);
//            return request.Execute();
//        }

/// <summary>
/// Asynchronous call to search mailboxes
/// </summary>
/// <param name="callback">callback</param>
/// <param name="state">state</param>
/// <param name="searchParameters">search parameters</param>
/// <returns>Async result</returns>
//IAsyncResult BeginSearchMailboxes(
//            AsyncCallback callback,
//            object state,
//            SearchMailboxesParameters searchParameters)
//        {
//            EwsUtilities.ValidateParam(searchParameters, "searchParameters");
//            EwsUtilities.ValidateParam(searchParameters.SearchQueries, "searchParameters.SearchQueries");
//
//            SearchMailboxesRequest request = this.CreateSearchMailboxesRequest(searchParameters);
//            return request.BeginExecute(callback, state);
//        }

/// <summary>
/// Asynchronous call to end search mailboxes
/// </summary>
/// <param name="asyncResult"></param>
/// <returns></returns>
//ServiceResponseCollection<SearchMailboxesResponse> EndSearchMailboxes(IAsyncResult asyncResult)
//        {
//            var request = AsyncRequestResult.ExtractServiceRequest<SearchMailboxesRequest>(this, asyncResult);
//
//            return request.EndExecute(asyncResult);
//        }

/// <summary>
/// Set hold on mailboxes
/// </summary>
/// <param name="holdId">Hold id</param>
/// <param name="actionType">Action type</param>
/// <param name="query">Query string</param>
/// <param name="mailboxes">Collection of mailboxes</param>
/// <returns>Service response object</returns>
//SetHoldOnMailboxesResponse SetHoldOnMailboxes(string holdId, HoldAction actionType, string query, string[] mailboxes)
//        {
//            SetHoldOnMailboxesRequest request = new SetHoldOnMailboxesRequest(this);
//            request.HoldId = holdId;
//            request.ActionType = actionType;
//            request.Query = query;
//            request.Mailboxes = mailboxes;
//            request.InPlaceHoldIdentity = null;
//
//            return request.Execute();
//        }

/// <summary>
/// Set hold on mailboxes
/// </summary>
/// <param name="holdId">Hold id</param>
/// <param name="actionType">Action type</param>
/// <param name="query">Query string</param>
/// <param name="inPlaceHoldIdentity">in-place hold identity</param>
/// <returns>Service response object</returns>
//SetHoldOnMailboxesResponse SetHoldOnMailboxes(string holdId, HoldAction actionType, string query, string inPlaceHoldIdentity)
//        {
//            return this.SetHoldOnMailboxes(holdId, actionType, query, inPlaceHoldIdentity, null);
//        }

/// <summary>
/// Set hold on mailboxes
/// </summary>
/// <param name="holdId">Hold id</param>
/// <param name="actionType">Action type</param>
/// <param name="query">Query string</param>
/// <param name="inPlaceHoldIdentity">in-place hold identity</param>
/// <param name="itemHoldPeriod">item hold period</param>
/// <returns>Service response object</returns>
//SetHoldOnMailboxesResponse SetHoldOnMailboxes(string holdId, HoldAction actionType, string query, string inPlaceHoldIdentity, string itemHoldPeriod)
//        {
//            SetHoldOnMailboxesRequest request = new SetHoldOnMailboxesRequest(this);
//            request.HoldId = holdId;
//            request.ActionType = actionType;
//            request.Query = query;
//            request.Mailboxes = null;
//            request.InPlaceHoldIdentity = inPlaceHoldIdentity;
//            request.ItemHoldPeriod = itemHoldPeriod;
//
//            return request.Execute();
//        }

/// <summary>
/// Set hold on mailboxes
/// </summary>
/// <param name="parameters">Set hold parameters</param>
/// <returns>Service response object</returns>
//SetHoldOnMailboxesResponse SetHoldOnMailboxes(SetHoldOnMailboxesParameters parameters)
//        {
//            EwsUtilities.ValidateParam(parameters, "parameters");
//
//            SetHoldOnMailboxesRequest request = new SetHoldOnMailboxesRequest(this);
//            request.HoldId = parameters.HoldId;
//            request.ActionType = parameters.ActionType;
//            request.Query = parameters.Query;
//            request.Mailboxes = parameters.Mailboxes;
//            request.Language = parameters.Language;
//            request.InPlaceHoldIdentity = parameters.InPlaceHoldIdentity;
//
//            return request.Execute();
//        }

/// <summary>
/// Get hold on mailboxes
/// </summary>
/// <param name="holdId">Hold id</param>
/// <returns>Service response object</returns>
//GetHoldOnMailboxesResponse GetHoldOnMailboxes(string holdId)
//        {
//            GetHoldOnMailboxesRequest request = new GetHoldOnMailboxesRequest(this);
//            request.HoldId = holdId;
//
//            return request.Execute();
//        }

/// <summary>
/// Get non indexable item details
/// </summary>
/// <param name="mailboxes">Array of mailbox legacy DN</param>
/// <returns>Service response object</returns>
//GetNonIndexableItemDetailsResponse GetNonIndexableItemDetails(string[] mailboxes)
//        {
//            return this.GetNonIndexableItemDetails(mailboxes, null, null, null);
//        }

/// <summary>
/// Get non indexable item details
/// </summary>
/// <param name="mailboxes">Array of mailbox legacy DN</param>
/// <param name="pageSize">The page size</param>
/// <param name="pageItemReference">Page item reference</param>
/// <param name="pageDirection">Page direction</param>
/// <returns>Service response object</returns>
//GetNonIndexableItemDetailsResponse GetNonIndexableItemDetails(string[] mailboxes, int? pageSize, string pageItemReference, SearchPageDirection? pageDirection)
//        {
//            GetNonIndexableItemDetailsParameters parameters = new GetNonIndexableItemDetailsParameters
//            {
//                Mailboxes = mailboxes,
//                PageSize = pageSize,
//                PageItemReference = pageItemReference,
//                PageDirection = pageDirection,
//                SearchArchiveOnly = false,
//            };
//
//            return GetNonIndexableItemDetails(parameters);
//        }

/// <summary>
/// Get non indexable item details
/// </summary>
/// <param name="parameters">Get non indexable item details parameters</param>
/// <returns>Service response object</returns>
//GetNonIndexableItemDetailsResponse GetNonIndexableItemDetails(GetNonIndexableItemDetailsParameters parameters)
//        {
//            GetNonIndexableItemDetailsRequest request = this.CreateGetNonIndexableItemDetailsRequest(parameters);
//
//            return request.Execute();
//        }

/// <summary>
/// Asynchronous call to get non indexable item details
/// </summary>
/// <param name="callback">callback</param>
/// <param name="state">state</param>
/// <param name="parameters">Get non indexable item details parameters</param>
/// <returns>Async result</returns>
//IAsyncResult BeginGetNonIndexableItemDetails(
//            AsyncCallback callback,
//            object state,
//            GetNonIndexableItemDetailsParameters parameters)
//        {
//            GetNonIndexableItemDetailsRequest request = this.CreateGetNonIndexableItemDetailsRequest(parameters);
//            return request.BeginExecute(callback, state);
//        }

/// <summary>
/// Asynchronous call to get non indexable item details
/// </summary>
/// <param name="asyncResult"></param>
/// <returns></returns>
//GetNonIndexableItemDetailsResponse EndGetNonIndexableItemDetails(IAsyncResult asyncResult)
//        {
//            var request = AsyncRequestResult.ExtractServiceRequest<GetNonIndexableItemDetailsRequest>(this, asyncResult);
//
//            return (GetNonIndexableItemDetailsResponse)request.EndInternalExecute(asyncResult);
//        }

/// <summary>
/// Get non indexable item statistics
/// </summary>
/// <param name="mailboxes">Array of mailbox legacy DN</param>
/// <returns>Service response object</returns>
//GetNonIndexableItemStatisticsResponse GetNonIndexableItemStatistics(string[] mailboxes)
//        {
//            GetNonIndexableItemStatisticsParameters parameters = new GetNonIndexableItemStatisticsParameters
//            {
//                Mailboxes = mailboxes,
//                SearchArchiveOnly = false,
//            };
//
//            return this.GetNonIndexableItemStatistics(parameters);
//        }

/// <summary>
/// Get non indexable item statistics
/// </summary>
/// <param name="parameters">Get non indexable item statistics parameters</param>
/// <returns>Service response object</returns>
//GetNonIndexableItemStatisticsResponse GetNonIndexableItemStatistics(GetNonIndexableItemStatisticsParameters parameters)
//        {
//            GetNonIndexableItemStatisticsRequest request = this.CreateGetNonIndexableItemStatisticsRequest(parameters);
//
//            return request.Execute();
//        }

/// <summary>
/// Asynchronous call to get non indexable item statistics
/// </summary>
/// <param name="callback">callback</param>
/// <param name="state">state</param>
/// <param name="parameters">Get non indexable item statistics parameters</param>
/// <returns>Async result</returns>
//IAsyncResult BeginGetNonIndexableItemStatistics(
//            AsyncCallback callback,
//            object state,
//            GetNonIndexableItemStatisticsParameters parameters)
//        {
//            GetNonIndexableItemStatisticsRequest request = this.CreateGetNonIndexableItemStatisticsRequest(parameters);
//            return request.BeginExecute(callback, state);
//        }

/// <summary>
/// Asynchronous call to get non indexable item statistics
/// </summary>
/// <param name="asyncResult"></param>
/// <returns></returns>
//GetNonIndexableItemStatisticsResponse EndGetNonIndexableItemStatistics(IAsyncResult asyncResult)
//        {
//            var request = AsyncRequestResult.ExtractServiceRequest<GetNonIndexableItemStatisticsRequest>(this, asyncResult);
//
//            return (GetNonIndexableItemStatisticsResponse)request.EndInternalExecute(asyncResult);
//        }

/// <summary>
/// Create get non indexable item details request
/// </summary>
/// <param name="parameters">Get non indexable item details parameters</param>
/// <returns>GetNonIndexableItemDetails request</returns>
//GetNonIndexableItemDetailsRequest CreateGetNonIndexableItemDetailsRequest(GetNonIndexableItemDetailsParameters parameters)
//        {
//            EwsUtilities.ValidateParam(parameters, "parameters");
//            EwsUtilities.ValidateParam(parameters.Mailboxes, "parameters.Mailboxes");
//
//            GetNonIndexableItemDetailsRequest request = new GetNonIndexableItemDetailsRequest(this);
//            request.Mailboxes = parameters.Mailboxes;
//            request.PageSize = parameters.PageSize;
//            request.PageItemReference = parameters.PageItemReference;
//            request.PageDirection = parameters.PageDirection;
//            request.SearchArchiveOnly = parameters.SearchArchiveOnly;
//
//            return request;
//        }

/// <summary>
/// Create get non indexable item statistics request
/// </summary>
/// <param name="parameters">Get non indexable item statistics parameters</param>
/// <returns>Service response object</returns>
//GetNonIndexableItemStatisticsRequest CreateGetNonIndexableItemStatisticsRequest(GetNonIndexableItemStatisticsParameters parameters)
//        {
//            EwsUtilities.ValidateParam(parameters, "parameters");
//            EwsUtilities.ValidateParam(parameters.Mailboxes, "parameters.Mailboxes");
//
//            GetNonIndexableItemStatisticsRequest request = new GetNonIndexableItemStatisticsRequest(this);
//            request.Mailboxes = parameters.Mailboxes;
//            request.SearchArchiveOnly = parameters.SearchArchiveOnly;
//
//            return request;
//        }

/// <summary>
/// Creates SearchMailboxesRequest from SearchMailboxesParameters
/// </summary>
/// <param name="searchParameters">search parameters</param>
/// <returns>request object</returns>
//SearchMailboxesRequest CreateSearchMailboxesRequest(SearchMailboxesParameters searchParameters)
//        {
//            SearchMailboxesRequest request = new SearchMailboxesRequest(this, ServiceErrorHandling.ReturnErrors);
//            request.SearchQueries.AddRange(searchParameters.SearchQueries);
//            request.ResultType = searchParameters.ResultType;
//            request.PreviewItemResponseShape = searchParameters.PreviewItemResponseShape;
//            request.SortByProperty = searchParameters.SortBy;
//            request.SortOrder = searchParameters.SortOrder;
//            request.Language = searchParameters.Language;
//            request.PerformDeduplication = searchParameters.PerformDeduplication;
//            request.PageSize = searchParameters.PageSize;
//            request.PageDirection = searchParameters.PageDirection;
//            request.PageItemReference = searchParameters.PageItemReference;
//
//            return request;
//        }
//

/// <summary>
/// Get user retention policy tags.
/// </summary>
/// <returns>Service response object.</returns>
//GetUserRetentionPolicyTagsResponse GetUserRetentionPolicyTags()
//        {
//            GetUserRetentionPolicyTagsRequest request = new GetUserRetentionPolicyTagsRequest(this);
//
//            return request.Execute();
//        }

/// <summary>
/// Default implementation of AutodiscoverRedirectionUrlValidationCallback.
/// Always returns true indicating that the URL can be used.
/// </summary>
/// <param name="redirectionUrl">The redirection URL.</param>
/// <returns>Returns true.</returns>
bool DefaultAutodiscoverRedirectionUrlValidationCallback(
    String redirectionUrl) {
  throw new AutodiscoverLocalException(
      "AutodiscoverRedirectBlocked($redirectionUrl)");
}