[Demonstration 1]

[Buggy Method]
@Override
public void renderPage(GuiDocumentation parent, int mx, int my) {
    IRecipe recipe = null;
    if (recipes.size() == 0)
        return;
    if (recipes.size() == 1) {
        if (meta == -1) {
            recipe = ModCraftingRecipes.getModRecipe(recipes.get(0));
        } else {
            recipe = ModCraftingRecipes.getModRecipeWithMeta(recipes.get(0), meta);
        }
    } else {
        recipe = ModCraftingRecipes.getModRecipe(recipes.get(recipeAt));
    }
    if (recipe instanceof ShapedRecipes) {
        ShapedRecipes shaped = (ShapedRecipes) recipe;
        for (int y = 0; y < shaped.recipeHeight; y++) {
            for (int x = 0; x < shaped.recipeWidth; x++) {
                renderItemOnGrid(parent, 1 + x, 1 + y, shaped.recipeItems[y * shaped.recipeWidth + x]);
            }
        }
    } else if (recipe instanceof ShapedOreRecipe) {
        ShapedOreRecipe shaped = (ShapedOreRecipe) recipe;
        int width = ReflectionHelper.getPrivateValue(ShapedOreRecipe.class, shaped, 4);
        int height = ReflectionHelper.getPrivateValue(ShapedOreRecipe.class, shaped, 5);
        for (int y = 0; y < height; y++) {
            for (int x = 0; x < width; x++) {
                Object input = shaped.getInput()[y * width + x];
                if (input != null) {
                    renderItemOnGrid(parent, 1 + x, 1 + y, input instanceof ItemStack ? (ItemStack) input : ((List<ItemStack>) input).get(0));
                }
            }
        }
    }
    int outputX = parent.getLeft() + 62;
    int outputY = parent.getTop() + 42;
    renderItem(outputX, outputY, recipe.getRecipeOutput());
    if (mx >= outputX && my >= outputY && mx < outputX + 16 && my < outputY + 16) {
        String name = I18n.format(recipe.getRecipeOutput().getUnlocalizedName());
        RenderUtils.renderTooltip(mx, my, Collections.singletonList((name)));
    }
    BookPageText.renderText(parent.getLeft() + 15, parent.getTop() + 15, null, unlocalizedName);
}

[Buggy Hunk]
String name = I18n.format(recipe.getRecipeOutput().getUnlocalizedName()) ;

[Patch]
String name = I18n.format(recipe.getRecipeOutput().getUnlocalizedName() + ".name") ;

[Demonstration 2]

[Buggy Method]
@Override
protected void processFinish() {
    if (!reverse) {
        RecipeTransposer recipe = TransposerManager.getFillRecipe(inventory[1], tank.getFluid());
        if (recipe == null) {
            isActive = false;
            wasActive = true;
            tracker.markTime(worldObj);
            processRem = 0;
            return;
        }
        ItemStack output = ItemHelper.cloneStack(recipe.getOutput());
        if (inventory[2] == null) {
            inventory[2] = output;
        } else {
            inventory[2].stackSize += output.stackSize;
        }
        inventory[1] = null;
        tank.drain(recipe.getFluid().amount, true);
    } else {
        RecipeTransposer recipe = TransposerManager.getExtractionRecipe(inventory[1]);
        if (recipe == null) {
            isActive = false;
            wasActive = true;
            tracker.markTime(worldObj);
            processRem = 0;
            return;
        }
        ItemStack output = recipe.getOutput();
        int recipeChance = recipe.getChance();
        if (recipeChance >= 100 || worldObj.rand.nextInt(secondaryChance) < recipeChance) {
            if (inventory[2] == null) {
                inventory[2] = output;
            } else {
                inventory[2].stackSize += output.stackSize;
            }
        }
        inventory[1] = null;
        tank.fill(recipe.getFluid(), true);
    }
    reverse = reverseFlag;
}

[Buggy Hunk]
ItemStack output = recipe.getOutput();

[Patch]
ItemStack output = ItemHelper.cloneStack(recipe.getOutput());

[Demonstration 3]

[Buggy Method]
@SubscribeEvent
public void blockHighlightEvent(DrawBlockHighlightEvent event) {
    if (event.currentItem != null && event.currentItem.getItem() instanceof IWandItem && event.target != null && event.target.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
        IPlayerShim playerShim = new BasicPlayerShim(event.player);
        if (event.player.capabilities.isCreativeMode) {
            playerShim = new CreativePlayerShim(event.player);
        }
        IWorldShim worldShim = new BasicWorldShim(event.player.getEntityWorld());
        if (event.currentItem.getItem() instanceof IWandItem) {
            IWandItem wandItem = (IWandItem) event.currentItem.getItem();
            IWand wand = wandItem.getWand();
            WandWorker worker = new WandWorker(wand, playerShim, worldShim);
            Point3d clickedPos = new Point3d(event.target.getBlockPos().getX(), event.target.getBlockPos().getY(), event.target.getBlockPos().getZ());
            ItemStack sourceItems = worker.getProperItemStack(worldShim, playerShim, clickedPos);
            if (sourceItems != null && sourceItems.getItem() instanceof ItemBlock) {
                int numBlocks = Math.min(wand.getMaxBlocks(event.currentItem), playerShim.countItems(sourceItems));
                LinkedList<Point3d> blocks = worker.getBlockPositionList(clickedPos, event.target.sideHit, numBlocks, wandItem.getMode(event.currentItem), wandItem.getFaceLock(event.currentItem));
                if (blocks.size() > 0) {
                    GlStateManager.disableTexture2D();
                    GlStateManager.disableBlend();
                    GlStateManager.depthMask(true);
                    GL11.glLineWidth(2.5F);
                    for (Point3d block : blocks) {
                        Block blockb = Blocks.bedrock;
                        EntityPlayer player = event.player;
                        double partialTicks = event.partialTicks;
                        double d0 = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double) partialTicks;
                        double d1 = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double) partialTicks;
                        double d2 = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double) partialTicks;
                        RenderGlobal.func_181561_a(blockb.getSelectedBoundingBox(worldShim.getWorld(), new BlockPos(block.x, block.y, block.z)).contract(0.005, 0.005, 0.005).offset(-d0, -d1, -d2));
                    }
                    GL11.glEnable(GL11.GL_TEXTURE_2D);
                    GL11.glDisable(GL11.GL_BLEND);
                    GlStateManager.enableTexture2D();
                    GlStateManager.enableBlend();
                    GlStateManager.depthMask(false);
                }
            }
        }
    }
    //FMLLog.info("Happened!" + event.target.toString());
}

[Buggy Hunk]
RenderGlobal.func_181561_a(blockb.getSelectedBoundingBox(worldShim.getWorld(), new BlockPos(block.x, block.y, block.z)).contract(0.005, 0.005, 0.005).offset(-d0, -d1, -d2));

[Patch]
RenderGlobal.drawSelectionBoundingBox(blockb.getSelectedBoundingBox(worldShim.getWorld(), new BlockPos(block.x, block.y, block.z)).contract(0.005, 0.005, 0.005).offset(-d0, -d1, -d2));