out.println("  throws Throwable");
  public void generateVariableArgs(PhpWriter out)    throws IOException  {    out.println();    out.print("public ");    if (isStatic())      out.print("static ");        out.print("Value fun_");    out.print(_name);    if (isStatic())      out.println("(Env env, Value []args)");    else      out.println("(Env env, Value q_this_arg, Value []args)");    out.println("  throws Throwable");    out.println("{");    out.pushDepth();    if (! isStatic()) {      // out.println("CompiledObjectValue q_this = q_this_arg.toObjectValue();");      out.println("Value q_this = q_this_arg;");    }        // XXX: try to optimize-away the map    if (_info.isVariableArgs()) {      out.println("Value []quercus_oldArgs = env.setFunctionArgs(args);");      out.println("try {");      out.pushDepth();    }    generateBody(out);    if (_info.isVariableArgs()) {      out.popDepth();      out.println("} finally {");      out.pushDepth();      out.println("env.restoreFunctionArgs(quercus_oldArgs);");      out.popDepth();      out.println("}");    }    out.popDepth();    out.println("}");    out.println();    if (isStatic())      out.println("final static AbstractFunction __quercus_fun_" + _name);    else      out.println("final AbstractFunction __quercus_fun_" + _name);    String ref = _isReturnsReference ? "Ref" : "";    if (isStatic())      out.print(" = new CompiledFunction" + ref + "_N(");    else      out.print(" = new CompiledMethod" + ref + "_N(");    out.print("\"");    out.printJavaString(_name);    out.print("\", new Expr[] {");    for (int i = 0; i < _args.length; i++) {      if (i != 0)        out.print(", ");      Expr defaultExpr = _args[i].getDefault();      if (defaultExpr != null)        defaultExpr.generateExpr(out);      else        out.print("null");    }    out.println("}");    /*    out.print(", new boolean [] {");    for (int i = 0; i < _args.length; i++) {      if (i != 0)	out.print(", ");      out.print(_args[i].isReference());    }    out.print("}");    */    out.println(") {");    out.pushDepth();    /*    if (! isGlobal()) {      out.println();      out.println("boolean isGlobal() { return false; }");    }    */    if (isStatic())      out.println("public Value eval" + ref + "Impl(Env env, Value []args)");    else      out.println("public Value evalMethod" + ref + "Impl(Env env, Value q_this, Value []args)");    out.println("  throws Throwable");    out.println("{");    out.pushDepth();    if (isStatic())      out.print("return fun_" + _name + "(env, args)");    else      out.print("return fun_" + _name + "(env, q_this, args)");    // php/3a5x, php/37aq    if (! _isReturnsReference)      out.print(".toValue()"); // php/37aq    out.println(";");    out.popDepth();    out.println("}");    out.popDepth();    out.println("};");  }