/// <summary>
        ///     Executes the ReportUnresponsiveDevice action.
        /// </summary>
        /// <param name="deviceUuid">In value for the DeviceUUID action parameter.</param>
        /// <param name="desiredAction">In value for the DesiredAction action parameter.</param>
        public async Task ReportUnresponsiveDevice(String deviceUuid,
                                                   AargtypeUnresponsiveDeviceActionTypeEnum desiredAction)
        {
            var loIn = new object[2];

            loIn[0] = deviceUuid;
            loIn[1] = ZoneGroupTopologyExtensions.ToStringAargtypeUnresponsiveDeviceActionType(desiredAction);
            var action = new SoapAction
            {
                ArgNames           = new[] { "DeviceUUID", "DesiredAction" },
                Name               = CsActionReportUnresponsiveDevice,
                ExpectedReplyCount = 0
            };

            await InvokeActionAsync(action, loIn);
        }
        /// <summary>
        ///     Executes the CheckForUpdate action.
        /// </summary>
        /// <param name="updateType">In value for the UpdateType action parameter.</param>
        /// <param name="cachedOnly">In value for the CachedOnly action parameter.</param>
        /// <param name="version">In value for the Version action parameter.</param>
        /// <returns>Out value for the UpdateItem action parameter.</returns>
        public async Task <ActionResult> CheckForUpdate(AargtypeUpdateTypeEnum updateType, Boolean cachedOnly,
                                                        String version)
        {
            var loIn = new object[3];

            loIn[0] = ZoneGroupTopologyExtensions.ToStringAargtypeUpdateType(updateType);
            loIn[1] = cachedOnly;
            loIn[2] = version;
            var action = new SoapAction
            {
                ArgNames           = new[] { "UpdateType", "CachedOnly", "Version" },
                Name               = CsActionCheckForUpdate,
                ExpectedReplyCount = 1
            };
            SoapActionResult result = await InvokeActionAsync(action, loIn);

            // TODO: check for execption
            return(new ActionResult(result.XElement));
        }