return; //FIXME: should never be reached?! -> assert ?
for (IncomingEdge<D, N> incomingEdge : incoming(methodThatNeedsSummary)) {
N callSite = incomingEdge.getCallSite();
for (N retSiteC : icfg.getReturnSitesOfCallAt(callSite)) {
FlowFunction<FieldRef, D> retFunction = flowFunctions.getReturnFlowFunction(callSite, methodThatNeedsSummary, n, retSiteC);
<BUG>if(AccessPathUtil.isPrefixOf(d1, incomingEdge.getCalleeSourceFact())) {
</BUG>
Optional<D> concreteCalleeExitFact = AccessPathUtil.applyAbstractedSummary(incomingEdge.getCalleeSourceFact(), summaryEdge);
if(concreteCalleeExitFact.isPresent()) {
Set<ConstrainedFact<FieldRef, D>> callerTargetFacts = computeReturnFlowFunction(retFunction, concreteCalleeExitFact.get(), callSite);

return; //FIXME: should never be reached?! -> assert ?
for (IncomingEdge<D, N> incomingEdge : incoming(methodThatNeedsSummary)) {
N callSite = incomingEdge.getCallSite();
for (N retSiteC : icfg.getReturnSitesOfCallAt(callSite)) {
FlowFunction<FieldRef, D> retFunction = flowFunctions.getReturnFlowFunction(callSite, methodThatNeedsSummary, n, retSiteC);
if(AccessPathUtil.isPrefixOf(d1, incomingEdge.getCalleeSourceFact()) == PrefixTestResult.GUARANTEED_PREFIX) {
Optional<D> concreteCalleeExitFact = AccessPathUtil.applyAbstractedSummary(incomingEdge.getCalleeSourceFact(), summaryEdge);
if(concreteCalleeExitFact.isPresent()) {
Set<ConstrainedFact<FieldRef, D>> callerTargetFacts = computeReturnFlowFunction(retFunction, concreteCalleeExitFact.get(), callSite);
