Program: 31400
Project: 31400
Buggy source:
/** 
 * Returns the decoded version of the character starting at index, or null if no decoding is possible. Formats all are legal both upper/lower case: \\a - special characters \\xHH \\uHHHH
 */
public Character decodeCharacter(PushbackString input){
  input.mark();
  Character first=input.next();
  if (first == null) {
    input.reset();
    return null;
  }
  if (first.charValue() != '\\') {
    input.reset();
    return null;
  }
  Character second=input.next();
  if (second == null) {
    input.reset();
    return null;
  }
  if (second.charValue() == '0') {
    return new Character((char)0x00);
  }
 else   if (second.charValue() == 'b') {
    return new Character((char)0x08);
  }
 else   if (second.charValue() == 't') {
    return new Character((char)0x09);
  }
 else   if (second.charValue() == 'n') {
    return new Character((char)0x0a);
  }
 else   if (second.charValue() == 'v') {
    return new Character((char)0x0b);
  }
 else   if (second.charValue() == 'f') {
    return new Character((char)0x0c);
  }
 else   if (second.charValue() == 'r') {
    return new Character((char)0x0d);
  }
 else   if (second.charValue() == '\"') {
    return new Character((char)0x22);
  }
 else   if (second.charValue() == '\'') {
    return new Character((char)0x27);
  }
 else   if (second.charValue() == '\\') {
    return new Character((char)0x5c);
  }
 else   if (Character.toLowerCase(second.charValue()) == 'x') {
    StringBuffer sb=new StringBuffer();
    for (int i=0; i < 2; i++) {
      Character c=input.nextHex();
      if (c != null)       sb.append(c);
    }
    if (sb.length() == 2) {
      try {
        int i=Integer.parseInt(sb.toString(),16);
        return new Character((char)i);
      }
 catch (      NumberFormatException e) {
      }
    }
  }
 else   if (Character.toLowerCase(second.charValue()) == 'u') {
    StringBuffer sb=new StringBuffer();
    for (int i=0; i < 4; i++) {
      Character c=input.nextHex();
      if (c != null)       sb.append(c);
    }
    if (sb.length() == 4) {
      try {
        int i=Integer.parseInt(sb.toString(),16);
        return new Character((char)i);
      }
 catch (      NumberFormatException e) {
      }
    }
  }
  input.reset();
  return null;
}

Fixed version (ground truth):
/** 
 * Returns the decoded version of the character starting at index, or null if no decoding is possible. Formats all are legal both upper/lower case: \\a - special characters \\xHH \\uHHHH
 */
public Character decodeCharacter(PushbackString input){
  input.mark();
  Character first=input.next();
  if (first == null) {
    input.reset();
    return null;
  }
  if (first.charValue() != '\\') {
    input.reset();
    return null;
  }
  Character second=input.next();
  if (second == null) {
    input.reset();
    return null;
  }
  if (second.charValue() == '0') {
    return new Character((char)0x00);
  }
 else   if (second.charValue() == 'b') {
    return new Character((char)0x08);
  }
 else   if (second.charValue() == 't') {
    return new Character((char)0x09);
  }
 else   if (second.charValue() == 'n') {
    return new Character((char)0x0a);
  }
 else   if (second.charValue() == 'v') {
    return new Character((char)0x0b);
  }
 else   if (second.charValue() == 'f') {
    return new Character((char)0x0c);
  }
 else   if (second.charValue() == 'r') {
    return new Character((char)0x0d);
  }
 else   if (second.charValue() == '\"') {
    return new Character((char)0x22);
  }
 else   if (second.charValue() == '\'') {
    return new Character((char)0x27);
  }
 else   if (second.charValue() == '\\') {
    return new Character((char)0x5c);
  }
 else   if (Character.toLowerCase(second.charValue()) == 'x') {
    StringBuffer sb=new StringBuffer();
    for (int i=0; i < 2; i++) {
      Character c=input.nextHex();
      if (c != null)       sb.append(c);
    }
    if (sb.length() == 2) {
      try {
        int i=Integer.parseInt(sb.toString(),16);
        return new Character((char)i);
      }
 catch (      NumberFormatException e) {
        input.reset();
        return null;
      }
    }
  }
 else   if (Character.toLowerCase(second.charValue()) == 'u') {
    StringBuffer sb=new StringBuffer();
    for (int i=0; i < 4; i++) {
      Character c=input.nextHex();
      if (c != null)       sb.append(c);
    }
    if (sb.length() == 4) {
      try {
        int i=Integer.parseInt(sb.toString(),16);
        return new Character((char)i);
      }
 catch (      NumberFormatException e) {
        input.reset();
        return null;
      }
    }
  }
  return second;
}