if (y instanceof ExprUnary && ((ExprUnary)y).op==ExprUnary.Op.NOOP) y=((ExprUnary)y).sub;
else if (y instanceof ExprChoice && ((ExprChoice)y).choices.size()==1) y=((ExprChoice)y).choices.get(0);
else break;
}
if (y instanceof ExprBadCall) {
ExprBadCall bc = (ExprBadCall)y;
if (bc.args.size() < bc.fun.count()) {
ConstList<Expr> newargs = Util.append(bc.args, arg);
if (applicable(bc.fun, newargs))
y=ExprCall.make(bc.pos, bc.closingBracket, bc.fun, newargs, bc.extraWeight);
else