code: public FutureData<DataSiftResult> start(FutureData<PreparedHistoricsQuery> query) {
          if (query == null) {
              throw new IllegalArgumentException("A valid PreparedHistoricsQuery is required");
          }
          final FutureData<DataSiftResult> future = new FutureData<>();
          DataSiftResult h = new BaseDataSiftResult();
  
          FutureResponse<PreparedHistoricsQuery> r = new FutureResponse<PreparedHistoricsQuery>() {
              public void apply(PreparedHistoricsQuery data) {
                  if (data.getId() == null || data.getId().isEmpty()) {
                      throw new IllegalArgumentException("A valid PreparedHistoricsQuery is required");
                  }
                  start(data.getId(), future);
              }
          };
          unwrapFuture(query, future, h, r);
          return future;
      }
docs: /*
  Start the historics query given
  
  @return a result which can be checked for success or failure, A status 204 indicates success,
  or using {@link com.datasift.client.BaseDataSiftResult#isSuccessful()}