Program: 8775
Project: 8775
Buggy source:
private ArrayList<ColumnOrWildcard> parseColumns() throws ParseException {
  ArrayList<ColumnOrWildcard> list=new ArrayList<ColumnOrWildcard>();
  if (readIf("String_Node_Str")) {
    list.add(new ColumnOrWildcard());
  }
 else {
    do {
      ColumnOrWildcard column=new ColumnOrWildcard();
      if (readIf("String_Node_Str")) {
        column.propertyName=null;
      }
 else       if (readIf("String_Node_Str")) {
        column.propertyName=QueryImpl.REP_EXCERPT;
        read("String_Node_Str");
        if (!readIf("String_Node_Str")) {
          if (!readIf("String_Node_Str")) {
            column.selectorName=readName();
          }
          read("String_Node_Str");
        }
        readOptionalAlias(column);
      }
 else {
        column.propertyName=readName();
        if (column.propertyName.equals(QueryImpl.REP_SPELLCHECK)) {
          if (readIf("String_Node_Str")) {
            read("String_Node_Str");
            column.propertyName="String_Node_Str";
          }
          readOptionalAlias(column);
        }
 else         if (readIf("String_Node_Str")) {
          column.selectorName=column.propertyName;
          if (readIf("String_Node_Str")) {
            column.propertyName=null;
          }
 else {
            column.propertyName=readName();
            if (!readOptionalAlias(column)) {
              column.columnName=column.selectorName + "String_Node_Str" + column.propertyName;
            }
          }
        }
 else {
          readOptionalAlias(column);
        }
      }
      list.add(column);
    }
 while (readIf("String_Node_Str"));
  }
  return list;
}

Fixed version (ground truth):
private ArrayList<ColumnOrWildcard> parseColumns() throws ParseException {
  ArrayList<ColumnOrWildcard> list=new ArrayList<ColumnOrWildcard>();
  if (readIf("String_Node_Str")) {
    list.add(new ColumnOrWildcard());
  }
 else {
    do {
      ColumnOrWildcard column=new ColumnOrWildcard();
      if (readIf("String_Node_Str")) {
        column.propertyName=null;
      }
 else       if (readIf("String_Node_Str")) {
        column.propertyName="String_Node_Str";
        read("String_Node_Str");
        if (!readIf("String_Node_Str")) {
          if (!readIf("String_Node_Str")) {
            column.selectorName=readName();
          }
          read("String_Node_Str");
        }
        readOptionalAlias(column);
      }
 else {
        column.propertyName=readName();
        if (column.propertyName.equals("String_Node_Str")) {
          if (readIf("String_Node_Str")) {
            read("String_Node_Str");
            column.propertyName="String_Node_Str";
          }
          readOptionalAlias(column);
        }
 else         if (readIf("String_Node_Str")) {
          column.selectorName=column.propertyName;
          if (readIf("String_Node_Str")) {
            column.propertyName=null;
          }
 else {
            column.propertyName=readName();
            if (!readOptionalAlias(column)) {
              column.columnName=column.selectorName + "String_Node_Str" + column.propertyName;
            }
          }
        }
 else {
          readOptionalAlias(column);
        }
      }
      list.add(column);
    }
 while (readIf("String_Node_Str"));
  }
  return list;
}