if (! isClassKind(((JavaClass) jexMember).getClassKind(), (Class<?>) javaElement)) {
typesResult = Boolean.FALSE;
}
typesResult = satisfiedAnd(typesResult, validateSuperclasses(((JavaClass) jexMember), ((Class<?>) javaElement)));
} else if (jexMember instanceof JavaMethod) {
JavaMethod jexMethod = (JavaMethod) jexMember;
Type javaReturnType = null, javaParameterTypes[] = null, javaExceptionTypes[] = null;
if (javaElement instanceof Method) {
Method javaMethod = (Method) javaElement;
javaReturnType = javaMethod.getReturnType();
javaParameterTypes = javaMethod.getGenericParameterTypes();
javaExceptionTypes = javaMethod.getExceptionTypes();
} else if (javaElement instanceof Constructor<?>) {
Constructor<?> javaConstructor = (Constructor<?>) javaElement;
javaReturnType = null;
javaParameterTypes = javaConstructor.getGenericParameterTypes();
javaExceptionTypes = javaConstructor.getExceptionTypes();
}
Boolean result = validateTypes(jexMethod.getReturnType(), jexMethod.getParameters(), javaReturnType, javaParameterTypes);
if (result != Boolean.TRUE) {
typesResult = result;
} else {
typesResult = validateTypes(jexMethod.getThrowables(), javaExceptionTypes, false);
}
} else if (jexMember instanceof JavaField && javaElement instanceof Field) {
typesResult = Boolean.valueOf(testTypeString(((JavaField) jexMember).getType(), ((Field) javaElement).getType()));
}
return typesResult;