Program: 53486
Project: 53486
Buggy source:
private boolean doCompile(TreeLogger compileLogger,CompileDir compileDir,Job job) throws UnableToCompleteException {
  job.onProgress("String_Node_Str");
  CompilerOptions loadOptions=new CompilerOptionsImpl(compileDir,inputModuleName,options);
  compilerContext=compilerContextBuilder.options(loadOptions).build();
  ModuleDef module=loadModule(job.getBindingProperties().keySet(),compileLogger);
  String recompileJs=generateModuleRecompileJs(module,compileLogger);
  Map<String,String> bindingProperties=restrictPermutations(compileLogger,module,job.getBindingProperties());
  String newModuleName=module.getName();
  outputModuleName.set(newModuleName);
  InputSummary input=new InputSummary(bindingProperties,module);
  if (input.equals(lastBuildInput)) {
    compileLogger.log(Type.INFO,"String_Node_Str");
    job.setCompileStrategy(CompileStrategy.SKIPPED);
    return true;
  }
  job.onProgress("String_Node_Str");
  CompilerOptions runOptions=new CompilerOptionsImpl(compileDir,newModuleName,options);
  compilerContext=compilerContextBuilder.options(runOptions).build();
  MinimalRebuildCache knownGoodMinimalRebuildCache=getKnownGoodMinimalRebuildCache(bindingProperties);
  job.setCompileStrategy(knownGoodMinimalRebuildCache.isPopulated() ? CompileStrategy.INCREMENTAL : CompileStrategy.FULL);
  MinimalRebuildCache mutableMinimalRebuildCache=new MinimalRebuildCache();
  mutableMinimalRebuildCache.copyFrom(knownGoodMinimalRebuildCache);
  boolean success=new Compiler(runOptions,mutableMinimalRebuildCache).run(compileLogger,module);
  if (success) {
    publishedCompileDir=compileDir;
    lastBuildInput=input;
    saveKnownGoodMinimalRebuildCache(bindingProperties,mutableMinimalRebuildCache);
    String moduleName=outputModuleName.get();
    writeRecompileNoCacheJs(new File(publishedCompileDir.getWarDir(),moduleName),moduleName,recompileJs,compileLogger);
    if (launcherDir != null) {
      launcherDir.update(module,compileDir,compileLogger);
    }
  }
 else {
    lastBuildInput=null;
  }
  lastBuild.set(compileDir);
  return success;
}

Fixed version (ground truth):
private boolean doCompile(TreeLogger compileLogger,CompileDir compileDir,Job job) throws UnableToCompleteException {
  job.onProgress("String_Node_Str");
  CompilerOptions loadOptions=new CompilerOptionsImpl(compileDir,inputModuleName,options);
  compilerContext=compilerContextBuilder.options(loadOptions).build();
  ModuleDef module=loadModule(job.getBindingProperties().keySet(),compileLogger);
  String recompileJs=generateModuleRecompileJs(module,compileLogger);
  Map<String,String> bindingProperties=restrictPermutations(compileLogger,module,job.getBindingProperties());
  String newModuleName=module.getName();
  outputModuleName.set(newModuleName);
  InputSummary input=new InputSummary(bindingProperties,module);
  if (input.equals(lastBuildInput)) {
    compileLogger.log(Type.INFO,"String_Node_Str");
    job.setCompileStrategy(CompileStrategy.SKIPPED);
    return true;
  }
  lastBuildInput=null;
  job.onProgress("String_Node_Str");
  CompilerOptions runOptions=new CompilerOptionsImpl(compileDir,newModuleName,options);
  compilerContext=compilerContextBuilder.options(runOptions).build();
  MinimalRebuildCache knownGoodMinimalRebuildCache=getKnownGoodMinimalRebuildCache(bindingProperties);
  job.setCompileStrategy(knownGoodMinimalRebuildCache.isPopulated() ? CompileStrategy.INCREMENTAL : CompileStrategy.FULL);
  MinimalRebuildCache mutableMinimalRebuildCache=new MinimalRebuildCache();
  mutableMinimalRebuildCache.copyFrom(knownGoodMinimalRebuildCache);
  boolean success=new Compiler(runOptions,mutableMinimalRebuildCache).run(compileLogger,module);
  if (success) {
    publishedCompileDir=compileDir;
    lastBuildInput=input;
    saveKnownGoodMinimalRebuildCache(bindingProperties,mutableMinimalRebuildCache);
    String moduleName=outputModuleName.get();
    writeRecompileNoCacheJs(new File(publishedCompileDir.getWarDir(),moduleName),moduleName,recompileJs,compileLogger);
    if (launcherDir != null) {
      launcherDir.update(module,compileDir,compileLogger);
    }
  }
  return success;
}