text:
package fixtures.lro;

import com.microsoft.azure.CloudException;
import com.microsoft.rest.ServiceCall;
import com.microsoft.rest.ServiceCallback;
import com.microsoft.rest.ServiceResponse;
import com.microsoft.rest.ServiceResponseWithHeaders;
import fixtures.lro.models.LROsDelete202NoRetry204Headers;
import fixtures.lro.models.LROsDelete202Retry200Headers;
import fixtures.lro.models.LROsDeleteAsyncNoHeaderInRetryHeaders;
import fixtures.lro.models.LROsDeleteAsyncNoRetrySucceededHeaders;
import fixtures.lro.models.LROsDeleteAsyncRetrycanceledHeaders;
import fixtures.lro.models.LROsDeleteAsyncRetryFailedHeaders;
import fixtures.lro.models.LROsDeleteAsyncRetrySucceededHeaders;
import fixtures.lro.models.LROsDeleteNoHeaderInRetryHeaders;
import fixtures.lro.models.LROsDeleteProvisioning202Accepted200SucceededHeaders;
import fixtures.lro.models.LROsDeleteProvisioning202Deletingcanceled200Headers;
import fixtures.lro.models.LROsDeleteProvisioning202DeletingFailed200Headers;
import fixtures.lro.models.LROsPost202NoRetry204Headers;
import fixtures.lro.models.LROsPost202Retry200Headers;
import fixtures.lro.models.LROsPostAsyncNoRetrySucceededHeaders;
import fixtures.lro.models.LROsPostAsyncRetrycanceledHeaders;
import fixtures.lro.models.LROsPostAsyncRetryFailedHeaders;
import fixtures.lro.models.LROsPostAsyncRetrySucceededHeaders;
import fixtures.lro.models.LROsPutAsyncNoHeaderInRetryHeaders;
import fixtures.lro.models.LROsPutAsyncNoRetrycanceledHeaders;
import fixtures.lro.models.LROsPutAsyncNoRetrySucceededHeaders;
import fixtures.lro.models.LROsPutAsyncRetryFailedHeaders;
import fixtures.lro.models.LROsPutAsyncRetrySucceededHeaders;
import fixtures.lro.models.LROsPutNoHeaderInRetryHeaders;
import fixtures.lro.models.Product;
import fixtures.lro.models.Sku;
import fixtures.lro.models.SubProduct;
import java.io.IOException;
import rx.Observable;

/**
 * An instance of this class provides access to all the operations defined
 * in LROs.
 */
public interface LROs {
    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Succeeded'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> put200Succeeded() throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Succeeded'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> put200SucceededAsync(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> put200Succeeded(Product product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> put200SucceededAsync(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponse<Product>> put200SucceededAsync(Product product);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Succeeded'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> beginPut200Succeeded() throws CloudException, IOException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Succeeded'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPut200SucceededAsync(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> beginPut200Succeeded(Product product) throws CloudException, IOException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPut200SucceededAsync(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponse<Product>> beginPut200SucceededAsync(Product product);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that does not contain ProvisioningState='Succeeded'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> put200SucceededNoState() throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that does not contain ProvisioningState='Succeeded'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> put200SucceededNoStateAsync(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that does not contain ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> put200SucceededNoState(Product product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that does not contain ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> put200SucceededNoStateAsync(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that does not contain ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponse<Product>> put200SucceededNoStateAsync(Product product);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that does not contain ProvisioningState='Succeeded'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> beginPut200SucceededNoState() throws CloudException, IOException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that does not contain ProvisioningState='Succeeded'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPut200SucceededNoStateAsync(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that does not contain ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> beginPut200SucceededNoState(Product product) throws CloudException, IOException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that does not contain ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPut200SucceededNoStateAsync(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that does not contain ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponse<Product>> beginPut200SucceededNoStateAsync(Product product);

    /**
     * Long running put request, service returns a 202 to the initial request, with a location header that points to a polling URL that returns a 200 and an entity that doesn't contains ProvisioningState.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> put202Retry200() throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 202 to the initial request, with a location header that points to a polling URL that returns a 200 and an entity that doesn't contains ProvisioningState.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> put202Retry200Async(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 202 to the initial request, with a location header that points to a polling URL that returns a 200 and an entity that doesn't contains ProvisioningState.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> put202Retry200(Product product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 202 to the initial request, with a location header that points to a polling URL that returns a 200 and an entity that doesn't contains ProvisioningState.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> put202Retry200Async(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 202 to the initial request, with a location header that points to a polling URL that returns a 200 and an entity that doesn't contains ProvisioningState.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponse<Product>> put202Retry200Async(Product product);

    /**
     * Long running put request, service returns a 202 to the initial request, with a location header that points to a polling URL that returns a 200 and an entity that doesn't contains ProvisioningState.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> beginPut202Retry200() throws CloudException, IOException;

    /**
     * Long running put request, service returns a 202 to the initial request, with a location header that points to a polling URL that returns a 200 and an entity that doesn't contains ProvisioningState.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPut202Retry200Async(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 202 to the initial request, with a location header that points to a polling URL that returns a 200 and an entity that doesn't contains ProvisioningState.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> beginPut202Retry200(Product product) throws CloudException, IOException;

    /**
     * Long running put request, service returns a 202 to the initial request, with a location header that points to a polling URL that returns a 200 and an entity that doesn't contains ProvisioningState.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPut202Retry200Async(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 202 to the initial request, with a location header that points to a polling URL that returns a 200 and an entity that doesn't contains ProvisioningState.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponse<Product>> beginPut202Retry200Async(Product product);

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> put201CreatingSucceeded200() throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> put201CreatingSucceeded200Async(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> put201CreatingSucceeded200(Product product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> put201CreatingSucceeded200Async(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponse<Product>> put201CreatingSucceeded200Async(Product product);

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> beginPut201CreatingSucceeded200() throws CloudException, IOException;

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPut201CreatingSucceeded200Async(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> beginPut201CreatingSucceeded200(Product product) throws CloudException, IOException;

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPut201CreatingSucceeded200Async(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponse<Product>> beginPut201CreatingSucceeded200Async(Product product);

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Updating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> put200UpdatingSucceeded204() throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Updating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> put200UpdatingSucceeded204Async(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Updating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> put200UpdatingSucceeded204(Product product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Updating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> put200UpdatingSucceeded204Async(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Updating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponse<Product>> put200UpdatingSucceeded204Async(Product product);

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Updating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> beginPut200UpdatingSucceeded204() throws CloudException, IOException;

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Updating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPut200UpdatingSucceeded204Async(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Updating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> beginPut200UpdatingSucceeded204(Product product) throws CloudException, IOException;

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Updating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPut200UpdatingSucceeded204Async(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Updating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponse<Product>> beginPut200UpdatingSucceeded204Async(Product product);

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Created'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Failed'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> put201CreatingFailed200() throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Created'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Failed'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> put201CreatingFailed200Async(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Created'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Failed'.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> put201CreatingFailed200(Product product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Created'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Failed'.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> put201CreatingFailed200Async(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Created'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Failed'.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponse<Product>> put201CreatingFailed200Async(Product product);

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Created'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Failed'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> beginPut201CreatingFailed200() throws CloudException, IOException;

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Created'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Failed'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPut201CreatingFailed200Async(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Created'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Failed'.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> beginPut201CreatingFailed200(Product product) throws CloudException, IOException;

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Created'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Failed'.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPut201CreatingFailed200Async(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Created'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Failed'.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponse<Product>> beginPut201CreatingFailed200Async(Product product);

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Canceled'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> put200Acceptedcanceled200() throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Canceled'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> put200Acceptedcanceled200Async(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Canceled'.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> put200Acceptedcanceled200(Product product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Canceled'.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> put200Acceptedcanceled200Async(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Canceled'.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponse<Product>> put200Acceptedcanceled200Async(Product product);

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Canceled'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> beginPut200Acceptedcanceled200() throws CloudException, IOException;

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Canceled'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPut200Acceptedcanceled200Async(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Canceled'.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Product> beginPut200Acceptedcanceled200(Product product) throws CloudException, IOException;

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Canceled'.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPut200Acceptedcanceled200Async(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 201 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Canceled'.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponse<Product>> beginPut200Acceptedcanceled200Async(Product product);

    /**
     * Long running put request, service returns a 202 to the initial request with location header. Subsequent calls to operation status do not contain location header.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutNoHeaderInRetryHeaders> putNoHeaderInRetry() throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 202 to the initial request with location header. Subsequent calls to operation status do not contain location header.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> putNoHeaderInRetryAsync(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 202 to the initial request with location header. Subsequent calls to operation status do not contain location header.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutNoHeaderInRetryHeaders> putNoHeaderInRetry(Product product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 202 to the initial request with location header. Subsequent calls to operation status do not contain location header.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> putNoHeaderInRetryAsync(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 202 to the initial request with location header. Subsequent calls to operation status do not contain location header.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsPutNoHeaderInRetryHeaders>> putNoHeaderInRetryAsync(Product product);

    /**
     * Long running put request, service returns a 202 to the initial request with location header. Subsequent calls to operation status do not contain location header.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutNoHeaderInRetryHeaders> beginPutNoHeaderInRetry() throws CloudException, IOException;

    /**
     * Long running put request, service returns a 202 to the initial request with location header. Subsequent calls to operation status do not contain location header.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPutNoHeaderInRetryAsync(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 202 to the initial request with location header. Subsequent calls to operation status do not contain location header.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutNoHeaderInRetryHeaders> beginPutNoHeaderInRetry(Product product) throws CloudException, IOException;

    /**
     * Long running put request, service returns a 202 to the initial request with location header. Subsequent calls to operation status do not contain location header.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPutNoHeaderInRetryAsync(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 202 to the initial request with location header. Subsequent calls to operation status do not contain location header.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsPutNoHeaderInRetryHeaders>> beginPutNoHeaderInRetryAsync(Product product);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutAsyncRetrySucceededHeaders> putAsyncRetrySucceeded() throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> putAsyncRetrySucceededAsync(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutAsyncRetrySucceededHeaders> putAsyncRetrySucceeded(Product product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> putAsyncRetrySucceededAsync(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsPutAsyncRetrySucceededHeaders>> putAsyncRetrySucceededAsync(Product product);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutAsyncRetrySucceededHeaders> beginPutAsyncRetrySucceeded() throws CloudException, IOException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPutAsyncRetrySucceededAsync(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutAsyncRetrySucceededHeaders> beginPutAsyncRetrySucceeded(Product product) throws CloudException, IOException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPutAsyncRetrySucceededAsync(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsPutAsyncRetrySucceededHeaders>> beginPutAsyncRetrySucceededAsync(Product product);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutAsyncNoRetrySucceededHeaders> putAsyncNoRetrySucceeded() throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> putAsyncNoRetrySucceededAsync(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutAsyncNoRetrySucceededHeaders> putAsyncNoRetrySucceeded(Product product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> putAsyncNoRetrySucceededAsync(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsPutAsyncNoRetrySucceededHeaders>> putAsyncNoRetrySucceededAsync(Product product);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutAsyncNoRetrySucceededHeaders> beginPutAsyncNoRetrySucceeded() throws CloudException, IOException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPutAsyncNoRetrySucceededAsync(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutAsyncNoRetrySucceededHeaders> beginPutAsyncNoRetrySucceeded(Product product) throws CloudException, IOException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPutAsyncNoRetrySucceededAsync(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsPutAsyncNoRetrySucceededHeaders>> beginPutAsyncNoRetrySucceededAsync(Product product);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutAsyncRetryFailedHeaders> putAsyncRetryFailed() throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> putAsyncRetryFailedAsync(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutAsyncRetryFailedHeaders> putAsyncRetryFailed(Product product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> putAsyncRetryFailedAsync(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsPutAsyncRetryFailedHeaders>> putAsyncRetryFailedAsync(Product product);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutAsyncRetryFailedHeaders> beginPutAsyncRetryFailed() throws CloudException, IOException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPutAsyncRetryFailedAsync(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutAsyncRetryFailedHeaders> beginPutAsyncRetryFailed(Product product) throws CloudException, IOException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPutAsyncRetryFailedAsync(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsPutAsyncRetryFailedHeaders>> beginPutAsyncRetryFailedAsync(Product product);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutAsyncNoRetrycanceledHeaders> putAsyncNoRetrycanceled() throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> putAsyncNoRetrycanceledAsync(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutAsyncNoRetrycanceledHeaders> putAsyncNoRetrycanceled(Product product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> putAsyncNoRetrycanceledAsync(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsPutAsyncNoRetrycanceledHeaders>> putAsyncNoRetrycanceledAsync(Product product);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutAsyncNoRetrycanceledHeaders> beginPutAsyncNoRetrycanceled() throws CloudException, IOException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPutAsyncNoRetrycanceledAsync(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutAsyncNoRetrycanceledHeaders> beginPutAsyncNoRetrycanceled(Product product) throws CloudException, IOException;

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPutAsyncNoRetrycanceledAsync(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 200 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsPutAsyncNoRetrycanceledHeaders>> beginPutAsyncNoRetrycanceledAsync(Product product);

    /**
     * Long running put request, service returns a 202 to the initial request with Azure-AsyncOperation header. Subsequent calls to operation status do not contain Azure-AsyncOperation header.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutAsyncNoHeaderInRetryHeaders> putAsyncNoHeaderInRetry() throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 202 to the initial request with Azure-AsyncOperation header. Subsequent calls to operation status do not contain Azure-AsyncOperation header.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> putAsyncNoHeaderInRetryAsync(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 202 to the initial request with Azure-AsyncOperation header. Subsequent calls to operation status do not contain Azure-AsyncOperation header.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutAsyncNoHeaderInRetryHeaders> putAsyncNoHeaderInRetry(Product product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request, service returns a 202 to the initial request with Azure-AsyncOperation header. Subsequent calls to operation status do not contain Azure-AsyncOperation header.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> putAsyncNoHeaderInRetryAsync(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 202 to the initial request with Azure-AsyncOperation header. Subsequent calls to operation status do not contain Azure-AsyncOperation header.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsPutAsyncNoHeaderInRetryHeaders>> putAsyncNoHeaderInRetryAsync(Product product);

    /**
     * Long running put request, service returns a 202 to the initial request with Azure-AsyncOperation header. Subsequent calls to operation status do not contain Azure-AsyncOperation header.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutAsyncNoHeaderInRetryHeaders> beginPutAsyncNoHeaderInRetry() throws CloudException, IOException;

    /**
     * Long running put request, service returns a 202 to the initial request with Azure-AsyncOperation header. Subsequent calls to operation status do not contain Azure-AsyncOperation header.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPutAsyncNoHeaderInRetryAsync(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running put request, service returns a 202 to the initial request with Azure-AsyncOperation header. Subsequent calls to operation status do not contain Azure-AsyncOperation header.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPutAsyncNoHeaderInRetryHeaders> beginPutAsyncNoHeaderInRetry(Product product) throws CloudException, IOException;

    /**
     * Long running put request, service returns a 202 to the initial request with Azure-AsyncOperation header. Subsequent calls to operation status do not contain Azure-AsyncOperation header.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPutAsyncNoHeaderInRetryAsync(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running put request, service returns a 202 to the initial request with Azure-AsyncOperation header. Subsequent calls to operation status do not contain Azure-AsyncOperation header.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsPutAsyncNoHeaderInRetryHeaders>> beginPutAsyncNoHeaderInRetryAsync(Product product);

    /**
     * Long running put request with non resource.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Sku object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Sku> putNonResource() throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request with non resource.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Sku> putNonResourceAsync(final ServiceCallback<Sku> serviceCallback);
    /**
     * Long running put request with non resource.
     *
     * @param sku sku to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Sku object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Sku> putNonResource(Sku sku) throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request with non resource.
     *
     * @param sku sku to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Sku> putNonResourceAsync(Sku sku, final ServiceCallback<Sku> serviceCallback);

    /**
     * Long running put request with non resource.
     *
     * @param sku sku to put
     * @return the observable to the Sku object
     */
    Observable<ServiceResponse<Sku>> putNonResourceAsync(Sku sku);

    /**
     * Long running put request with non resource.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Sku object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Sku> beginPutNonResource() throws CloudException, IOException;

    /**
     * Long running put request with non resource.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Sku> beginPutNonResourceAsync(final ServiceCallback<Sku> serviceCallback);
    /**
     * Long running put request with non resource.
     *
     * @param sku sku to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Sku object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Sku> beginPutNonResource(Sku sku) throws CloudException, IOException;

    /**
     * Long running put request with non resource.
     *
     * @param sku sku to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Sku> beginPutNonResourceAsync(Sku sku, final ServiceCallback<Sku> serviceCallback);

    /**
     * Long running put request with non resource.
     *
     * @param sku sku to put
     * @return the observable to the Sku object
     */
    Observable<ServiceResponse<Sku>> beginPutNonResourceAsync(Sku sku);

    /**
     * Long running put request with non resource.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Sku object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Sku> putAsyncNonResource() throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request with non resource.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Sku> putAsyncNonResourceAsync(final ServiceCallback<Sku> serviceCallback);
    /**
     * Long running put request with non resource.
     *
     * @param sku Sku to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Sku object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Sku> putAsyncNonResource(Sku sku) throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request with non resource.
     *
     * @param sku Sku to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Sku> putAsyncNonResourceAsync(Sku sku, final ServiceCallback<Sku> serviceCallback);

    /**
     * Long running put request with non resource.
     *
     * @param sku Sku to put
     * @return the observable to the Sku object
     */
    Observable<ServiceResponse<Sku>> putAsyncNonResourceAsync(Sku sku);

    /**
     * Long running put request with non resource.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Sku object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Sku> beginPutAsyncNonResource() throws CloudException, IOException;

    /**
     * Long running put request with non resource.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Sku> beginPutAsyncNonResourceAsync(final ServiceCallback<Sku> serviceCallback);
    /**
     * Long running put request with non resource.
     *
     * @param sku Sku to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Sku object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Sku> beginPutAsyncNonResource(Sku sku) throws CloudException, IOException;

    /**
     * Long running put request with non resource.
     *
     * @param sku Sku to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Sku> beginPutAsyncNonResourceAsync(Sku sku, final ServiceCallback<Sku> serviceCallback);

    /**
     * Long running put request with non resource.
     *
     * @param sku Sku to put
     * @return the observable to the Sku object
     */
    Observable<ServiceResponse<Sku>> beginPutAsyncNonResourceAsync(Sku sku);

    /**
     * Long running put request with sub resource.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the SubProduct object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<SubProduct> putSubResource() throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request with sub resource.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<SubProduct> putSubResourceAsync(final ServiceCallback<SubProduct> serviceCallback);
    /**
     * Long running put request with sub resource.
     *
     * @param product Sub Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the SubProduct object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<SubProduct> putSubResource(SubProduct product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request with sub resource.
     *
     * @param product Sub Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<SubProduct> putSubResourceAsync(SubProduct product, final ServiceCallback<SubProduct> serviceCallback);

    /**
     * Long running put request with sub resource.
     *
     * @param product Sub Product to put
     * @return the observable to the SubProduct object
     */
    Observable<ServiceResponse<SubProduct>> putSubResourceAsync(SubProduct product);

    /**
     * Long running put request with sub resource.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the SubProduct object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<SubProduct> beginPutSubResource() throws CloudException, IOException;

    /**
     * Long running put request with sub resource.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<SubProduct> beginPutSubResourceAsync(final ServiceCallback<SubProduct> serviceCallback);
    /**
     * Long running put request with sub resource.
     *
     * @param product Sub Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the SubProduct object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<SubProduct> beginPutSubResource(SubProduct product) throws CloudException, IOException;

    /**
     * Long running put request with sub resource.
     *
     * @param product Sub Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<SubProduct> beginPutSubResourceAsync(SubProduct product, final ServiceCallback<SubProduct> serviceCallback);

    /**
     * Long running put request with sub resource.
     *
     * @param product Sub Product to put
     * @return the observable to the SubProduct object
     */
    Observable<ServiceResponse<SubProduct>> beginPutSubResourceAsync(SubProduct product);

    /**
     * Long running put request with sub resource.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the SubProduct object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<SubProduct> putAsyncSubResource() throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request with sub resource.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<SubProduct> putAsyncSubResourceAsync(final ServiceCallback<SubProduct> serviceCallback);
    /**
     * Long running put request with sub resource.
     *
     * @param product Sub Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the SubProduct object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<SubProduct> putAsyncSubResource(SubProduct product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running put request with sub resource.
     *
     * @param product Sub Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<SubProduct> putAsyncSubResourceAsync(SubProduct product, final ServiceCallback<SubProduct> serviceCallback);

    /**
     * Long running put request with sub resource.
     *
     * @param product Sub Product to put
     * @return the observable to the SubProduct object
     */
    Observable<ServiceResponse<SubProduct>> putAsyncSubResourceAsync(SubProduct product);

    /**
     * Long running put request with sub resource.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the SubProduct object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<SubProduct> beginPutAsyncSubResource() throws CloudException, IOException;

    /**
     * Long running put request with sub resource.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<SubProduct> beginPutAsyncSubResourceAsync(final ServiceCallback<SubProduct> serviceCallback);
    /**
     * Long running put request with sub resource.
     *
     * @param product Sub Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the SubProduct object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<SubProduct> beginPutAsyncSubResource(SubProduct product) throws CloudException, IOException;

    /**
     * Long running put request with sub resource.
     *
     * @param product Sub Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<SubProduct> beginPutAsyncSubResourceAsync(SubProduct product, final ServiceCallback<SubProduct> serviceCallback);

    /**
     * Long running put request with sub resource.
     *
     * @param product Sub Product to put
     * @return the observable to the SubProduct object
     */
    Observable<ServiceResponse<SubProduct>> beginPutAsyncSubResourceAsync(SubProduct product);

    /**
     * Long running delete request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Accepted'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsDeleteProvisioning202Accepted200SucceededHeaders> deleteProvisioning202Accepted200Succeeded() throws CloudException, IOException, InterruptedException;

    /**
     * Long running delete request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Accepted'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> deleteProvisioning202Accepted200SucceededAsync(final ServiceCallback<Product> serviceCallback);

    /**
     * Long running delete request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Accepted'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsDeleteProvisioning202Accepted200SucceededHeaders>> deleteProvisioning202Accepted200SucceededAsync();

    /**
     * Long running delete request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Accepted'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsDeleteProvisioning202Accepted200SucceededHeaders> beginDeleteProvisioning202Accepted200Succeeded() throws CloudException, IOException;

    /**
     * Long running delete request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Accepted'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginDeleteProvisioning202Accepted200SucceededAsync(final ServiceCallback<Product> serviceCallback);

    /**
     * Long running delete request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Accepted'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsDeleteProvisioning202Accepted200SucceededHeaders>> beginDeleteProvisioning202Accepted200SucceededAsync();

    /**
     * Long running delete request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Failed'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsDeleteProvisioning202DeletingFailed200Headers> deleteProvisioning202DeletingFailed200() throws CloudException, IOException, InterruptedException;

    /**
     * Long running delete request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Failed'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> deleteProvisioning202DeletingFailed200Async(final ServiceCallback<Product> serviceCallback);

    /**
     * Long running delete request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Failed'.
     *
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsDeleteProvisioning202DeletingFailed200Headers>> deleteProvisioning202DeletingFailed200Async();

    /**
     * Long running delete request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Failed'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsDeleteProvisioning202DeletingFailed200Headers> beginDeleteProvisioning202DeletingFailed200() throws CloudException, IOException;

    /**
     * Long running delete request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Failed'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginDeleteProvisioning202DeletingFailed200Async(final ServiceCallback<Product> serviceCallback);

    /**
     * Long running delete request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Failed'.
     *
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsDeleteProvisioning202DeletingFailed200Headers>> beginDeleteProvisioning202DeletingFailed200Async();

    /**
     * Long running delete request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Canceled'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsDeleteProvisioning202Deletingcanceled200Headers> deleteProvisioning202Deletingcanceled200() throws CloudException, IOException, InterruptedException;

    /**
     * Long running delete request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Canceled'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> deleteProvisioning202Deletingcanceled200Async(final ServiceCallback<Product> serviceCallback);

    /**
     * Long running delete request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Canceled'.
     *
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsDeleteProvisioning202Deletingcanceled200Headers>> deleteProvisioning202Deletingcanceled200Async();

    /**
     * Long running delete request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Canceled'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsDeleteProvisioning202Deletingcanceled200Headers> beginDeleteProvisioning202Deletingcanceled200() throws CloudException, IOException;

    /**
     * Long running delete request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Canceled'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginDeleteProvisioning202Deletingcanceled200Async(final ServiceCallback<Product> serviceCallback);

    /**
     * Long running delete request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'.  Polls return this value until the last poll returns a '200' with ProvisioningState='Canceled'.
     *
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsDeleteProvisioning202Deletingcanceled200Headers>> beginDeleteProvisioning202Deletingcanceled200Async();

    /**
     * Long running delete succeeds and returns right away.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the {@link ServiceResponse} object if successful.
     */
    ServiceResponse<Void> delete204Succeeded() throws CloudException, IOException, InterruptedException;

    /**
     * Long running delete succeeds and returns right away.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> delete204SucceededAsync(final ServiceCallback<Void> serviceCallback);

    /**
     * Long running delete succeeds and returns right away.
     *
     * @return the {@link ServiceResponse} object if successful.
     */
    Observable<ServiceResponse<Void>> delete204SucceededAsync();

    /**
     * Long running delete succeeds and returns right away.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the {@link ServiceResponse} object if successful.
     */
    ServiceResponse<Void> beginDelete204Succeeded() throws CloudException, IOException;

    /**
     * Long running delete succeeds and returns right away.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> beginDelete204SucceededAsync(final ServiceCallback<Void> serviceCallback);

    /**
     * Long running delete succeeds and returns right away.
     *
     * @return the {@link ServiceResponse} object if successful.
     */
    Observable<ServiceResponse<Void>> beginDelete204SucceededAsync();

    /**
     * Long running delete request, service returns a 202 to the initial request. Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsDelete202Retry200Headers> delete202Retry200() throws CloudException, IOException, InterruptedException;

    /**
     * Long running delete request, service returns a 202 to the initial request. Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> delete202Retry200Async(final ServiceCallback<Product> serviceCallback);

    /**
     * Long running delete request, service returns a 202 to the initial request. Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsDelete202Retry200Headers>> delete202Retry200Async();

    /**
     * Long running delete request, service returns a 202 to the initial request. Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsDelete202Retry200Headers> beginDelete202Retry200() throws CloudException, IOException;

    /**
     * Long running delete request, service returns a 202 to the initial request. Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginDelete202Retry200Async(final ServiceCallback<Product> serviceCallback);

    /**
     * Long running delete request, service returns a 202 to the initial request. Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsDelete202Retry200Headers>> beginDelete202Retry200Async();

    /**
     * Long running delete request, service returns a 202 to the initial request. Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsDelete202NoRetry204Headers> delete202NoRetry204() throws CloudException, IOException, InterruptedException;

    /**
     * Long running delete request, service returns a 202 to the initial request. Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> delete202NoRetry204Async(final ServiceCallback<Product> serviceCallback);

    /**
     * Long running delete request, service returns a 202 to the initial request. Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsDelete202NoRetry204Headers>> delete202NoRetry204Async();

    /**
     * Long running delete request, service returns a 202 to the initial request. Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsDelete202NoRetry204Headers> beginDelete202NoRetry204() throws CloudException, IOException;

    /**
     * Long running delete request, service returns a 202 to the initial request. Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginDelete202NoRetry204Async(final ServiceCallback<Product> serviceCallback);

    /**
     * Long running delete request, service returns a 202 to the initial request. Polls return this value until the last poll returns a '200' with ProvisioningState='Succeeded'.
     *
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsDelete202NoRetry204Headers>> beginDelete202NoRetry204Async();

    /**
     * Long running delete request, service returns a location header in the initial request. Subsequent calls to operation status do not contain location header.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsDeleteNoHeaderInRetryHeaders> deleteNoHeaderInRetry() throws CloudException, IOException, InterruptedException;

    /**
     * Long running delete request, service returns a location header in the initial request. Subsequent calls to operation status do not contain location header.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> deleteNoHeaderInRetryAsync(final ServiceCallback<Void> serviceCallback);

    /**
     * Long running delete request, service returns a location header in the initial request. Subsequent calls to operation status do not contain location header.
     *
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, LROsDeleteNoHeaderInRetryHeaders>> deleteNoHeaderInRetryAsync();

    /**
     * Long running delete request, service returns a location header in the initial request. Subsequent calls to operation status do not contain location header.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsDeleteNoHeaderInRetryHeaders> beginDeleteNoHeaderInRetry() throws CloudException, IOException;

    /**
     * Long running delete request, service returns a location header in the initial request. Subsequent calls to operation status do not contain location header.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> beginDeleteNoHeaderInRetryAsync(final ServiceCallback<Void> serviceCallback);

    /**
     * Long running delete request, service returns a location header in the initial request. Subsequent calls to operation status do not contain location header.
     *
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, LROsDeleteNoHeaderInRetryHeaders>> beginDeleteNoHeaderInRetryAsync();

    /**
     * Long running delete request, service returns an Azure-AsyncOperation header in the initial request. Subsequent calls to operation status do not contain Azure-AsyncOperation header.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsDeleteAsyncNoHeaderInRetryHeaders> deleteAsyncNoHeaderInRetry() throws CloudException, IOException, InterruptedException;

    /**
     * Long running delete request, service returns an Azure-AsyncOperation header in the initial request. Subsequent calls to operation status do not contain Azure-AsyncOperation header.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> deleteAsyncNoHeaderInRetryAsync(final ServiceCallback<Void> serviceCallback);

    /**
     * Long running delete request, service returns an Azure-AsyncOperation header in the initial request. Subsequent calls to operation status do not contain Azure-AsyncOperation header.
     *
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, LROsDeleteAsyncNoHeaderInRetryHeaders>> deleteAsyncNoHeaderInRetryAsync();

    /**
     * Long running delete request, service returns an Azure-AsyncOperation header in the initial request. Subsequent calls to operation status do not contain Azure-AsyncOperation header.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsDeleteAsyncNoHeaderInRetryHeaders> beginDeleteAsyncNoHeaderInRetry() throws CloudException, IOException;

    /**
     * Long running delete request, service returns an Azure-AsyncOperation header in the initial request. Subsequent calls to operation status do not contain Azure-AsyncOperation header.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> beginDeleteAsyncNoHeaderInRetryAsync(final ServiceCallback<Void> serviceCallback);

    /**
     * Long running delete request, service returns an Azure-AsyncOperation header in the initial request. Subsequent calls to operation status do not contain Azure-AsyncOperation header.
     *
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, LROsDeleteAsyncNoHeaderInRetryHeaders>> beginDeleteAsyncNoHeaderInRetryAsync();

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsDeleteAsyncRetrySucceededHeaders> deleteAsyncRetrySucceeded() throws CloudException, IOException, InterruptedException;

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> deleteAsyncRetrySucceededAsync(final ServiceCallback<Void> serviceCallback);

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, LROsDeleteAsyncRetrySucceededHeaders>> deleteAsyncRetrySucceededAsync();

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsDeleteAsyncRetrySucceededHeaders> beginDeleteAsyncRetrySucceeded() throws CloudException, IOException;

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> beginDeleteAsyncRetrySucceededAsync(final ServiceCallback<Void> serviceCallback);

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, LROsDeleteAsyncRetrySucceededHeaders>> beginDeleteAsyncRetrySucceededAsync();

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsDeleteAsyncNoRetrySucceededHeaders> deleteAsyncNoRetrySucceeded() throws CloudException, IOException, InterruptedException;

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> deleteAsyncNoRetrySucceededAsync(final ServiceCallback<Void> serviceCallback);

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, LROsDeleteAsyncNoRetrySucceededHeaders>> deleteAsyncNoRetrySucceededAsync();

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsDeleteAsyncNoRetrySucceededHeaders> beginDeleteAsyncNoRetrySucceeded() throws CloudException, IOException;

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> beginDeleteAsyncNoRetrySucceededAsync(final ServiceCallback<Void> serviceCallback);

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, LROsDeleteAsyncNoRetrySucceededHeaders>> beginDeleteAsyncNoRetrySucceededAsync();

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsDeleteAsyncRetryFailedHeaders> deleteAsyncRetryFailed() throws CloudException, IOException, InterruptedException;

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> deleteAsyncRetryFailedAsync(final ServiceCallback<Void> serviceCallback);

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, LROsDeleteAsyncRetryFailedHeaders>> deleteAsyncRetryFailedAsync();

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsDeleteAsyncRetryFailedHeaders> beginDeleteAsyncRetryFailed() throws CloudException, IOException;

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> beginDeleteAsyncRetryFailedAsync(final ServiceCallback<Void> serviceCallback);

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, LROsDeleteAsyncRetryFailedHeaders>> beginDeleteAsyncRetryFailedAsync();

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsDeleteAsyncRetrycanceledHeaders> deleteAsyncRetrycanceled() throws CloudException, IOException, InterruptedException;

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> deleteAsyncRetrycanceledAsync(final ServiceCallback<Void> serviceCallback);

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, LROsDeleteAsyncRetrycanceledHeaders>> deleteAsyncRetrycanceledAsync();

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsDeleteAsyncRetrycanceledHeaders> beginDeleteAsyncRetrycanceled() throws CloudException, IOException;

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> beginDeleteAsyncRetrycanceledAsync(final ServiceCallback<Void> serviceCallback);

    /**
     * Long running delete request, service returns a 202 to the initial request. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, LROsDeleteAsyncRetrycanceledHeaders>> beginDeleteAsyncRetrycanceledAsync();

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' header. Poll returns a 200 with a response body after success.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Sku object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Sku> post200WithPayload() throws CloudException, IOException, InterruptedException;

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' header. Poll returns a 200 with a response body after success.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Sku> post200WithPayloadAsync(final ServiceCallback<Sku> serviceCallback);

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' header. Poll returns a 200 with a response body after success.
     *
     * @return the observable to the Sku object
     */
    Observable<ServiceResponse<Sku>> post200WithPayloadAsync();

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' header. Poll returns a 200 with a response body after success.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Sku object wrapped in {@link ServiceResponse} if successful.
     */
    ServiceResponse<Sku> beginPost200WithPayload() throws CloudException, IOException;

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' header. Poll returns a 200 with a response body after success.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Sku> beginPost200WithPayloadAsync(final ServiceCallback<Sku> serviceCallback);

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' header. Poll returns a 200 with a response body after success.
     *
     * @return the observable to the Sku object
     */
    Observable<ServiceResponse<Sku>> beginPost200WithPayloadAsync();

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' and 'Retry-After' headers, Polls return a 200 with a response body after success.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsPost202Retry200Headers> post202Retry200() throws CloudException, IOException, InterruptedException;

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' and 'Retry-After' headers, Polls return a 200 with a response body after success.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> post202Retry200Async(final ServiceCallback<Void> serviceCallback);
    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' and 'Retry-After' headers, Polls return a 200 with a response body after success.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsPost202Retry200Headers> post202Retry200(Product product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' and 'Retry-After' headers, Polls return a 200 with a response body after success.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> post202Retry200Async(Product product, final ServiceCallback<Void> serviceCallback);

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' and 'Retry-After' headers, Polls return a 200 with a response body after success.
     *
     * @param product Product to put
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, LROsPost202Retry200Headers>> post202Retry200Async(Product product);

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' and 'Retry-After' headers, Polls return a 200 with a response body after success.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsPost202Retry200Headers> beginPost202Retry200() throws CloudException, IOException;

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' and 'Retry-After' headers, Polls return a 200 with a response body after success.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> beginPost202Retry200Async(final ServiceCallback<Void> serviceCallback);
    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' and 'Retry-After' headers, Polls return a 200 with a response body after success.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsPost202Retry200Headers> beginPost202Retry200(Product product) throws CloudException, IOException;

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' and 'Retry-After' headers, Polls return a 200 with a response body after success.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> beginPost202Retry200Async(Product product, final ServiceCallback<Void> serviceCallback);

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' and 'Retry-After' headers, Polls return a 200 with a response body after success.
     *
     * @param product Product to put
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, LROsPost202Retry200Headers>> beginPost202Retry200Async(Product product);

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' header, 204 with noresponse body after success.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPost202NoRetry204Headers> post202NoRetry204() throws CloudException, IOException, InterruptedException;

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' header, 204 with noresponse body after success.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> post202NoRetry204Async(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' header, 204 with noresponse body after success.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPost202NoRetry204Headers> post202NoRetry204(Product product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' header, 204 with noresponse body after success.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> post202NoRetry204Async(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' header, 204 with noresponse body after success.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsPost202NoRetry204Headers>> post202NoRetry204Async(Product product);

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' header, 204 with noresponse body after success.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPost202NoRetry204Headers> beginPost202NoRetry204() throws CloudException, IOException;

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' header, 204 with noresponse body after success.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPost202NoRetry204Async(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' header, 204 with noresponse body after success.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPost202NoRetry204Headers> beginPost202NoRetry204(Product product) throws CloudException, IOException;

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' header, 204 with noresponse body after success.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPost202NoRetry204Async(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running post request, service returns a 202 to the initial request, with 'Location' header, 204 with noresponse body after success.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsPost202NoRetry204Headers>> beginPost202NoRetry204Async(Product product);

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPostAsyncRetrySucceededHeaders> postAsyncRetrySucceeded() throws CloudException, IOException, InterruptedException;

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> postAsyncRetrySucceededAsync(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPostAsyncRetrySucceededHeaders> postAsyncRetrySucceeded(Product product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> postAsyncRetrySucceededAsync(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsPostAsyncRetrySucceededHeaders>> postAsyncRetrySucceededAsync(Product product);

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPostAsyncRetrySucceededHeaders> beginPostAsyncRetrySucceeded() throws CloudException, IOException;

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPostAsyncRetrySucceededAsync(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPostAsyncRetrySucceededHeaders> beginPostAsyncRetrySucceeded(Product product) throws CloudException, IOException;

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPostAsyncRetrySucceededAsync(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsPostAsyncRetrySucceededHeaders>> beginPostAsyncRetrySucceededAsync(Product product);

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPostAsyncNoRetrySucceededHeaders> postAsyncNoRetrySucceeded() throws CloudException, IOException, InterruptedException;

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> postAsyncNoRetrySucceededAsync(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPostAsyncNoRetrySucceededHeaders> postAsyncNoRetrySucceeded(Product product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> postAsyncNoRetrySucceededAsync(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsPostAsyncNoRetrySucceededHeaders>> postAsyncNoRetrySucceededAsync(Product product);

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPostAsyncNoRetrySucceededHeaders> beginPostAsyncNoRetrySucceeded() throws CloudException, IOException;

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPostAsyncNoRetrySucceededAsync(final ServiceCallback<Product> serviceCallback);
    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the Product object wrapped in {@link ServiceResponseWithHeaders} if successful.
     */
    ServiceResponseWithHeaders<Product, LROsPostAsyncNoRetrySucceededHeaders> beginPostAsyncNoRetrySucceeded(Product product) throws CloudException, IOException;

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Product> beginPostAsyncNoRetrySucceededAsync(Product product, final ServiceCallback<Product> serviceCallback);

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @return the observable to the Product object
     */
    Observable<ServiceResponseWithHeaders<Product, LROsPostAsyncNoRetrySucceededHeaders>> beginPostAsyncNoRetrySucceededAsync(Product product);

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsPostAsyncRetryFailedHeaders> postAsyncRetryFailed() throws CloudException, IOException, InterruptedException;

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> postAsyncRetryFailedAsync(final ServiceCallback<Void> serviceCallback);
    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsPostAsyncRetryFailedHeaders> postAsyncRetryFailed(Product product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> postAsyncRetryFailedAsync(Product product, final ServiceCallback<Void> serviceCallback);

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, LROsPostAsyncRetryFailedHeaders>> postAsyncRetryFailedAsync(Product product);

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsPostAsyncRetryFailedHeaders> beginPostAsyncRetryFailed() throws CloudException, IOException;

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> beginPostAsyncRetryFailedAsync(final ServiceCallback<Void> serviceCallback);
    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsPostAsyncRetryFailedHeaders> beginPostAsyncRetryFailed(Product product) throws CloudException, IOException;

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> beginPostAsyncRetryFailedAsync(Product product, final ServiceCallback<Void> serviceCallback);

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, LROsPostAsyncRetryFailedHeaders>> beginPostAsyncRetryFailedAsync(Product product);

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsPostAsyncRetrycanceledHeaders> postAsyncRetrycanceled() throws CloudException, IOException, InterruptedException;

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> postAsyncRetrycanceledAsync(final ServiceCallback<Void> serviceCallback);
    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @throws InterruptedException exception thrown when long running operation is interrupted
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsPostAsyncRetrycanceledHeaders> postAsyncRetrycanceled(Product product) throws CloudException, IOException, InterruptedException;

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> postAsyncRetrycanceledAsync(Product product, final ServiceCallback<Void> serviceCallback);

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, LROsPostAsyncRetrycanceledHeaders>> postAsyncRetrycanceledAsync(Product product);

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsPostAsyncRetrycanceledHeaders> beginPostAsyncRetrycanceled() throws CloudException, IOException;

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> beginPostAsyncRetrycanceledAsync(final ServiceCallback<Void> serviceCallback);
    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @throws CloudException exception thrown from REST call
     * @throws IOException exception thrown from serialization/deserialization
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    ServiceResponseWithHeaders<Void, LROsPostAsyncRetrycanceledHeaders> beginPostAsyncRetrycanceled(Product product) throws CloudException, IOException;

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @return the {@link ServiceCall} object
     */
    ServiceCall<Void> beginPostAsyncRetrycanceledAsync(Product product, final ServiceCallback<Void> serviceCallback);

    /**
     * Long running post request, service returns a 202 to the initial request, with an entity that contains ProvisioningState='Creating'. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
     *
     * @param product Product to put
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, LROsPostAsyncRetrycanceledHeaders>> beginPostAsyncRetrycanceledAsync(Product product);

}