for (Iterator it = COMPILATION_INFO_REPOSITORY.entrySet().iterator(); it.hasNext();) {
final Map.Entry entry = (Map.Entry) it.next();
final Class clazz = (Class) entry.getKey();
final CompilationInfo compilationInfo = (CompilationInfo) entry.getValue();
final EmittedJoinPoint joinPoint = (EmittedJoinPoint) compilationInfo.
getInitialModel().getEmittedJoinPoint();
final ClassLoader loader = clazz.getClassLoader();
final ClassInfo calleeClassInfo = AsmClassInfo.getClassInfo(joinPoint.getCalleeClassName(), loader);
final ClassInfo callerClassInfo = AsmClassInfo.getClassInfo(joinPoint.getCallerClassName(), loader);
final MethodInfo callerMethodInfo = getCallerMethodInfo(callerClassInfo, joinPoint);
ExpressionContext ctx = null;
switch (joinPoint.getJoinPointType()) {
case JoinPointType.METHOD_EXECUTION_INT:
ctx = new ExpressionContext(
PointcutType.EXECUTION,
calleeClassInfo.getMethod(joinPoint.getJoinPointHash()),
callerMethodInfo
);
break;
case JoinPointType.METHOD_CALL_INT:
ctx = new ExpressionContext(
PointcutType.CALL,
calleeClassInfo.getMethod(joinPoint.getJoinPointHash()),
callerMethodInfo
);
break;
case JoinPointType.CONSTRUCTOR_EXECUTION_INT:
ctx = new ExpressionContext(
PointcutType.EXECUTION,
calleeClassInfo.getConstructor(joinPoint.getJoinPointHash()),
callerMethodInfo
);
break;
case JoinPointType.CONSTRUCTOR_CALL_INT:
ctx = new ExpressionContext(
PointcutType.CALL,
calleeClassInfo.getConstructor(joinPoint.getJoinPointHash()),
callerMethodInfo
);
break;
case JoinPointType.FIELD_SET_INT:
ctx = new ExpressionContext(
PointcutType.SET,
calleeClassInfo.getField(joinPoint.getJoinPointHash()),
callerMethodInfo
);
break;
case JoinPointType.FIELD_GET_INT:
ctx = new ExpressionContext(
PointcutType.GET,
calleeClassInfo.getField(joinPoint.getJoinPointHash()),
callerMethodInfo
);
break;
case JoinPointType.HANDLER_INT:
ctx = new ExpressionContext(
PointcutType.HANDLER,
AsmClassInfo.getClassInfo(joinPoint.getCalleeClassName(), loader),
callerMethodInfo
);
break;
case JoinPointType.STATIC_INITALIZATION_INT:
throw new UnsupportedOperationException("static initialization is not implemented");