}
private static MethodAnalysisResults analyzeLambdaClass(Class<?> lambdaClass, MetamodelUtil metamodel, LambdaAsClassAnalysisConfig lambdaAsClass, ClassLoader alternateClassLoader, boolean isObjectEqualsSafe) throws IOException, AnalyzerException
{
// Open up the corresponding class to analyze
TransformationClassAnalyzer classAnalyzer =
new TransformationClassAnalyzer(lambdaClass.getName(), alternateClassLoader);
Method matchingMethod = lambdaAsClass.findLambdaMethod(lambdaClass);
if (matchingMethod == null)
throw new AnalyzerException(null, "Could not find a lambda method with the expected name in the class");
PathAnalysisFactory pathAnalysisFactory = new PathAnalysisFactory(
metamodel.getMethodChecker(isObjectEqualsSafe));
MethodAnalysisResults analysis = classAnalyzer.analyzeLambdaMethod(matchingMethod.getName(), Type.getMethodDescriptor(matchingMethod), pathAnalysisFactory);
PathAnalysisSimplifier.cleanAndSimplify(analysis, metamodel.getComparisonMethods(isObjectEqualsSafe));
return analysis;
}