Program: 166031
Project: 166031
Buggy source:
@Override public void draw(Window window,int x,int y){
  super.draw(window,x,y);
  tabCounter=0;
  y+=3;
  int starty=y;
  int dx;
  for (  Line line : lines) {
    if (line.isNexttab()) {
      y=starty;
      x+=getBounds().width / 2;
      tabCounter++;
    }
 else     if (line.recipe != null) {
      y+=4;
      GL11.glColor4f(1.0F,1.0F,1.0F,1.0F);
      ShapedRecipes shapedRecipes=(ShapedRecipes)line.recipe;
      if (craftingGridImage != null) {
        GL11.glColor4f(1.0F,1.0F,1.0F,1.0F);
        mc.getTextureManager().bindTexture(craftingGridImage);
        gui.drawTexturedModalRect(25 + x,y,craftU,craftV,19 * 3,19 * 3);
      }
      for (int i=0; i < 3; i++) {
        for (int j=0; j < 3; j++) {
          RenderHelper.renderObject(mc,26 + x + i * 18,1 + y + j * 18,shapedRecipes.recipeItems[i + j * 3],false);
        }
      }
      if (arrowImage != null) {
        GL11.glColor4f(1.0F,1.0F,1.0F,1.0F);
        mc.getTextureManager().bindTexture(arrowImage);
        gui.drawTexturedModalRect(x + 25 + 67,y + 18,arrowU,arrowV,16,16);
      }
      if (craftingGridImage != null) {
        GL11.glColor4f(1.0F,1.0F,1.0F,1.0F);
        mc.getTextureManager().bindTexture(craftingGridImage);
        gui.drawTexturedModalRect(x + 25 + 92,y + 16,craftU,craftV,18,18);
      }
      RenderHelper.renderObject(mc,x + 25 + 93,y + 17,shapedRecipes.getRecipeOutput(),false);
      y-=4;
    }
 else     if (line.line != null) {
      String s="String_Node_Str";
      int col=0xFF000000;
      dx=0;
      if (line.isBold()) {
        char c=167;
        s=Character.toString(c) + "String_Node_Str";
      }
      if (line.isLink()) {
        char c=167;
        s=Character.toString(c) + "String_Node_Str";
        col=0xFF0040AA;
        dx=25;
      }
      s+=line.line;
      mc.fontRenderer.drawString(mc.fontRenderer.trimStringToWidth(s,bounds.width - dx),x + dx + bounds.x,y + bounds.y,col);
    }
    y+=line.height;
  }
}

Fixed version (ground truth):
@Override public void draw(Window window,int x,int y){
  super.draw(window,x,y);
  tabCounter=0;
  y+=3;
  int starty=y;
  int dx;
  for (  Line line : lines) {
    if (line.isNexttab()) {
      y=starty;
      x+=getBounds().width / 2;
      tabCounter++;
    }
 else     if (line.recipe != null) {
      y+=4;
      GL11.glColor4f(1.0F,1.0F,1.0F,1.0F);
      ShapedRecipes shapedRecipes=(ShapedRecipes)line.recipe;
      if (craftingGridImage != null) {
        GL11.glColor4f(1.0F,1.0F,1.0F,1.0F);
        mc.getTextureManager().bindTexture(craftingGridImage);
        gui.drawTexturedModalRect(25 + x,y,craftU,craftV,19 * 3,19 * 3);
      }
      for (int i=0; i < 3; i++) {
        for (int j=0; j < 3; j++) {
          if (i < shapedRecipes.recipeWidth && j < shapedRecipes.recipeHeight) {
            RenderHelper.renderObject(mc,26 + x + i * 18,1 + y + j * 18,shapedRecipes.recipeItems[i + j * 3],false);
          }
        }
      }
      if (arrowImage != null) {
        GL11.glColor4f(1.0F,1.0F,1.0F,1.0F);
        mc.getTextureManager().bindTexture(arrowImage);
        gui.drawTexturedModalRect(x + 25 + 67,y + 18,arrowU,arrowV,16,16);
      }
      if (craftingGridImage != null) {
        GL11.glColor4f(1.0F,1.0F,1.0F,1.0F);
        mc.getTextureManager().bindTexture(craftingGridImage);
        gui.drawTexturedModalRect(x + 25 + 92,y + 16,craftU,craftV,18,18);
      }
      RenderHelper.renderObject(mc,x + 25 + 93,y + 17,shapedRecipes.getRecipeOutput(),false);
      y-=4;
    }
 else     if (line.line != null) {
      String s="String_Node_Str";
      int col=0xFF000000;
      dx=0;
      if (line.isBold()) {
        char c=167;
        s=Character.toString(c) + "String_Node_Str";
      }
      if (line.isLink()) {
        char c=167;
        s=Character.toString(c) + "String_Node_Str";
        col=0xFF0040AA;
        dx=25;
      }
      s+=line.line;
      mc.fontRenderer.drawString(mc.fontRenderer.trimStringToWidth(s,bounds.width - dx),x + dx + bounds.x,y + bounds.y,col);
    }
    y+=line.height;
  }
}