docs: private Invocable invokeScriptImpl(ScriptWrapper script) {
  		ScriptEngine se = script.getEngine().getEngine();
  	    Writer writer = getWriters(script);
  	    se.getContext().setWriter(writer);
  
  	    // Set the script name as a context attribute - this is used for script level variables 
  	    se.getContext().setAttribute(SCRIPT_NAME_ATT, script.getName(), ScriptContext.ENGINE_SCOPE);
  	    reloadIfChangedOnDisk(script);
  
  	    try {
  	    	se.eval(script.getContents());
  	    } catch (Exception e) {
  	        handleScriptException(script, writer, e);
  	    } catch (NoClassDefFoundError | ExceptionInInitializerError e) {
  	        if (e.getCause() instanceof Exception) {
  	            handleScriptException(script, writer, (Exception) e.getCause());
  	        } else {
  	            handleUnspecifiedScriptError(script, writer, e.getMessage());
  	        }
  	    }
  
  	    if (se instanceof Invocable) {
  	    	return (Invocable) se;
  		}
  		return null;
  	}