Program: 83349
Project: 83349
Buggy source:
/** 
 * Creates finished JavaScript source code from the specified Java compilation units.
 */
public String compile(TreeLogger logger,RebindOracle rebindOracle) throws UnableToCompleteException {
  try {
    JProgram jprogram=new JProgram(logger,rebindOracle);
    TypeMap typeMap=new TypeMap(jprogram);
    JsProgram jsProgram=new JsProgram();
    TypeDeclaration[] allTypeDeclarations=BuildTypeMap.exec(typeMap,goldenCuds,jsProgram);
    checkForErrors(logger,true);
    jprogram.typeOracle.computeBeforeAST();
    GenerateJavaAST.exec(allTypeDeclarations,typeMap,jprogram);
    checkForErrors(logger,true);
    boolean isDebugEnabled=false;
    if (!isDebugEnabled) {
      AssertionRemover.exec(jprogram);
    }
    jprogram.typeOracle.computeAfterAST();
    ReplaceRebinds.exec(jprogram);
    findEntryPoints(logger,rebindOracle,declEntryPoints,jprogram);
    boolean didChange;
    do {
      didChange=false;
      didChange=Pruner.exec(jprogram,true) || didChange;
      didChange=MethodAndClassFinalizer.exec(jprogram) || didChange;
      didChange=MakeCallsStatic.exec(jprogram) || didChange;
      didChange=TypeTightener.exec(jprogram) || didChange;
      didChange=MethodCallTightener.exec(jprogram) || didChange;
      didChange=DeadCodeElimination.exec(jprogram) || didChange;
      didChange=MethodInliner.exec(jprogram) || didChange;
      if (didChange) {
        jprogram.typeOracle.recomputeClinits();
      }
    }
 while (didChange);
    if (isDebugEnabled) {
    }
    CatchBlockNormalizer.exec(jprogram);
    CompoundAssignmentNormalizer.exec(jprogram);
    JavaScriptObjectCaster.exec(jprogram);
    CastNormalizer.exec(jprogram);
    ArrayNormalizer.exec(jprogram);
    Pruner.exec(jprogram,false);
    GenerateJavaScriptAST.exec(jprogram,jsProgram);
    JsSymbolResolver.exec(jsProgram);
    if (obfuscate) {
      JsObfuscateNamer.exec(jsProgram);
    }
 else     if (prettyNames) {
      JsPrettyNamer.exec(jsProgram);
    }
 else {
      JsVerboseNamer.exec(jsProgram);
    }
    StringWriter sw=new StringWriter();
    PrintWriter pw=new PrintWriter(sw,true);
    TextOutputOnPrintWriter out=new TextOutputOnPrintWriter(pw,obfuscate);
    JsSourceGenerationVisitor v=new JsSourceGenerationVisitor(out);
    v.accept(jsProgram);
    return sw.toString();
  }
 catch (  UnableToCompleteException e) {
    throw e;
  }
catch (  InternalCompilerException e) {
    TreeLogger topBranch=logger.branch(TreeLogger.ERROR,"String_Node_Str",e);
    List nodeTrace=e.getNodeTrace();
    for (Iterator it=nodeTrace.iterator(); it.hasNext(); ) {
      NodeInfo nodeInfo=(NodeInfo)it.next();
      SourceInfo info=nodeInfo.getSourceInfo();
      String msg;
      if (info != null) {
        String fileName=info.getFileName();
        fileName=fileName.substring(fileName.lastIndexOf('/') + 1);
        fileName=fileName.substring(fileName.lastIndexOf('\\') + 1);
        msg="String_Node_Str" + fileName + "String_Node_Str"+ info.getStartLine()+ "String_Node_Str";
      }
 else {
        msg="String_Node_Str";
      }
      String description=nodeInfo.getDescription();
      if (description != null) {
        msg+=description;
      }
 else {
        msg+="String_Node_Str";
      }
      TreeLogger nodeBranch=topBranch.branch(TreeLogger.ERROR,msg,null);
      String className=nodeInfo.getClassName();
      if (className != null) {
        nodeBranch.log(TreeLogger.INFO,className,null);
      }
    }
    throw new UnableToCompleteException();
  }
catch (  Throwable e) {
    logger.log(TreeLogger.ERROR,"String_Node_Str",e);
    throw new UnableToCompleteException();
  }
}

Fixed version (ground truth):
/** 
 * Creates finished JavaScript source code from the specified Java compilation units.
 */
public String compile(TreeLogger logger,RebindOracle rebindOracle) throws UnableToCompleteException {
  try {
    JProgram jprogram=new JProgram(logger,rebindOracle);
    TypeMap typeMap=new TypeMap(jprogram);
    JsProgram jsProgram=new JsProgram();
    TypeDeclaration[] allTypeDeclarations=BuildTypeMap.exec(typeMap,goldenCuds,jsProgram);
    checkForErrors(logger,true);
    jprogram.typeOracle.computeBeforeAST();
    GenerateJavaAST.exec(allTypeDeclarations,typeMap,jprogram);
    checkForErrors(logger,true);
    boolean isDebugEnabled=false;
    if (!isDebugEnabled) {
      AssertionRemover.exec(jprogram);
    }
    jprogram.typeOracle.computeAfterAST();
    ReplaceRebinds.exec(jprogram);
    findEntryPoints(logger,rebindOracle,declEntryPoints,jprogram);
    boolean didChange;
    do {
      didChange=false;
      didChange=Pruner.exec(jprogram,true) || didChange;
      didChange=MethodAndClassFinalizer.exec(jprogram) || didChange;
      didChange=MakeCallsStatic.exec(jprogram) || didChange;
      didChange=TypeTightener.exec(jprogram) || didChange;
      didChange=MethodCallTightener.exec(jprogram) || didChange;
      didChange=DeadCodeElimination.exec(jprogram) || didChange;
      didChange=MethodInliner.exec(jprogram) || didChange;
      if (didChange) {
        jprogram.typeOracle.recomputeClinits();
      }
    }
 while (didChange);
    if (isDebugEnabled) {
    }
    CatchBlockNormalizer.exec(jprogram);
    CompoundAssignmentNormalizer.exec(jprogram);
    JavaScriptObjectCaster.exec(jprogram);
    CastNormalizer.exec(jprogram);
    ArrayNormalizer.exec(jprogram);
    Pruner.exec(jprogram,false);
    GenerateJavaScriptAST.exec(jprogram,jsProgram);
    JsNormalizer.exec(jsProgram);
    JsSymbolResolver.exec(jsProgram);
    if (obfuscate) {
      JsObfuscateNamer.exec(jsProgram);
    }
 else     if (prettyNames) {
      JsPrettyNamer.exec(jsProgram);
    }
 else {
      JsVerboseNamer.exec(jsProgram);
    }
    StringWriter sw=new StringWriter();
    PrintWriter pw=new PrintWriter(sw,true);
    TextOutputOnPrintWriter out=new TextOutputOnPrintWriter(pw,obfuscate);
    JsSourceGenerationVisitor v=new JsSourceGenerationVisitor(out);
    v.accept(jsProgram);
    return sw.toString();
  }
 catch (  UnableToCompleteException e) {
    throw e;
  }
catch (  InternalCompilerException e) {
    TreeLogger topBranch=logger.branch(TreeLogger.ERROR,"String_Node_Str",e);
    List nodeTrace=e.getNodeTrace();
    for (Iterator it=nodeTrace.iterator(); it.hasNext(); ) {
      NodeInfo nodeInfo=(NodeInfo)it.next();
      SourceInfo info=nodeInfo.getSourceInfo();
      String msg;
      if (info != null) {
        String fileName=info.getFileName();
        fileName=fileName.substring(fileName.lastIndexOf('/') + 1);
        fileName=fileName.substring(fileName.lastIndexOf('\\') + 1);
        msg="String_Node_Str" + fileName + "String_Node_Str"+ info.getStartLine()+ "String_Node_Str";
      }
 else {
        msg="String_Node_Str";
      }
      String description=nodeInfo.getDescription();
      if (description != null) {
        msg+=description;
      }
 else {
        msg+="String_Node_Str";
      }
      TreeLogger nodeBranch=topBranch.branch(TreeLogger.ERROR,msg,null);
      String className=nodeInfo.getClassName();
      if (className != null) {
        nodeBranch.log(TreeLogger.INFO,className,null);
      }
    }
    throw new UnableToCompleteException();
  }
catch (  Throwable e) {
    logger.log(TreeLogger.ERROR,"String_Node_Str",e);
    throw new UnableToCompleteException();
  }
}