emitThis();
    Item invokeMethod(Symbol fun, Tree[] args, MSILType resType) {	//log("invokeMethod: " + dumpSym(fun));	MethodBase method = tc.getMethod(fun);	assert method != null : "Coudn't resolve method: " + dumpSym(fun);	//log("\tmethod found: " + method);	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 && lastStatement && method == currentMethod)		code.Emit(OpCodes.Tailcall);	    code.Emit(OpCodes.Callvirt, (MethodInfo)method);	    res = returnsVoid(method) ? items.VoidItem() : items.StackItem(resType);	}	return check(res);    }