code: public Observable<ServiceResponse<EnqueueTrainingResponse>> trainVersionWithServiceResponseAsync(UUID appId, String versionId) {
          if (this.client.endpoint() == null) {
              throw new IllegalArgumentException("Parameter this.client.endpoint() is required and cannot be null.");
          }
          if (appId == null) {
              throw new IllegalArgumentException("Parameter appId is required and cannot be null.");
          }
          if (versionId == null) {
              throw new IllegalArgumentException("Parameter versionId is required and cannot be null.");
          }
          String parameterizedHost = Joiner.on(", ").join("{Endpoint}", this.client.endpoint());
          return service.trainVersion(appId, versionId, this.client.acceptLanguage(), parameterizedHost, this.client.userAgent())
              .flatMap(new Func1<Response<ResponseBody>, Observable<ServiceResponse<EnqueueTrainingResponse>>>() {
                  @Override
                  public Observable<ServiceResponse<EnqueueTrainingResponse>> call(Response<ResponseBody> response) {
                      try {
                          ServiceResponse<EnqueueTrainingResponse> clientResponse = trainVersionDelegate(response);
                          return Observable.just(clientResponse);
                      } catch (Throwable t) {
                          return Observable.error(t);
                      }
                  }
              });
      }
docs: Sends a training request for a version of a specified LUIS app. This POST request initiates a request asynchronously. To determine whether the training request is successful, submit a GET request to get training status. Note: The application version is not fully trained unless all the models (intents and entities) are trained successfully or are up to date. To verify training success, get the training status at least once after training is complete.
  
  @param appId The application ID.
  @param versionId The version ID.
  @throws IllegalArgumentException thrown if parameters fail the validation
  @return the observable to the EnqueueTrainingResponse object