code: @Override
      public CompiledScript compile(Reader script) throws ScriptException {
          try {
              return compile(convertToString(script));
          } catch (IOException e) {
              throw new ScriptException(e);
          }
      }
docs: Compiles the script (source read from {@code Reader}) for later
  execution.  Functionality is identical to {@code compile(String)} other
  than the way in which the source is passed.
  
  @param script The reader from which the script source is obtained.
  @return An implementation of {@code CompiledScript} to be executed
  later using one of its {@code eval} methods of
  {@code CompiledScript}.
  @throws ScriptException    if compilation fails.
  @throws NullPointerException if argument is null.