Program: 187977
Project: 187977
Buggy source:
private static void convert(final InputStream in,final PrintStream out) throws IOException {
  out.println("String_Node_Str");
  boolean dollar=false;
  for (int d; (d=in.read()) != -1; )   if (d == '$') {
    dollar^=true;
    out.write(d);
  }
 else   if (dollar)   out.write(d);
 else   if (d == '\033') {
    d=in.read();
    if (d == '[') {
      d=in.read();
      if (d == 'm')       out.print("String_Node_Str");
      int lastlast=0;
      int last=0;
      int item=0;
      for (; ; ) {
        if ((d == ';') || (d == 'm')) {
          item=-item;
          if (item == 0)           out.print("String_Node_Str");
 else           if (item == 39)           out.print("String_Node_Str");
 else           if (item == 49)           out.print("String_Node_Str");
 else           if ((last == 5) && (lastlast == 38)) {
            Colour colour=new Colour(item);
            out.print(getOSIPCode(colour.red,colour.green,colour.blue,false));
          }
 else           if ((last == 5) && (lastlast == 48)) {
            Colour colour=new Colour(item);
            out.print(getOSIPCode(colour.red,colour.green,colour.blue,true));
          }
 else           if ((item != 5) || ((last != 38) && (last != 48)))           if ((item != 38) && (item != 48)) {
            System.err.println("String_Node_Str");
            System.exit(-1);
          }
          lastlast=last;
          last=item;
          item=0;
          if (d == 'm')           break;
        }
 else         item=(item * 10) - (d & 15);
        d=in.read();
      }
    }
 else {
      System.err.println("String_Node_Str");
      System.exit(-1);
    }
  }
 else   out.write(d);
}

Fixed version (ground truth):
private static void convert(final InputStream in,final PrintStream out) throws IOException {
  out.print("String_Node_Str");
  boolean dollar=false;
  for (int d; (d=in.read()) != -1; )   if (d == '$') {
    dollar^=true;
    out.write(d);
  }
 else   if (dollar)   out.write(d);
 else   if (d == '\033') {
    d=in.read();
    if (d == '[') {
      d=in.read();
      if (d == 'm')       out.print("String_Node_Str");
      int lastlast=0;
      int last=0;
      int item=0;
      for (; ; ) {
        if ((d == ';') || (d == 'm')) {
          item=-item;
          if (item == 0)           out.print("String_Node_Str");
 else           if (item == 39)           out.print("String_Node_Str");
 else           if (item == 49)           out.print("String_Node_Str");
 else           if ((last == 5) && (lastlast == 38)) {
            Colour colour=new Colour(item);
            out.print(getOSIPCode(colour.red,colour.green,colour.blue,false));
          }
 else           if ((last == 5) && (lastlast == 48)) {
            Colour colour=new Colour(item);
            out.print(getOSIPCode(colour.red,colour.green,colour.blue,true));
          }
 else           if ((item != 5) || ((last != 38) && (last != 48)))           if ((item != 38) && (item != 48)) {
            System.err.println("String_Node_Str");
            System.exit(-1);
          }
          lastlast=last;
          last=item;
          item=0;
          if (d == 'm')           break;
        }
 else         item=(item * 10) - (d & 15);
        d=in.read();
      }
    }
 else {
      System.err.println("String_Node_Str");
      System.exit(-1);
    }
  }
 else   out.write(d);
}