Program: 31284
Project: 31284
Buggy source:
/** 
 * {@inheritDoc}Returns the decoded version of the character starting at index, or null if no decoding is possible. See http://www.planetpdf.com/codecuts/pdfs/tutorial/jsspec.pdf  Formats all are legal both upper/lower case: \\a - special characters \\xHH \\uHHHH \\OOO (1, 2, or 3 digits)
 */
public Character decodeCharacter(PushbackString input){
  input.mark();
  Character first=input.next();
  if (first == null) {
    input.reset();
    return null;
  }
  if (first != '\\') {
    input.reset();
    return null;
  }
  Character second=input.next();
  if (second == null) {
    input.reset();
    return null;
  }
  if (second == 'b') {
    return 0x08;
  }
 else   if (second == 't') {
    return 0x09;
  }
 else   if (second == 'n') {
    return 0x0a;
  }
 else   if (second == 'v') {
    return 0x0b;
  }
 else   if (second == 'f') {
    return 0x0c;
  }
 else   if (second == 'r') {
    return 0x0d;
  }
 else   if (second == '\"') {
    return 0x22;
  }
 else   if (second == '\'') {
    return 0x27;
  }
 else   if (second == '\\') {
    return 0x5c;
  }
 else   if (Character.toLowerCase(second.charValue()) == 'x') {
    StringBuilder sb=new StringBuilder();
    for (int i=0; i < 2; i++) {
      Character c=input.nextHex();
      if (c != null)       sb.append(c);
 else {
        input.reset();
        return null;
      }
    }
    try {
      int i=Integer.parseInt(sb.toString(),16);
      if (Character.isValidCodePoint(i)) {
        return (char)i;
      }
    }
 catch (    NumberFormatException e) {
      input.reset();
      return null;
    }
  }
 else   if (Character.toLowerCase(second.charValue()) == 'u') {
    StringBuilder sb=new StringBuilder();
    for (int i=0; i < 4; i++) {
      Character c=input.nextHex();
      if (c != null)       sb.append(c);
 else {
        input.reset();
        return null;
      }
    }
    try {
      int i=Integer.parseInt(sb.toString(),16);
      if (Character.isValidCodePoint(i)) {
        return (char)i;
      }
    }
 catch (    NumberFormatException e) {
      input.reset();
      return null;
    }
  }
 else   if (PushbackString.isOctalDigit(second)) {
    StringBuilder sb=new StringBuilder();
    sb.append(second);
    Character c2=input.next();
    if (!PushbackString.isOctalDigit(c2)) {
      input.pushback(c2);
    }
 else {
      sb.append(c2);
      Character c3=input.next();
      if (!PushbackString.isOctalDigit(c3)) {
        input.pushback(c3);
      }
 else {
        sb.append(c3);
      }
    }
    try {
      int i=Integer.parseInt(sb.toString(),8);
      if (Character.isValidCodePoint(i)) {
        return (char)i;
      }
    }
 catch (    NumberFormatException e) {
      input.reset();
      return null;
    }
  }
  return second;
}

Fixed version (ground truth):
/** 
 * {@inheritDoc}Returns the decoded version of the character starting at index, or null if no decoding is possible. See http://www.planetpdf.com/codecuts/pdfs/tutorial/jsspec.pdf  Formats all are legal both upper/lower case: \\a - special characters \\xHH \\uHHHH \\OOO (1, 2, or 3 digits)
 */
public Character decodeCharacter(PushbackSequence<Character> input){
  input.mark();
  Character first=input.next();
  if (first == null) {
    input.reset();
    return null;
  }
  if (first != '\\') {
    input.reset();
    return null;
  }
  Character second=input.next();
  if (second == null) {
    input.reset();
    return null;
  }
  if (second == 'b') {
    return 0x08;
  }
 else   if (second == 't') {
    return 0x09;
  }
 else   if (second == 'n') {
    return 0x0a;
  }
 else   if (second == 'v') {
    return 0x0b;
  }
 else   if (second == 'f') {
    return 0x0c;
  }
 else   if (second == 'r') {
    return 0x0d;
  }
 else   if (second == '\"') {
    return 0x22;
  }
 else   if (second == '\'') {
    return 0x27;
  }
 else   if (second == '\\') {
    return 0x5c;
  }
 else   if (Character.toLowerCase(second.charValue()) == 'x') {
    StringBuilder sb=new StringBuilder();
    for (int i=0; i < 2; i++) {
      Character c=input.nextHex();
      if (c != null)       sb.append(c);
 else {
        input.reset();
        return null;
      }
    }
    try {
      int i=Integer.parseInt(sb.toString(),16);
      if (Character.isValidCodePoint(i)) {
        return (char)i;
      }
    }
 catch (    NumberFormatException e) {
      input.reset();
      return null;
    }
  }
 else   if (Character.toLowerCase(second.charValue()) == 'u') {
    StringBuilder sb=new StringBuilder();
    for (int i=0; i < 4; i++) {
      Character c=input.nextHex();
      if (c != null)       sb.append(c);
 else {
        input.reset();
        return null;
      }
    }
    try {
      int i=Integer.parseInt(sb.toString(),16);
      if (Character.isValidCodePoint(i)) {
        return (char)i;
      }
    }
 catch (    NumberFormatException e) {
      input.reset();
      return null;
    }
  }
 else   if (PushbackString.isOctalDigit(second)) {
    StringBuilder sb=new StringBuilder();
    sb.append(second);
    Character c2=input.next();
    if (!PushbackString.isOctalDigit(c2)) {
      input.pushback(c2);
    }
 else {
      sb.append(c2);
      Character c3=input.next();
      if (!PushbackString.isOctalDigit(c3)) {
        input.pushback(c3);
      }
 else {
        sb.append(c3);
      }
    }
    try {
      int i=Integer.parseInt(sb.toString(),8);
      if (Character.isValidCodePoint(i)) {
        return (char)i;
      }
    }
 catch (    NumberFormatException e) {
      input.reset();
      return null;
    }
  }
  return second;
}