Program: 163378
Project: 163378
Buggy source:
private void parseQuotedValue(char prev){
  ch=input.nextChar();
  while (!(prev == quote && (ch <= ' ' || ch == delimiter || ch == newLine))) {
    if (ch != quote && ch != quoteEscape) {
      if (prev == quote) {
        if (parseUnescapedQuotes) {
          output.appender.append(quote);
          output.appender.append(ch);
          parseQuotedValue(ch);
          break;
        }
 else {
          throw new TextParsingException(context,"String_Node_Str" + quote + "String_Node_Str");
        }
      }
      output.appender.append(ch);
      prev=ch;
    }
 else     if (ch == quoteEscape && prev == escapeEscape && escapeEscape != '\0') {
      if (keepEscape) {
        output.appender.append(escapeEscape);
      }
      output.appender.append(quoteEscape);
      prev='\0';
    }
 else     if (prev == quoteEscape) {
      if (ch == quote) {
        if (keepEscape) {
          output.appender.append(quoteEscape);
        }
        output.appender.append(quote);
        prev='\0';
      }
 else {
        output.appender.append(prev);
      }
    }
 else {
      prev=ch;
    }
    ch=input.nextChar();
  }
  if (ch != delimiter && ch != newLine && ch <= ' ') {
    whitespaceAppender.reset();
    do {
      whitespaceAppender.append(ch);
      ch=input.nextChar();
      if (ch == newLine) {
        return;
      }
    }
 while (ch <= ' ');
    if (ch != delimiter && parseUnescapedQuotes) {
      if (output.appender instanceof DefaultCharAppender) {
        output.appender.append(quote);
        ((DefaultCharAppender)output.appender).append(whitespaceAppender);
      }
      if (ch != quoteEscape) {
        output.appender.append(ch);
      }
      parseQuotedValue(ch);
    }
  }
  if (ch != delimiter && ch != newLine) {
    throw new TextParsingException(context,"String_Node_Str" + ch + "String_Node_Str"+ delimiter+ "String_Node_Str");
  }
}

Fixed version (ground truth):
private void parseQuotedValue(char prev){
  ch=input.nextChar();
  while (!(prev == quote && (ch <= ' ' || ch == delimiter || ch == newLine))) {
    if (ch != quote && ch != quoteEscape) {
      if (prev == quote) {
        if (parseUnescapedQuotes) {
          output.appender.append(quote);
          output.appender.append(ch);
          parseQuotedValue(ch);
          break;
        }
 else {
          throw new TextParsingException(context,"String_Node_Str" + quote + "String_Node_Str");
        }
      }
      output.appender.append(ch);
      prev=ch;
    }
 else     if (ch == quoteEscape && prev == escapeEscape && escapeEscape != '\0') {
      if (keepEscape) {
        output.appender.append(escapeEscape);
      }
      output.appender.append(quoteEscape);
      prev='\0';
    }
 else     if (prev == quoteEscape) {
      if (ch == quote) {
        if (keepEscape) {
          output.appender.append(quoteEscape);
        }
        output.appender.append(quote);
        prev='\0';
      }
 else {
        output.appender.append(prev);
      }
    }
 else     if (ch == quote && prev == quote) {
      output.appender.append(quote);
    }
 else {
      prev=ch;
    }
    ch=input.nextChar();
  }
  if (ch != delimiter && ch != newLine && ch <= ' ') {
    whitespaceAppender.reset();
    do {
      whitespaceAppender.append(ch);
      ch=input.nextChar();
      if (ch == newLine) {
        return;
      }
    }
 while (ch <= ' ');
    if (ch != delimiter && parseUnescapedQuotes) {
      if (output.appender instanceof DefaultCharAppender) {
        output.appender.append(quote);
        ((DefaultCharAppender)output.appender).append(whitespaceAppender);
      }
      if (ch != quote && ch != quoteEscape) {
        output.appender.append(ch);
      }
      parseQuotedValue(ch);
    }
  }
  if (ch != delimiter && ch != newLine) {
    throw new TextParsingException(context,"String_Node_Str" + ch + "String_Node_Str"+ delimiter+ "String_Node_Str");
  }
}