Object eval(Globals g, Bindings b) throws ScriptException { g.setmetatable(new BindingsMetatable(b)); LuaFunction f = function; if (f.isclosure()) f = new LuaClosure(f.checkclosure().p, g); else { try { f = f.getClass().newInstance(); } catch (Exception e) { throw new ScriptException(e); } f.initupvalue1(g); } return toJava(f.invoke(LuaValue.NONE)); }