@Override
 protected void doStartNextScroll(
     String scrollId, TimeValue extraKeepAlive, Consumer<? super Response> onResponse) {
   execute(
       "POST",
       scrollPath(),
       scrollParams(
           timeValueNanos(searchRequest.scroll().keepAlive().nanos() + extraKeepAlive.nanos())),
       scrollEntity(scrollId),
       RESPONSE_PARSER,
       onResponse);
 }
 @Override
 protected void doStart(Consumer<? super Response> onResponse) {
   lookupRemoteVersion(
       version -> {
         remoteVersion = version;
         execute(
             "POST",
             initialSearchPath(searchRequest),
             initialSearchParams(searchRequest, version),
             initialSearchEntity(query),
             RESPONSE_PARSER,
             r -> onStartResponse(onResponse, r));
       });
 }
 void lookupRemoteVersion(Consumer<Version> onVersion) {
   execute("GET", "", emptyMap(), null, MAIN_ACTION_PARSER, onVersion);
 }