Program: 147299
Project: 147299
Buggy source:
public Conditional<Instruction> execute(FeatureExpr ctx,final ThreadInfo ti){
  Conditional<Integer> allRefs=ti.getCalleeThis(ctx,getArgSize());
  Map<Integer,FeatureExpr> map=allRefs.toMap();
  Map<String,List<FeatureExpr>> classes=new TreeMap<>();
  if (JPF.SHARE_INVOCATIONS && map.size() > 1) {
    for (    Entry<Integer,FeatureExpr> e : map.entrySet()) {
      MethodInfo callee=getInvokedMethod(ctx.and(e.getValue()),ti,e.getKey());
      String methName=callee == null ? "String_Node_Str" : callee.getFullName();
      if (classes.containsKey(methName)) {
        classes.get(methName).add(e.getValue());
      }
 else {
        List<FeatureExpr> list=new ArrayList<>(map.size());
        list.add(e.getValue());
        classes.put(methName,list);
      }
    }
  }
  boolean splitRef=false;
  if ((JPF.SHARE_INVOCATIONS && classes.size() > 1) || (!JPF.SHARE_INVOCATIONS && map.size() > 1)) {
    splitRef=true;
  }
  for (  Entry<Integer,FeatureExpr> objRefEntry : map.entrySet()) {
    Integer objRef=objRefEntry.getKey();
    if (objRef == MJIEnv.NULL) {
      lastObj=MJIEnv.NULL;
      return ChoiceFactory.create(ctx.and(objRefEntry.getValue()),new One<Instruction>(new EXCEPTION(this,java.lang.NullPointerException.class.getName(),"String_Node_Str" + mname + "String_Node_Str")),new One<>(typeSafeClone(mi))).simplify();
    }
    MethodInfo callee=getInvokedMethod(ctx.and(objRefEntry.getValue()),ti,objRef);
    ElementInfo ei=ti.getElementInfoWithUpdatedSharedness(objRef);
    if (!classes.isEmpty()) {
      FeatureExpr invocationCtx=FeatureExprFactory.False();
      for (      FeatureExpr e : classes.get(callee.getFullName())) {
        invocationCtx=invocationCtx.or(e);
      }
      ctx=ctx.and(invocationCtx);
    }
 else {
      ctx=ctx.and(objRefEntry.getValue());
    }
    if (callee == null) {
      String clsName=ti.getClassInfo(objRef).getName();
      return new One<>(ti.createAndThrowException(ctx,java.lang.NoSuchMethodError.class.getName(),clsName + '.' + mname));
    }
 else {
      if (callee.isAbstract()) {
        return new One<>(ti.createAndThrowException(ctx,java.lang.AbstractMethodError.class.getName(),callee.getFullName() + "String_Node_Str" + ei));
      }
    }
    if (callee.isSynchronized()) {
      if (checkSyncCG(ei,ti)) {
        return new One<Instruction>(this);
      }
    }
    setupCallee(ctx,ti,callee);
    if (!splitRef) {
      return ti.getPC();
    }
    return ChoiceFactory.create(ctx,ti.getPC(),new One<>(typeSafeClone(mi))).simplify();
  }
  throw new RuntimeException("String_Node_Str");
}

Fixed version (ground truth):
public Conditional<Instruction> execute(FeatureExpr ctx,final ThreadInfo ti){
  Conditional<Integer> allRefs=ti.getCalleeThis(ctx,getArgSize());
  Map<Integer,FeatureExpr> map=allRefs.toMap();
  Map<String,List<FeatureExpr>> classes=new TreeMap<>();
  if (JPF.SHARE_INVOCATIONS && map.size() > 1) {
    for (    Entry<Integer,FeatureExpr> e : map.entrySet()) {
      MethodInfo callee=getInvokedMethod(ctx.and(e.getValue()),ti,e.getKey());
      String methName=callee == null ? "String_Node_Str" : callee.getFullName();
      if (classes.containsKey(methName)) {
        classes.get(methName).add(e.getValue());
      }
 else {
        List<FeatureExpr> list=new ArrayList<>(map.size());
        list.add(e.getValue());
        classes.put(methName,list);
      }
    }
  }
  boolean splitRef=false;
  if ((JPF.SHARE_INVOCATIONS && classes.size() > 1) || (!JPF.SHARE_INVOCATIONS && map.size() > 1)) {
    splitRef=true;
  }
  for (  Entry<Integer,FeatureExpr> objRefEntry : map.entrySet()) {
    Integer objRef=objRefEntry.getKey();
    if (objRef == MJIEnv.NULL) {
      lastObj=MJIEnv.NULL;
      return ChoiceFactory.create(ctx.and(objRefEntry.getValue()),new One<Instruction>(new EXCEPTION(this,java.lang.NullPointerException.class.getName(),"String_Node_Str" + mname + "String_Node_Str")),ChoiceFactory.create(ctx,new One<>(typeSafeClone(mi)),ti.getPC())).simplify();
    }
    MethodInfo callee=getInvokedMethod(ctx.and(objRefEntry.getValue()),ti,objRef);
    ElementInfo ei=ti.getElementInfoWithUpdatedSharedness(objRef);
    if (!classes.isEmpty()) {
      FeatureExpr invocationCtx=FeatureExprFactory.False();
      for (      FeatureExpr e : classes.get(callee.getFullName())) {
        invocationCtx=invocationCtx.or(e);
      }
      ctx=ctx.and(invocationCtx);
    }
 else {
      ctx=ctx.and(objRefEntry.getValue());
    }
    if (callee == null) {
      String clsName=ti.getClassInfo(objRef).getName();
      return new One<>(ti.createAndThrowException(ctx,java.lang.NoSuchMethodError.class.getName(),clsName + '.' + mname));
    }
 else {
      if (callee.isAbstract()) {
        return new One<>(ti.createAndThrowException(ctx,java.lang.AbstractMethodError.class.getName(),callee.getFullName() + "String_Node_Str" + ei));
      }
    }
    if (callee.isSynchronized()) {
      if (checkSyncCG(ei,ti)) {
        return new One<>(this);
      }
    }
    setupCallee(ctx,ti,callee);
    if (!splitRef) {
      return ti.getPC();
    }
    return ChoiceFactory.create(ctx,ti.getPC(),new One<>(typeSafeClone(mi))).simplify();
  }
  throw new RuntimeException("String_Node_Str");
}