Program: 16002
Project: 16002
Buggy source:
public boolean autoComplete(Sentence sentence){
  sentence.stopIfRequired();
  String query=sentence.getQuery();
  String s=query;
switch (type) {
case YMD:
    while (s.length() > 0 && "String_Node_Str".indexOf(s.charAt(0)) >= 0) {
      s=s.substring(1);
    }
  if (s.length() == 0) {
    sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
  }
break;
case HMS:
while (s.length() > 0 && "String_Node_Str".indexOf(s.charAt(0)) >= 0) {
s=s.substring(1);
}
if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case NANOS:
while (s.length() > 0 && Character.isDigit(s.charAt(0))) {
s=s.substring(1);
}
if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case ANY_EXCEPT_SINGLE_QUOTE:
while (true) {
while (s.length() > 0 && s.charAt(0) != '\'') {
s=s.substring(1);
}
if (s.startsWith("String_Node_Str")) {
s=s.substring(2);
}
 else {
break;
}
}
if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case ANY_EXCEPT_2_DOLLAR:
while (s.length() > 0 && !s.startsWith("String_Node_Str")) {
s=s.substring(1);
}
if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case ANY_EXCEPT_DOUBLE_QUOTE:
while (true) {
while (s.length() > 0 && s.charAt(0) != '\"') {
s=s.substring(1);
}
if (s.startsWith("String_Node_Str")) {
s=s.substring(2);
}
 else {
break;
}
}
if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case ANY_WORD:
while (s.length() > 0 && !Character.isSpaceChar(s.charAt(0))) {
s=s.substring(1);
}
if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case HEX_START:
if (s.startsWith("String_Node_Str") || s.startsWith("String_Node_Str")) {
s=s.substring(2);
}
 else if ("String_Node_Str".equals(s)) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
 else if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case CONCAT:
if (s.equals("String_Node_Str")) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
 else if (s.startsWith("String_Node_Str")) {
s=s.substring(2);
}
 else if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case AZ_UNDERSCORE:
if (s.length() > 0 && (Character.isLetter(s.charAt(0)) || s.charAt(0) == '_')) {
s=s.substring(1);
}
if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case AF:
if (s.length() > 0) {
char ch=Character.toUpperCase(s.charAt(0));
if (ch >= 'A' && ch <= 'F') {
s=s.substring(1);
}
}
if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case DIGIT:
if (s.length() > 0 && Character.isDigit(s.charAt(0))) {
s=s.substring(1);
}
if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case OPEN_BRACKET:
if (s.startsWith("String_Node_Str")) {
s=s.substring(1);
}
 else if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case CLOSE_BRACKET:
if (s.startsWith("String_Node_Str")) {
s=s.substring(1);
}
 else if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case ANY_UNTIL_EOL:
case ANY_UNTIL_END:
default :
throw new AssertionError("String_Node_Str" + type);
}
if (!s.equals(query)) {
while (s.length() > 0 && Character.isSpaceChar(s.charAt(0))) {
s=s.substring(1);
}
sentence.setQuery(s);
return true;
}
return false;
}

Fixed version (ground truth):
public boolean autoComplete(Sentence sentence){
  sentence.stopIfRequired();
  String query=sentence.getQuery();
  String s=query;
switch (type) {
case YMD:
    while (s.length() > 0 && "String_Node_Str".indexOf(s.charAt(0)) >= 0) {
      s=s.substring(1);
    }
  if (s.length() == 0) {
    sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
  }
break;
case HMS:
while (s.length() > 0 && "String_Node_Str".indexOf(s.charAt(0)) >= 0) {
s=s.substring(1);
}
if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case NANOS:
while (s.length() > 0 && Character.isDigit(s.charAt(0))) {
s=s.substring(1);
}
if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case ANY_EXCEPT_SINGLE_QUOTE:
while (true) {
while (s.length() > 0 && s.charAt(0) != '\'') {
s=s.substring(1);
}
if (s.startsWith("String_Node_Str")) {
s=s.substring(2);
}
 else {
break;
}
}
if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case ANY_EXCEPT_2_DOLLAR:
while (s.length() > 0 && !s.startsWith("String_Node_Str")) {
s=s.substring(1);
}
if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case ANY_EXCEPT_DOUBLE_QUOTE:
while (true) {
while (s.length() > 0 && s.charAt(0) != '\"') {
s=s.substring(1);
}
if (s.startsWith("String_Node_Str")) {
s=s.substring(2);
}
 else {
break;
}
}
if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case ANY_WORD:
while (s.length() > 0 && !Character.isSpaceChar(s.charAt(0))) {
s=s.substring(1);
}
if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case HEX_START:
if (s.startsWith("String_Node_Str") || s.startsWith("String_Node_Str")) {
s=s.substring(2);
}
 else if ("String_Node_Str".equals(s)) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
 else if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case CONCAT:
if (s.equals("String_Node_Str")) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
 else if (s.startsWith("String_Node_Str")) {
s=s.substring(2);
}
 else if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case AZ_UNDERSCORE:
if (s.length() > 0 && (Character.isLetter(s.charAt(0)) || s.charAt(0) == '_')) {
s=s.substring(1);
}
if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case AF:
if (s.length() > 0) {
char ch=Character.toUpperCase(s.charAt(0));
if (ch >= 'A' && ch <= 'F') {
s=s.substring(1);
}
}
if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case DIGIT:
if (s.length() > 0 && Character.isDigit(s.charAt(0))) {
s=s.substring(1);
}
if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
break;
case OPEN_BRACKET:
if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
 else if (s.charAt(0) == '[') {
s=s.substring(1);
}
break;
case CLOSE_BRACKET:
if (s.length() == 0) {
sentence.add("String_Node_Str","String_Node_Str",Sentence.KEYWORD);
}
 else if (s.charAt(0) == ']') {
s=s.substring(1);
}
break;
case ANY_UNTIL_EOL:
case ANY_UNTIL_END:
default :
throw new AssertionError("String_Node_Str" + type);
}
if (!s.equals(query)) {
while (s.length() > 0 && Character.isSpaceChar(s.charAt(0))) {
s=s.substring(1);
}
sentence.setQuery(s);
return true;
}
return false;
}