code: public static Object eval(ScriptEngine self, Reader reader, Binding binding) throws ScriptException {
          storeBindingVars(self, binding);
          Object result = self.eval(reader);
          retrieveBindingVars(self, binding);
          return result;
      }
docs: Same as <code>eval(ScriptEngine, Reader, Binding)</code> except that the
  source of the script is provided as a <code>Reader</code>
  
  @param self A ScriptEngine
  @param reader The source of the script
  @param binding A Groovy binding
  @return The value returned by the script
  @throws javax.script.ScriptException if an error occurs in script
  @throws NullPointerException if the argument is null
  @see #eval(javax.script.ScriptEngine, java.lang.String, groovy.lang.Binding)
  @since 1.7.3