Program: 99652
Project: 99652
Buggy source:
@Override public byte evaluate(PointsToSetVariable lhs,PointsToSetVariable rhs){
  IntSetVariable receivers=rhs;
  IntSet value=receivers.getValue();
  if (value == null) {
    if (DEBUG) {
      System.err.println("String_Node_Str");
    }
    return NOT_CHANGED;
  }
  if (DEBUG) {
    String S="String_Node_Str" + caller + "String_Node_Str"+ site;
    System.err.println(S);
    if (DEBUG_LEVEL >= 2) {
      System.err.println(("String_Node_Str" + value));
    }
  }
  IClass recvClass=getClassHierarchy().lookupClass(site.getDeclaredTarget().getDeclaringClass());
  if (recvClass == null) {
    return NOT_CHANGED;
  }
  value=filterForClass(value,recvClass);
  if (DEBUG_LEVEL >= 2) {
    System.err.println(("String_Node_Str" + value));
  }
  IntSetAction action=new IntSetAction(){
    @Override public void act(    int ptr){
      if (DEBUG) {
        System.err.println(("String_Node_Str" + ptr));
      }
      InstanceKey iKey=system.getInstanceKey(ptr);
      CGNode target=getTargetForCall(caller,site,iKey.getConcreteType(),new InstanceKey[]{iKey});
      if (target == null) {
        if (DEBUG) {
          System.err.println(("String_Node_Str" + site + "String_Node_Str"+ iKey));
        }
        return;
      }
      if (clone2Assign) {
        if (target.getMethod().getReference().equals(CloneInterpreter.CLONE)) {
          caller.addTarget(site,target);
          return;
        }
      }
      IntSet targets=getCallGraph().getPossibleTargetNumbers(caller,site);
      if (targets != null && targets.contains(target.getGraphNodeId())) {
        return;
      }
      processResolvedCall(caller,site,target);
      if (!haveAlreadyVisited(target)) {
        markDiscovered(target);
      }
    }
  }
;
  value.foreachExcluding(previousReceivers,action);
  previousReceivers.copySet(value);
  return NOT_CHANGED;
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") @Override public byte evaluate(PointsToSetVariable lhs,PointsToSetVariable rhs){
  IntSetVariable receivers=rhs;
  IntSet value=receivers.getValue();
  if (value == null) {
    if (DEBUG) {
      System.err.println("String_Node_Str");
    }
    return NOT_CHANGED;
  }
  if (DEBUG) {
    String S="String_Node_Str" + caller + "String_Node_Str"+ site;
    System.err.println(S);
    if (DEBUG_LEVEL >= 2) {
      System.err.println(("String_Node_Str" + value));
    }
  }
  IClass recvClass=getClassHierarchy().lookupClass(site.getDeclaredTarget().getDeclaringClass());
  if (recvClass == null) {
    return NOT_CHANGED;
  }
  value=filterForClass(value,recvClass);
  if (DEBUG_LEVEL >= 2) {
    System.err.println(("String_Node_Str" + value));
  }
  IntSetAction action=new IntSetAction(){
    @Override public void act(    int ptr){
      if (DEBUG) {
        System.err.println(("String_Node_Str" + ptr));
      }
      InstanceKey iKey=system.getInstanceKey(ptr);
      CGNode target=getTargetForCall(caller,site,iKey.getConcreteType(),new InstanceKey[]{iKey});
      if (target == null) {
        if (DEBUG) {
          System.err.println(("String_Node_Str" + site + "String_Node_Str"+ iKey));
        }
        return;
      }
      if (clone2Assign) {
        if (target.getMethod().getReference().equals(CloneInterpreter.CLONE)) {
          caller.addTarget(site,target);
          return;
        }
      }
      IntSet targets=getCallGraph().getPossibleTargetNumbers(caller,site);
      if (targets != null && targets.contains(target.getGraphNodeId())) {
        return;
      }
      processResolvedCall(caller,site,target);
      if (!haveAlreadyVisited(target)) {
        markDiscovered(target);
      }
    }
  }
;
  value.foreachExcluding(previousReceivers,action);
  previousReceivers.copySet(value);
  return NOT_CHANGED;
}