Program: 99146
Project: 99146
Buggy source:
public RLEDecoder(String specification){
  xFillCounter=0;
  yFillCounter=0;
  StringTokenizer lineTokenizer=new StringTokenizer(specification,"String_Node_Str");
  String headerline="String_Node_Str";
  while (!headerline.contains("String_Node_Str") || !headerline.contains("String_Node_Str")) {
    headerline=lineTokenizer.nextToken();
  }
  StringTokenizer headerlineTokenizer=new StringTokenizer(headerline,"String_Node_Str");
  int cols=Integer.parseInt(headerlineTokenizer.nextToken().replaceAll("String_Node_Str","String_Node_Str"));
  int rows=Integer.parseInt(headerlineTokenizer.nextToken().replaceAll("String_Node_Str","String_Node_Str"));
  int[][] board=new int[rows][cols];
  String pattern="String_Node_Str";
  while (lineTokenizer.hasMoreTokens()) {
    pattern+=lineTokenizer.nextToken();
  }
  pattern.replaceAll("String_Node_Str","String_Node_Str");
  int characters=pattern.length();
  String repeatDigitBuffer="String_Node_Str";
  int repeatCounter=0;
  commandType CT=commandType.NORMAL;
  for (int c=0; c < characters; c++) {
    char newChar=pattern.charAt(c);
    if (CT == commandType.NORMAL) {
      if (Character.isDigit(newChar)) {
        repeatDigitBuffer+=newChar;
        CT=commandType.REPEAT;
      }
 else       if (newChar == 'o') {
        setCell(true);
      }
 else       if (newChar == 'b') {
        setCell(false);
      }
 else       if (newChar == '$' || newChar == '!') {
        setDeadUntilNewline();
      }
    }
 else     if (CT == commandType.REPEAT) {
      if (Character.isDigit(newChar)) {
        repeatDigitBuffer+=newChar;
      }
 else       if (newChar == 'o') {
        repeatCounter=Integer.parseInt(repeatDigitBuffer);
        for (int r=0; r < repeatCounter; r++) {
          setCell(true);
        }
        CT=commandType.NORMAL;
      }
 else       if (newChar == 'b') {
        repeatCounter=Integer.parseInt(repeatDigitBuffer);
        for (int r=0; r < repeatCounter; r++) {
          setCell(false);
        }
        CT=commandType.NORMAL;
      }
    }
  }
}

Fixed version (ground truth):
public RLEDecoder(String specification){
  xFillCounter=0;
  yFillCounter=0;
  StringTokenizer lineTokenizer=new StringTokenizer(specification,"String_Node_Str");
  String headerline="String_Node_Str";
  while (!headerline.contains("String_Node_Str") || !headerline.contains("String_Node_Str")) {
    headerline=lineTokenizer.nextToken();
  }
  StringTokenizer headerlineTokenizer=new StringTokenizer(headerline,"String_Node_Str");
  cols=Integer.parseInt(headerlineTokenizer.nextToken().replaceAll("String_Node_Str","String_Node_Str"));
  rows=Integer.parseInt(headerlineTokenizer.nextToken().replaceAll("String_Node_Str","String_Node_Str"));
  board=new int[rows][cols];
  String pattern="String_Node_Str";
  while (lineTokenizer.hasMoreTokens()) {
    pattern+=lineTokenizer.nextToken();
  }
  pattern.replaceAll("String_Node_Str","String_Node_Str");
  int characters=pattern.length();
  String repeatDigitBuffer="String_Node_Str";
  int repeatCounter=0;
  commandType CT=commandType.NORMAL;
  for (int c=0; c < characters; c++) {
    char newChar=pattern.charAt(c);
    if (CT == commandType.NORMAL) {
      if (Character.isDigit(newChar)) {
        repeatDigitBuffer+=newChar;
        CT=commandType.REPEAT;
      }
 else       if (newChar == 'o') {
        setCell(true);
      }
 else       if (newChar == 'b') {
        setCell(false);
      }
 else       if (newChar == '$' || newChar == '!') {
        setDeadUntilNewline();
      }
    }
 else     if (CT == commandType.REPEAT) {
      if (Character.isDigit(newChar)) {
        repeatDigitBuffer+=newChar;
      }
 else       if (newChar == 'o') {
        repeatCounter=Integer.parseInt(repeatDigitBuffer);
        repeatDigitBuffer="String_Node_Str";
        for (int r=0; r < repeatCounter; r++) {
          setCell(true);
        }
        CT=commandType.NORMAL;
      }
 else       if (newChar == 'b') {
        repeatCounter=Integer.parseInt(repeatDigitBuffer);
        repeatDigitBuffer="String_Node_Str";
        for (int r=0; r < repeatCounter; r++) {
          setCell(false);
        }
        CT=commandType.NORMAL;
      }
    }
  }
}