docs: public Object eval(ScriptContext scriptContext) throws ScriptException {
          if (this.compiledScript == null) {
              if (LOGGER.isDebugEnabled()) {
                  LOGGER.debug("No compiled script available, invoking ScriptEngine.eval(String, ScriptContext) for script:\n" + this.script);
              }
  
              return this.scriptEngine.eval(this.script, scriptContext);
          }
  
          try {
              if (LOGGER.isDebugEnabled()) {
                  LOGGER.debug("Compiled script available, invoking CompiledScript.eval(ScriptContext) for script:\n" + this.script);
              }
  
              return evalCompiledScriptWithContextMethod.invoke(this.compiledScript, scriptContext);
          }
          catch (Exception e) {
              if (e instanceof ScriptException) {
                  throw (ScriptException)e;
              }
              
              throw new ScriptException(e);
          }
      }