var.setRefArgument();
if (isReference) var.setRefArgument();
  private ArrayList<Arg> parseFunctionArgDefinition()    throws IOException  {    ArrayList<Arg> args = new ArrayList<Arg>();    int argIndex = 0;    while (true) {      int token = parseToken();      boolean isReference = false;      if (token == '&') {	isReference = true;	token = parseToken();      }	      if (token != '$') {	_peekToken = token;	break;      }            String argName = parseIdentifier();      Expr defaultExpr = null;      token = parseToken();      if (token == '=') {	// XXX: actually needs to be primitive	defaultExpr = parseTerm();		token = parseToken();      }      Arg arg = new Arg(argName, defaultExpr, isReference);      args.add(arg);      VarInfo var = _function.createVar(argName);      var.setArgument(true);      var.setArgumentIndex(args.size() - 1);      var.setRefArgument();            if (token != ',') {	_peekToken = token;	break;      }    }    return args;  }