} else if(!prefixCandidate.getBaseValue().equals(fact.getBaseValue()))
return false;
return prefixCandidate.getAccessPath().isPrefixOf(fact.getAccessPath());</BUG>
}
public static <FieldRef, D extends FieldSensitiveFact<?, FieldRef, D>> Optional<D> applyAbstractedSummary(D sourceFact, SummaryEdge<D, ?> summary) {
<BUG>if(!isPrefixOf(summary.getSourceFact(), sourceFact))
throw new IllegalArgumentException(String.format("Source fact in given summary edge '%s' is not a prefix of the given source fact '%s'", summary, sourceFact));</BUG>
AccessPath<FieldRef> concreteAccessPath = sourceFact.getAccessPath();
AccessPath<FieldRef> abstractAccessPath = summary.getSourceFact().getAccessPath();
AccessPath<FieldRef> targetAccessPath = summary.getTargetFact().getAccessPath();

} else if(!prefixCandidate.getBaseValue().equals(fact.getBaseValue()))
return PrefixTestResult.NO_PREFIX;
return prefixCandidate.getAccessPath().isPrefixOf(fact.getAccessPath());
}
public static <FieldRef, D extends FieldSensitiveFact<?, FieldRef, D>> Optional<D> applyAbstractedSummary(D sourceFact, SummaryEdge<D, ?> summary) {
if(!isPrefixOf(summary.getSourceFact(), sourceFact).atLeast(PrefixTestResult.GUARANTEED_PREFIX))
throw new IllegalArgumentException(String.format("Source fact in given summary edge '%s' is not a prefix of the given source fact '%s'", summary, sourceFact));
AccessPath<FieldRef> concreteAccessPath = sourceFact.getAccessPath();
AccessPath<FieldRef> abstractAccessPath = summary.getSourceFact().getAccessPath();
AccessPath<FieldRef> targetAccessPath = summary.getTargetFact().getAccessPath();
