Program: 88660
Project: 88660
Buggy source:
/** 
 * Assign Expression Creation
 */
private soot.Local getAssignLocal(polyglot.ast.Assign assign){
  soot.jimple.AssignStmt stmt;
  soot.Value left=createLHS(assign.left());
  soot.Local leftLocal;
  if (left instanceof soot.Local) {
    leftLocal=(soot.Local)left;
  }
 else {
    leftLocal=lg.generateLocal(left.getType());
    stmt=soot.jimple.Jimple.v().newAssignStmt(leftLocal,left);
    body.getUnits().add(stmt);
    Util.addLnPosTags(stmt,assign.position());
  }
  HashMap accessMap=((PolyglotMethodSource)body.getMethod().getSource()).getPrivateAccessMap();
  if ((assign.left() instanceof polyglot.ast.Field) && (accessMap != null) && accessMap.containsKey(((polyglot.ast.Field)assign.left()).fieldInstance())) {
    return handlePrivateFieldSet(assign);
  }
  soot.Value right=getAssignRightLocal(assign,leftLocal);
  stmt=soot.jimple.Jimple.v().newAssignStmt(leftLocal,right);
  body.getUnits().add(stmt);
  Util.addLnPosTags(stmt,assign.position());
  Util.addLnPosTags(stmt.getRightOpBox(),assign.right().position());
  Util.addLnPosTags(stmt.getLeftOpBox(),assign.left().position());
  if (!(left instanceof soot.Local)) {
    stmt=soot.jimple.Jimple.v().newAssignStmt(left,leftLocal);
    body.getUnits().add(stmt);
    Util.addLnPosTags(stmt,assign.position());
    Util.addLnPosTags(stmt.getRightOpBox(),assign.right().position());
    Util.addLnPosTags(stmt.getLeftOpBox(),assign.left().position());
  }
  return leftLocal;
}

Fixed version (ground truth):
/** 
 * Assign Expression Creation
 */
private soot.Value getAssignLocal(polyglot.ast.Assign assign){
  HashMap accessMap=((PolyglotMethodSource)body.getMethod().getSource()).getPrivateAccessMap();
  if ((assign.left() instanceof polyglot.ast.Field) && (accessMap != null) && accessMap.containsKey(((polyglot.ast.Field)assign.left()).fieldInstance())) {
    return handlePrivateFieldSet(assign);
  }
  if (assign.operator() == polyglot.ast.Assign.ASSIGN) {
    return getSimpleAssignLocal(assign);
  }
  if ((assign.operator() == polyglot.ast.Assign.ADD_ASSIGN) && assign.type().toString().equals("String_Node_Str")) {
    return getStrConAssignLocal(assign);
  }
  soot.jimple.AssignStmt stmt;
  soot.Value left=createLHS(assign.left());
  soot.Local leftLocal;
  if (left instanceof soot.Local) {
    leftLocal=(soot.Local)left;
  }
 else {
    leftLocal=lg.generateLocal(left.getType());
    stmt=soot.jimple.Jimple.v().newAssignStmt(leftLocal,left);
    body.getUnits().add(stmt);
    Util.addLnPosTags(stmt,assign.position());
  }
  soot.Value right=getAssignRightLocal(assign,leftLocal);
  stmt=soot.jimple.Jimple.v().newAssignStmt(leftLocal,right);
  body.getUnits().add(stmt);
  Util.addLnPosTags(stmt,assign.position());
  Util.addLnPosTags(stmt.getRightOpBox(),assign.right().position());
  Util.addLnPosTags(stmt.getLeftOpBox(),assign.left().position());
  if (!(left instanceof soot.Local)) {
    stmt=soot.jimple.Jimple.v().newAssignStmt(left,leftLocal);
    body.getUnits().add(stmt);
    Util.addLnPosTags(stmt,assign.position());
    Util.addLnPosTags(stmt.getRightOpBox(),assign.right().position());
    Util.addLnPosTags(stmt.getLeftOpBox(),assign.left().position());
  }
  return leftLocal;
}