@Override
  public SearchScript search(
      CompiledScript compiledScript,
      final SearchLookup lookup,
      @Nullable final Map<String, Object> vars) {
    final NativeScriptFactory scriptFactory = (NativeScriptFactory) compiledScript.compiled();
    return new SearchScript() {
      @Override
      public LeafSearchScript getLeafSearchScript(LeafReaderContext context) throws IOException {
        AbstractSearchScript script = (AbstractSearchScript) scriptFactory.newScript(vars);
        script.setLookup(lookup.getLeafSearchLookup(context));
        return script;
      }

      @Override
      public boolean needsScores() {
        return scriptFactory.needsScores();
      }
    };
  }
 @Override
 public ExecutableScript executable(
     CompiledScript compiledScript, @Nullable Map<String, Object> vars) {
   NativeScriptFactory scriptFactory = (NativeScriptFactory) compiledScript.compiled();
   return scriptFactory.newScript(vars);
 }