Program: 83205
Project: 83205
Buggy source:
private void generateGwtOnLoad(List entryFuncs,JsStatements globalStmts){
  JsFunction gwtOnLoad=new JsFunction(topScope);
  globalStmts.add(gwtOnLoad.makeStmt());
  JsName gwtOnLoadName=topScope.declareName("String_Node_Str");
  gwtOnLoadName.setObfuscatable(false);
  gwtOnLoad.setName(gwtOnLoadName);
  JsBlock body=new JsBlock();
  gwtOnLoad.setBody(body);
  JsScope fnScope=gwtOnLoad.getScope();
  JsParameters params=gwtOnLoad.getParameters();
  JsName errFn=fnScope.declareName("String_Node_Str");
  JsName modName=fnScope.declareName("String_Node_Str");
  params.add(new JsParameter(errFn));
  params.add(new JsParameter(modName));
  JsIf jsIf=new JsIf();
  body.getStatements().add(jsIf);
  jsIf.setIfExpr(errFn.makeRef());
  JsTry jsTry=new JsTry();
  jsIf.setThenStmt(jsTry);
  JsBlock callBlock=new JsBlock();
  jsIf.setElseStmt(callBlock);
  jsTry.setTryBlock(callBlock);
  for (int i=0; i < entryFuncs.size(); ++i) {
    JsFunction func=(JsFunction)entryFuncs.get(i);
    if (func != null) {
      JsInvocation call=new JsInvocation();
      call.setQualifier(func.getName().makeRef());
      callBlock.getStatements().add(call.makeStmt());
    }
  }
  JsCatch jsCatch=new JsCatch(fnScope,"String_Node_Str");
  jsTry.getCatches().add(jsCatch);
  JsBlock catchBlock=new JsBlock();
  jsCatch.setBody(catchBlock);
  JsInvocation errCall=new JsInvocation();
  catchBlock.getStatements().add(errCall.makeStmt());
  errCall.setQualifier(errFn.makeRef());
  errCall.getArguments().add(modName.makeRef());
}

Fixed version (ground truth):
private void generateGwtOnLoad(List entryFuncs,JsStatements globalStmts){
  JsFunction gwtOnLoad=new JsFunction(topScope);
  globalStmts.add(gwtOnLoad.makeStmt());
  JsName gwtOnLoadName=topScope.declareName("String_Node_Str");
  gwtOnLoadName.setObfuscatable(false);
  gwtOnLoad.setName(gwtOnLoadName);
  JsBlock body=new JsBlock();
  gwtOnLoad.setBody(body);
  JsScope fnScope=gwtOnLoad.getScope();
  JsParameters params=gwtOnLoad.getParameters();
  JsName errFn=fnScope.declareName("String_Node_Str");
  JsName modName=fnScope.declareName("String_Node_Str");
  JsName modBase=fnScope.declareName("String_Node_Str");
  params.add(new JsParameter(errFn));
  params.add(new JsParameter(modName));
  params.add(new JsParameter(modBase));
  JsExpression asg=createAssignment(topScope.findExistingUnobfuscatableName("String_Node_Str").makeRef(),modName.makeRef());
  body.getStatements().add(asg.makeStmt());
  asg=createAssignment(topScope.findExistingUnobfuscatableName("String_Node_Str").makeRef(),modBase.makeRef());
  body.getStatements().add(asg.makeStmt());
  JsIf jsIf=new JsIf();
  body.getStatements().add(jsIf);
  jsIf.setIfExpr(errFn.makeRef());
  JsTry jsTry=new JsTry();
  jsIf.setThenStmt(jsTry);
  JsBlock callBlock=new JsBlock();
  jsIf.setElseStmt(callBlock);
  jsTry.setTryBlock(callBlock);
  for (int i=0; i < entryFuncs.size(); ++i) {
    JsFunction func=(JsFunction)entryFuncs.get(i);
    if (func != null) {
      JsInvocation call=new JsInvocation();
      call.setQualifier(func.getName().makeRef());
      callBlock.getStatements().add(call.makeStmt());
    }
  }
  JsCatch jsCatch=new JsCatch(fnScope,"String_Node_Str");
  jsTry.getCatches().add(jsCatch);
  JsBlock catchBlock=new JsBlock();
  jsCatch.setBody(catchBlock);
  JsInvocation errCall=new JsInvocation();
  catchBlock.getStatements().add(errCall.makeStmt());
  errCall.setQualifier(errFn.makeRef());
  errCall.getArguments().add(modName.makeRef());
}