@SdkInternalApi
    final DisassociateNatGatewayAddressResult executeDisassociateNatGatewayAddress(DisassociateNatGatewayAddressRequest disassociateNatGatewayAddressRequest) {

        ExecutionContext executionContext = createExecutionContext(disassociateNatGatewayAddressRequest);
        AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
        awsRequestMetrics.startEvent(Field.ClientExecuteTime);
        Request<DisassociateNatGatewayAddressRequest> request = null;
        Response<DisassociateNatGatewayAddressResult> response = null;

        try {
            awsRequestMetrics.startEvent(Field.RequestMarshallTime);
            try {
                request = new DisassociateNatGatewayAddressRequestMarshaller().marshall(super.beforeMarshalling(disassociateNatGatewayAddressRequest));
                // Binds the request metrics to the current request.
                request.setAWSRequestMetrics(awsRequestMetrics);
                request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
                request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
                request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
                request.addHandlerContext(HandlerContextKey.SERVICE_ID, "EC2");
                request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "DisassociateNatGatewayAddress");
                request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);

            } finally {
                awsRequestMetrics.endEvent(Field.RequestMarshallTime);
            }

            StaxResponseHandler<DisassociateNatGatewayAddressResult> responseHandler = new StaxResponseHandler<DisassociateNatGatewayAddressResult>(
                    new DisassociateNatGatewayAddressResultStaxUnmarshaller());

            response = invoke(request, responseHandler, executionContext);

            return response.getAwsResponse();

        } finally {

            endClientExecution(awsRequestMetrics, request, response);
        }
    }
<p>
Disassociates secondary Elastic IP addresses (EIPs) from a public NAT gateway. You cannot disassociate your
primary EIP. For more information, see <a
href="https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-edit-secondary">Edit
secondary IP address associations</a> in the <i>Amazon VPC User Guide</i>.
</p>
<p>
While disassociating is in progress, you cannot associate/disassociate additional EIPs while the connections are
being drained. You are, however, allowed to delete the NAT gateway.
</p>
<p>
An EIP is released only at the end of MaxDrainDurationSeconds. It stays associated and supports the existing
connections but does not support any new connections (new connections are distributed across the remaining
associated EIPs). As the existing connections drain out, the EIPs (and the corresponding private IP addresses
mapped to them) are released.
</p>

@param disassociateNatGatewayAddressRequest
@return Result of the DisassociateNatGatewayAddress operation returned by the service.
@sample AmazonEC2.DisassociateNatGatewayAddress
@see <a href="http://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateNatGatewayAddress"
     target="_top">AWS API Documentation</a>
aws-java-sdk-ec2/src/main/java/com/amazonaws/services/ec2/AmazonEC2Client.java