assert nodeKind == ExpressionType.Invoke ||
nodeKind == ExpressionType.Call ||
nodeKind == ExpressionType.New;
final TypeList parameterTypes;
if (method instanceof MethodBuilder) {
parameterTypes = ((MethodBuilder) method).getParameterTypes();
}
else if (method instanceof ConstructorBuilder) {
parameterTypes = ((ConstructorBuilder) method).getMethodBuilder().getParameterTypes();
}
else {
parameterTypes = method.getParameters().getParameterTypes();
}
validateArgumentCount(method, nodeKind, arguments.size(), parameterTypes);
T[] newArgs = null;
for (int i = 0, n = parameterTypes.size(); i < n; i++) {
final Type parameterType = parameterTypes.get(i);
final T arg = validateOneArgument(method, nodeKind, arguments.get(i), parameterType);
if (arg != arguments.get(i)) {
if (newArgs == null) {
newArgs = arguments.toArray();