@SdkInternalApi
    final ReleaseAddressResult executeReleaseAddress(ReleaseAddressRequest releaseAddressRequest) {

        ExecutionContext executionContext = createExecutionContext(releaseAddressRequest);
        AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
        awsRequestMetrics.startEvent(Field.ClientExecuteTime);
        Request<ReleaseAddressRequest> request = null;
        Response<ReleaseAddressResult> response = null;

        try {
            awsRequestMetrics.startEvent(Field.RequestMarshallTime);
            try {
                request = new ReleaseAddressRequestMarshaller().marshall(super.beforeMarshalling(releaseAddressRequest));
                // 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, "ReleaseAddress");
                request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);

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

            StaxResponseHandler<ReleaseAddressResult> responseHandler = new StaxResponseHandler<ReleaseAddressResult>(
                    new ReleaseAddressResultStaxUnmarshaller());

            response = invoke(request, responseHandler, executionContext);

            return response.getAwsResponse();

        } finally {

            endClientExecution(awsRequestMetrics, request, response);
        }
    }
<p>
Releases the specified Elastic IP address.
</p>
<p>
[Default VPC] Releasing an Elastic IP address automatically disassociates it from any instance that it's
associated with. To disassociate an Elastic IP address without releasing it, use <a>DisassociateAddress</a>.
</p>
<p>
[Nondefault VPC] You must use <a>DisassociateAddress</a> to disassociate the Elastic IP address before you can
release it. Otherwise, Amazon EC2 returns an error (<code>InvalidIPAddress.InUse</code>).
</p>
<p>
After releasing an Elastic IP address, it is released to the IP address pool. Be sure to update your DNS records
and any servers or devices that communicate with the address. If you attempt to release an Elastic IP address
that you already released, you'll get an <code>AuthFailure</code> error if the address is already allocated to
another Amazon Web Services account.
</p>
<p>
After you release an Elastic IP address, you might be able to recover it. For more information, see
<a>AllocateAddress</a>.
</p>

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