return check(res);
if (returnsVoid(fun) && !returnsVoid(method)) { res = drop(res); } return res;
    private Item invokeMethod(Symbol fun, Tree[] args, MSILType resType,		      boolean virtualCall) {	MethodBase method = tc.getMethod(fun);	assert method != null : "Coudn't resolve method: " + Debug.show(fun);	Item res = null;	if (method.IsStatic()) {	    ParameterInfo[] params = method.GetParameters();	    if (becomesStatic(fun)) {		assert params.length == args.length + 1;		ParameterInfo[] newParams = new ParameterInfo[params.length - 1];		for (int i = 0; i < newParams.length; i++)		    newParams[i] = params[i + 1];		params = newParams;	    }	    loadArgs(args, params);	    code.Emit(OpCodes.Call, (MethodInfo)method);	    res = returnsVoid(method) ? items.VoidItem() :		items.StackItem(resType);	} else if (method.IsConstructor()) {	    // used only for calls to super constructor	    //emitThis();	    loadArgs(args, method.GetParameters());	    code.Emit(OpCodes.Call, (ConstructorInfo)method);	    res = items.VoidItem();	} else {	    loadArgs(args, method.GetParameters());	    if (enableTailCalls && lastExpr /*&& method == currentMethod*/)		code.Emit(OpCodes.Tailcall);	    code.Emit(virtualCall ? OpCodes.Callvirt : OpCodes.Call,		      (MethodInfo)method);	    res = returnsVoid(method) ? items.VoidItem() : items.StackItem(resType);	}	return check(res);    }