code: public Observable<ServiceResponse<TagResult>> tagImageInStreamWithServiceResponseAsync(byte[] image, String language) {
          if (this.client.endpoint() == null) {
              throw new IllegalArgumentException("Parameter this.client.endpoint() is required and cannot be null.");
          }
          if (image == null) {
              throw new IllegalArgumentException("Parameter image is required and cannot be null.");
          }
          String parameterizedHost = Joiner.on(", ").join("{Endpoint}", this.client.endpoint());
          RequestBody imageConverted = RequestBody.create(MediaType.parse("application/octet-stream"), image);
          return service.tagImageInStream(language, imageConverted, this.client.acceptLanguage(), parameterizedHost, this.client.userAgent())
              .flatMap(new Func1<Response<ResponseBody>, Observable<ServiceResponse<TagResult>>>() {
                  @Override
                  public Observable<ServiceResponse<TagResult>> call(Response<ResponseBody> response) {
                      try {
                          ServiceResponse<TagResult> clientResponse = tagImageInStreamDelegate(response);
                          return Observable.just(clientResponse);
                      } catch (Throwable t) {
                          return Observable.error(t);
                      }
                  }
              });
      }
docs: This operation generates a list of words, or tags, that are relevant to the content of the supplied image. The Computer Vision API can return tags based on objects, living beings, scenery or actions found in images. Unlike categories, tags are not organized according to a hierarchical classification system, but correspond to image content. Tags may contain hints to avoid ambiguity or provide context, for example the tag 'cello' may be accompanied by the hint 'musical instrument'. All tags are in English.
  
  @param image An image stream.
  @param language The desired language for output generation. If this parameter is not specified, the default value is &amp;quot;en&amp;quot;.Supported languages:en - English, Default. es - Spanish, ja - Japanese, pt - Portuguese, zh - Simplified Chinese. Possible values include: 'en', 'es', 'ja', 'pt', 'zh'
  @throws IllegalArgumentException thrown if parameters fail the validation
  @return the observable to the TagResult object