Program: 53842
Project: 53842
Buggy source:
/** 
 * @param logger
 * @param m
 * @param locale
 * @param resourceEntry
 * @param selectors
 * @param paramsAccessor
 * @param isSafeHtml
 * @param forms
 * @throws UnableToCompleteException
 */
private void generateMessageSelectors(TreeLogger logger,JMethod m,GwtLocale locale,ResourceEntry resourceEntry,List<AlternateFormSelector> selectors,Parameters paramsAccessor,boolean isSafeHtml,String[] forms) throws UnableToCompleteException {
  int numSelectors=selectors.size();
  String[] lastForm=new String[numSelectors];
  for (  String form : forms) {
    String[] splitForms=form.split("String_Node_Str");
    if (splitForms.length != numSelectors) {
      throw error(logger,"String_Node_Str" + m.getName() + "String_Node_Str"+ form+ "String_Node_Str");
    }
    boolean allOther=true;
    for (    String splitForm : splitForms) {
      if (splitForm.startsWith("String_Node_Str")) {
        allOther=false;
      }
 else       if (!"String_Node_Str".equals(splitForm)) {
        allOther=false;
      }
    }
    if (allOther) {
      logger.log(TreeLogger.WARN,"String_Node_Str" + "String_Node_Str");
      continue;
    }
    int firstDifferent=0;
    while (firstDifferent < numSelectors && splitForms[firstDifferent].equals(lastForm[firstDifferent])) {
      firstDifferent++;
    }
    for (int i=numSelectors; i-- > firstDifferent; ) {
      if (lastForm[i] != null) {
        selectors.get(i).generateSelectMatchEnd(writer,lastForm[i]);
        if (i > firstDifferent) {
          selectors.get(i).generateSelectEnd(writer);
        }
      }
    }
    for (int i=firstDifferent; i < numSelectors; ++i) {
      if (i > firstDifferent || lastForm[i] == null) {
        selectors.get(i).generateSelectStart(writer,splitForms[i].startsWith("String_Node_Str"));
      }
      selectors.get(i).generateSelectMatchStart(writer,logger,splitForms[i]);
      lastForm[i]=splitForms[i];
    }
    writer.print("String_Node_Str");
    generateString(logger,locale,resourceEntry.getForm(form),paramsAccessor,writer,isSafeHtml);
    writer.println("String_Node_Str");
  }
  for (int i=numSelectors; i-- > 0; ) {
    if (lastForm[i] != null) {
      selectors.get(i).generateSelectMatchEnd(writer,lastForm[i]);
      selectors.get(i).generateSelectEnd(writer);
    }
  }
}

Fixed version (ground truth):
/** 
 * @param logger
 * @param m
 * @param locale
 * @param resourceEntry
 * @param selectors
 * @param paramsAccessor
 * @param isSafeHtml
 * @param forms
 * @throws UnableToCompleteException
 */
private void generateMessageSelectors(TreeLogger logger,JMethod m,GwtLocale locale,ResourceEntry resourceEntry,List<AlternateFormSelector> selectors,Parameters paramsAccessor,boolean isSafeHtml,String[] forms) throws UnableToCompleteException {
  int numSelectors=selectors.size();
  String[] lastForm=new String[numSelectors];
  for (  String form : forms) {
    String[] splitForms=form.split("String_Node_Str");
    if (splitForms.length != numSelectors) {
      throw error(logger,"String_Node_Str" + m.getName() + "String_Node_Str"+ form+ "String_Node_Str");
    }
    boolean allOther=true;
    for (    String splitForm : splitForms) {
      if (splitForm.startsWith("String_Node_Str")) {
        allOther=false;
      }
 else       if (!AlternateMessageSelector.OTHER_FORM_NAME.equals(splitForm)) {
        allOther=false;
      }
    }
    if (allOther) {
      logger.log(TreeLogger.WARN,"String_Node_Str" + "String_Node_Str");
      continue;
    }
    int firstDifferent=0;
    while (firstDifferent < numSelectors && splitForms[firstDifferent].equals(lastForm[firstDifferent])) {
      firstDifferent++;
    }
    for (int i=numSelectors; i-- > firstDifferent; ) {
      if (lastForm[i] != null) {
        selectors.get(i).generateSelectMatchEnd(writer,lastForm[i]);
        if (i > firstDifferent) {
          selectors.get(i).generateSelectEnd(writer);
        }
      }
    }
    for (int i=firstDifferent; i < numSelectors; ++i) {
      if (i > firstDifferent || lastForm[i] == null) {
        selectors.get(i).generateSelectStart(writer,splitForms[i].startsWith("String_Node_Str"));
      }
      selectors.get(i).generateSelectMatchStart(writer,logger,splitForms[i]);
      lastForm[i]=splitForms[i];
    }
    writer.print("String_Node_Str");
    generateString(logger,locale,resourceEntry.getForm(form),paramsAccessor,writer,isSafeHtml);
    writer.println("String_Node_Str");
  }
  for (int i=numSelectors; i-- > 0; ) {
    if (lastForm[i] != null) {
      selectors.get(i).generateSelectMatchEnd(writer,lastForm[i]);
      selectors.get(i).generateSelectEnd(writer);
    }
  }
}