private ConByConInfo doResolveConstructorCallerConstructorInfo(Class<?> callingClass, int callingIndex, String calledClass, long calledConHash) { try { Constructor<?> callingConstructor = constructors[callingIndex]; if (callingConstructor == null) throw new RuntimeException("Unable to figure out calling method of a caller pointcut"); Class<?> called = SecurityActions.getClassLoader(callingClass).loadClass(calledClass); Constructor<?> calledCon = MethodHashing.findConstructorByHash(called, calledConHash); if (calledCon == null) throw new RuntimeException("Unable to figure out calledcon of a caller pointcut"); boolean matched = false; ClassifiedBindingAndPointcutCollection bindingCol = manager.getBindingCollection(); for (AdviceBinding binding : bindingCol.getConstructorCallBindings()) { if (binding.getPointcut().matchesCall(this, callingConstructor, called, calledCon)) { addConstructorCalledByConPointcut(callingIndex, calledClass, calledConHash, binding); matched = true; } } if (!matched) initializeConCalledByConEmptyChain(callingIndex, calledClass, calledConHash); ConByConInfo info = initializeConCalledByConInterceptorsMap(callingClass, callingIndex, calledClass, calledConHash, calledCon); ArrayList<AdviceBinding> bindings = getConCalledByConBindings(callingIndex, calledClass, calledConHash); bindConCalledByConInterceptorChain(bindings, callingIndex, calledClass, calledConHash); return info; } catch (Exception x) { throw new RuntimeException(x); } }