Program: 88703
Project: 88703
Buggy source:
public soot.Body getBody(soot.SootMethod sootMethod,String phaseName){
  soot.Body classBody=soot.jimple.Jimple.v().newBody(sootMethod);
  soot.jimple.ParameterRef paramRef=soot.jimple.Jimple.v().newParameterRef(soot.RefType.v("String_Node_Str"),0);
  soot.Local paramLocal=soot.jimple.Jimple.v().newLocal("String_Node_Str",soot.RefType.v("String_Node_Str"));
  classBody.getLocals().add(paramLocal);
  soot.jimple.Stmt stmt=soot.jimple.Jimple.v().newIdentityStmt(paramLocal,paramRef);
  classBody.getUnits().add(stmt);
  ArrayList paramTypes=new ArrayList();
  paramTypes.add(soot.RefType.v("String_Node_Str"));
  soot.SootMethod methodToInvoke=soot.Scene.v().getSootClass("String_Node_Str").getMethod("String_Node_Str",paramTypes,soot.RefType.v("String_Node_Str"));
  soot.Local invokeLocal=soot.jimple.Jimple.v().newLocal("String_Node_Str",soot.RefType.v("String_Node_Str"));
  classBody.getLocals().add(invokeLocal);
  ArrayList params=new ArrayList();
  params.add(paramLocal);
  soot.jimple.Expr invokeExpr=soot.jimple.Jimple.v().newStaticInvokeExpr(methodToInvoke,params);
  soot.jimple.Stmt assign=soot.jimple.Jimple.v().newAssignStmt(invokeLocal,invokeExpr);
  classBody.getUnits().add(assign);
  soot.jimple.Stmt retStmt=soot.jimple.Jimple.v().newReturnStmt(invokeLocal);
  classBody.getUnits().add(retStmt);
  soot.Local catchRefLocal=soot.jimple.Jimple.v().newLocal("String_Node_Str",soot.RefType.v("String_Node_Str"));
  classBody.getLocals().add(catchRefLocal);
  soot.jimple.CaughtExceptionRef caughtRef=soot.jimple.Jimple.v().newCaughtExceptionRef();
  soot.jimple.Stmt caughtIdentity=soot.jimple.Jimple.v().newIdentityStmt(catchRefLocal,caughtRef);
  classBody.getUnits().add(caughtIdentity);
  soot.Local throwLocal=soot.jimple.Jimple.v().newLocal("String_Node_Str",soot.RefType.v("String_Node_Str"));
  classBody.getLocals().add(throwLocal);
  soot.jimple.Expr newExpr=soot.jimple.Jimple.v().newNewExpr(soot.RefType.v("String_Node_Str"));
  soot.jimple.Stmt throwAssign=soot.jimple.Jimple.v().newAssignStmt(throwLocal,newExpr);
  classBody.getUnits().add(throwAssign);
  soot.Local messageLocal=soot.jimple.Jimple.v().newLocal("String_Node_Str",soot.RefType.v("String_Node_Str"));
  classBody.getLocals().add(messageLocal);
  soot.SootMethod messageMethToInvoke=soot.Scene.v().getSootClass("String_Node_Str").getMethod("String_Node_Str",new ArrayList(),soot.RefType.v("String_Node_Str"));
  soot.jimple.Expr messageInvoke=soot.jimple.Jimple.v().newVirtualInvokeExpr(catchRefLocal,messageMethToInvoke,new ArrayList());
  soot.jimple.Stmt messageAssign=soot.jimple.Jimple.v().newAssignStmt(messageLocal,messageInvoke);
  classBody.getUnits().add(messageAssign);
  paramTypes=new ArrayList();
  paramTypes.add(soot.RefType.v("String_Node_Str"));
  soot.SootMethod initMethToInvoke=soot.Scene.v().getSootClass("String_Node_Str").getMethod("String_Node_Str",paramTypes,soot.VoidType.v());
  params=new ArrayList();
  params.add(messageLocal);
  soot.jimple.Expr initInvoke=soot.jimple.Jimple.v().newSpecialInvokeExpr(throwLocal,initMethToInvoke,params);
  soot.jimple.Stmt initStmt=soot.jimple.Jimple.v().newInvokeStmt(initInvoke);
  classBody.getUnits().add(initStmt);
  soot.jimple.Stmt throwStmt=soot.jimple.Jimple.v().newThrowStmt(throwLocal);
  classBody.getUnits().add(throwStmt);
  soot.Trap trap=soot.jimple.Jimple.v().newTrap(soot.Scene.v().getSootClass("String_Node_Str"),assign,retStmt,caughtIdentity);
  classBody.getTraps().add(trap);
  return classBody;
}

Fixed version (ground truth):
public soot.Body getBody(soot.SootMethod sootMethod,String phaseName){
  soot.Body classBody=soot.jimple.Jimple.v().newBody(sootMethod);
  soot.jimple.ParameterRef paramRef=soot.jimple.Jimple.v().newParameterRef(soot.RefType.v("String_Node_Str"),0);
  soot.Local paramLocal=soot.jimple.Jimple.v().newLocal("String_Node_Str",soot.RefType.v("String_Node_Str"));
  classBody.getLocals().add(paramLocal);
  soot.jimple.Stmt stmt=soot.jimple.Jimple.v().newIdentityStmt(paramLocal,paramRef);
  classBody.getUnits().add(stmt);
  ArrayList paramTypes=new ArrayList();
  paramTypes.add(soot.RefType.v("String_Node_Str"));
  soot.SootMethod methodToInvoke=soot.Scene.v().getSootClass("String_Node_Str").getMethod("String_Node_Str",paramTypes,soot.RefType.v("String_Node_Str"));
  soot.Local invokeLocal=soot.jimple.Jimple.v().newLocal("String_Node_Str",soot.RefType.v("String_Node_Str"));
  classBody.getLocals().add(invokeLocal);
  ArrayList params=new ArrayList();
  params.add(paramLocal);
  soot.jimple.Expr invokeExpr=soot.jimple.Jimple.v().newStaticInvokeExpr(methodToInvoke,params);
  soot.jimple.Stmt assign=soot.jimple.Jimple.v().newAssignStmt(invokeLocal,invokeExpr);
  classBody.getUnits().add(assign);
  soot.jimple.Stmt retStmt=soot.jimple.Jimple.v().newReturnStmt(invokeLocal);
  classBody.getUnits().add(retStmt);
  soot.Local catchRefLocal=soot.jimple.Jimple.v().newLocal("String_Node_Str",soot.RefType.v("String_Node_Str"));
  classBody.getLocals().add(catchRefLocal);
  soot.jimple.CaughtExceptionRef caughtRef=soot.jimple.Jimple.v().newCaughtExceptionRef();
  soot.jimple.Stmt caughtIdentity=soot.jimple.Jimple.v().newIdentityStmt(catchRefLocal,caughtRef);
  classBody.getUnits().add(caughtIdentity);
  soot.Local throwLocal=soot.jimple.Jimple.v().newLocal("String_Node_Str",soot.RefType.v("String_Node_Str"));
  classBody.getLocals().add(throwLocal);
  soot.jimple.Expr newExpr=soot.jimple.Jimple.v().newNewExpr(soot.RefType.v("String_Node_Str"));
  soot.jimple.Stmt throwAssign=soot.jimple.Jimple.v().newAssignStmt(throwLocal,newExpr);
  classBody.getUnits().add(throwAssign);
  soot.Local messageLocal=soot.jimple.Jimple.v().newLocal("String_Node_Str",soot.RefType.v("String_Node_Str"));
  classBody.getLocals().add(messageLocal);
  soot.SootMethod messageMethToInvoke=soot.Scene.v().getSootClass("String_Node_Str").getMethod("String_Node_Str",new ArrayList(),soot.RefType.v("String_Node_Str"));
  soot.jimple.Expr messageInvoke=soot.jimple.Jimple.v().newVirtualInvokeExpr(catchRefLocal,messageMethToInvoke,new ArrayList());
  soot.jimple.Stmt messageAssign=soot.jimple.Jimple.v().newAssignStmt(messageLocal,messageInvoke);
  classBody.getUnits().add(messageAssign);
  paramTypes=new ArrayList();
  paramTypes.add(soot.RefType.v("String_Node_Str"));
  soot.SootMethod initMethToInvoke=soot.Scene.v().getSootClass("String_Node_Str").getMethod("String_Node_Str",paramTypes,soot.VoidType.v());
  params=new ArrayList();
  params.add(messageLocal);
  soot.jimple.Expr initInvoke=soot.jimple.Jimple.v().newSpecialInvokeExpr(throwLocal,initMethToInvoke,params);
  soot.jimple.Stmt initStmt=soot.jimple.Jimple.v().newInvokeStmt(initInvoke);
  classBody.getUnits().add(initStmt);
  soot.jimple.Stmt throwStmt=soot.jimple.Jimple.v().newThrowStmt(throwLocal);
  throwStmt.addTag(new soot.tagkit.ThrowCreatedByCompilerTag());
  classBody.getUnits().add(throwStmt);
  soot.Trap trap=soot.jimple.Jimple.v().newTrap(soot.Scene.v().getSootClass("String_Node_Str"),assign,retStmt,caughtIdentity);
  classBody.getTraps().add(trap);
  return classBody;
}