[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]
private void searchViewChildAndSetListener(ViewGroup parent) {
    for (int i = 0; i < parent.getChildCount(); i++) {
        View target = parent.getChildAt(i);
        if (target instanceof LinearLayout) {
            searchViewChildAndSetListener((LinearLayout) target);
        } else if (target instanceof TextView) {
            target.setOnClickListener(this);
        }
    }
}

[Buggy Hunk]
} else if (target instanceof TextView) {

[Patch]
} else if (target instanceof Button) {

[Demonstration 3]

[Buggy Method]
public boolean isEmpty(Position pos) {
    if (pos.i >= row || pos.j >= col) {
        //если позиция за границами поля
        return false;
    } else {
        return matrix.get(pos.i * col + pos.j);
    }
}

[Buggy Hunk]
if(pos.i >= row || pos.j >= col){

[Patch]
if(pos.i < 0 || pos.i >= row || pos.j < 0 || pos.j >= col){