Program: 132765
Project: 132765
Buggy source:
/** 
 * Update variable passing for nested continuation
 * @param logger
 * @param function
 * @param outerCx exec context outside of continuation
 * @param continuation
 * @param visible
 * @param referencedGlobals
 * @param aliases 
 * @param outerBlockVars
 * @param neededVars
 * @param updateLists 
 */
private static void fixupContinuationRec(Logger logger,Function function,ExecContext outerCx,Continuation continuation,HierarchicalSet<Var> visible,Set<Var> referencedGlobals,AliasTracker outerAliases,Set<Var> outerBlockVars,Result result,boolean updateLists){
  List<Var> constructVars=continuation.constructDefinedVars(ContVarDefType.NEW_DEF);
  ExecContext innerCx=continuation.childContext(outerCx);
  AliasTracker contAliases=outerAliases.makeChild();
  for (  Block innerBlock : continuation.getBlocks()) {
    HierarchicalSet<Var> childVisible=visible.makeChild();
    for (    Var v : constructVars) {
      childVisible.add(v);
    }
    AliasTracker blockAliases=contAliases.makeChild();
    Result inner=fixupBlockRec(logger,function,innerBlock,innerCx,childVisible,referencedGlobals,blockAliases,updateLists);
    if (!constructVars.isEmpty()) {
      inner.removeReadWrite(constructVars);
    }
    if (continuation.inheritsParentVars()) {
      inner.removeReadWrite(outerBlockVars);
      result.add(inner);
    }
 else     if (updateLists) {
      rebuildContinuationPassedVars(function,continuation,visible,outerBlockVars,outerAliases,result,inner);
      rebuildContinuationKeepOpenVars(function,continuation,visible,outerBlockVars,outerAliases,result,inner);
    }
  }
}

Fixed version (ground truth):
/** 
 * Update variable passing for nested continuation
 * @param logger
 * @param function
 * @param outerCx exec context outside of continuation
 * @param continuation
 * @param visible
 * @param referencedGlobals
 * @param aliases 
 * @param outerBlockVars
 * @param neededVars
 * @param updateLists 
 */
private static void fixupContinuationRec(Logger logger,Function function,ExecContext outerCx,Continuation continuation,HierarchicalSet<Var> visible,Set<Var> referencedGlobals,AliasTracker outerAliases,Set<Var> outerBlockVars,Result result,boolean updateLists){
  List<Var> constructVars=continuation.constructDefinedVars(ContVarDefType.NEW_DEF);
  ExecContext innerCx=continuation.childContext(outerCx);
  AliasTracker contAliases=outerAliases.makeChild();
  for (  Block innerBlock : continuation.getBlocks()) {
    HierarchicalSet<Var> childVisible=visible.makeChild();
    for (    Var v : constructVars) {
      childVisible.add(v);
    }
    AliasTracker blockAliases=contAliases.makeChild();
    Result inner=fixupBlockRec(logger,function,innerBlock,innerCx,childVisible,referencedGlobals,blockAliases,updateLists);
    if (!constructVars.isEmpty()) {
      inner.removeReadWrite(constructVars);
    }
    if (continuation.inheritsParentVars()) {
      inner.removeReadWrite(outerBlockVars);
      result.add(inner);
    }
 else     if (updateLists) {
      rebuildContinuationPassedVars(function,continuation,innerCx,visible,outerBlockVars,outerAliases,result,inner);
      rebuildContinuationKeepOpenVars(function,continuation,visible,outerBlockVars,outerAliases,result,inner);
    }
  }
}