in src/main/java/net/hydromatic/linq4j/expressions/Types.java [270:292]
static boolean allAssignable(boolean varArgs, Class[] parameterTypes,
Class[] argumentTypes) {
if (varArgs) {
if (argumentTypes.length < parameterTypes.length - 1) {
return false;
}
} else {
if (parameterTypes.length != argumentTypes.length) {
return false;
}
}
for (int i = 0; i < argumentTypes.length; i++) {
Class
parameterType =
!varArgs || i < parameterTypes.length - 1
? parameterTypes[i]
: Object.class;
if (!assignableFrom(parameterType, argumentTypes[i])) {
return false;
}
}
return true;
}