}
// Resolves type variables by inspecting call parameters
private void resolveTypeVariables() {
MetaParameterizedType gSuperClass = inputType.getGenericSuperClass();
MetaClass superClass = inputType.getSuperClass();
if (superClass != null && superClass.getTypeParameters() != null & superClass.getTypeParameters().length > 0
&& gSuperClass != null && gSuperClass.getTypeParameters().length > 0) {
for (int i = 0; i < superClass.getTypeParameters().length; i++) {
if (gSuperClass.getTypeParameters()[i] instanceof MetaClass) {
typeVariables.put(superClass.getTypeParameters()[i].getName(), (MetaClass) gSuperClass.getTypeParameters()[i]);
}
else if (gSuperClass.getTypeParameters()[i] instanceof MetaWildcardType) {
typeVariables.put(superClass.getTypeParameters()[i].getName(), MetaClassFactory.get(Object.class));
}
}
}
int methodParmIndex = 0;