public function swapDeployment($name, $source, $destination)
    {
        Validate::isString($name, 'name');
        Validate::notNullOrEmpty($name, 'name');
        Validate::isString($destination, 'destination');
        Validate::notNullOrEmpty($destination, 'destination');
        Validate::isString($source, 'source');
        Validate::notNullOrEmpty($source, 'source');

        $xmlElements = [
            Resources::XTAG_PRODUCTION => $destination,
            Resources::XTAG_SOURCE_DEPLOYMENT => $source,
        ];
        $body = $this->_createRequestXml($xmlElements, Resources::XTAG_SWAP);
        $context = new HttpCallContext();
        $context->setMethod(Resources::HTTP_POST);
        $context->setPath($this->_getHostedServicePath($name));
        $context->addStatusCode(Resources::STATUS_ACCEPTED);
        $context->setBody($body);
        $context->addHeader(
            Resources::CONTENT_TYPE,
            Resources::XML_CONTENT_TYPE
        );

        $response = $this->sendHttpContext($context);

        return AsynchronousOperationResult::create(HttpClient::getResponseHeaders($response));
    }