[Demonstration 1]

[Buggy Method]
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_text_input);
    activity = this;
    final String strCardAttribute;
    final ce.modelwhilework.data.Process process;
    final EditText te_text = (EditText) this.findViewById(R.id.activity_input_text_edittext);
    Bundle args = getIntent().getExtras();
    if (args != null) {
        strCardAttribute = args.getString("CardAttrib");
        if (strCardAttribute == null) {
            showAlert("General error: connection to card is missing!");
            this.finish();
        } else {
            process = ProcessManager.getInstance().getProcess(args.getString("ProcessName"));
            if (process == null) {
                showAlert("General error: can't get process!");
                this.finish();
            } else {
                if (args.getString("DefaultText") != null) {
                    te_text.setText(args.getString("DefaultText"));
                    te_text.setSelection(te_text.getText().length());
                }
                Button button = (Button) this.findViewById(R.id.activity_input_text_ok);
                button.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        boolean alert = false;
                        if (strCardAttribute.equals(CardAttribute.TITLETASK.toString()))
                            process.setTaskCardTitle(te_text.getText().toString());
                        else if (strCardAttribute.equals(CardAttribute.TITLEMSG.toString()))
                            process.setMessageCardTitle(te_text.getText().toString());
                        else if (strCardAttribute.equals(CardAttribute.PERSONMSG.toString()))
                            process.setMessagekCardSenderReceiver(te_text.getText().toString());
                        else if (strCardAttribute.equals(CardAttribute.TITLEMAINSTACK.toString())) {
                            if (!process.setTopCardTitleMainStack(te_text.getText().toString())) {
                                alert = true;
                                showAlert("Error: You have to enter a valid and unique title!!!");
                            }
                        } else if (strCardAttribute.equals(CardAttribute.TITLESIDESTACK.toString())) {
                            if (!process.setTopCardTitleSideStack(te_text.getText().toString())) {
                                alert = true;
                                showAlert("Error: You have to enter a valid and unique title!!!");
                            }
                        } else if (strCardAttribute.equals(CardAttribute.PERSONMAINSTACK.toString())) {
                            if (te_text.getText().length() == 0) {
                                alert = true;
                                showAlert("You have to enter a sender/receiver!!!");
                            } else {
                                if (!process.setTopCardSenderReceiverMainStack(te_text.getText().toString()))
                                    showAlert("Error: can't set sender/receiver!!!!");
                            }
                        } else if (strCardAttribute.equals(CardAttribute.PERSONSIDESTACK.toString())) {
                            if (te_text.getText().length() == 0) {
                                alert = true;
                                showAlert("You have to enter a sender/receiver!!!");
                            } else {
                                if (!process.setTopCardSenderReceiverSideStack(te_text.getText().toString()))
                                    showAlert("Error: can't set sender/receiver!!!!");
                            }
                        } else if (strCardAttribute.equals(CardAttribute.USERROLE.toString()))
                            process.setUserRole(te_text.getText().toString());
                        else {
                            alert = true;
                            showAlert("General error: invalid argument!");
                        }
                        if (!alert)
                            activity.finish();
                    }
                });
                button = (Button) this.findViewById(R.id.activity_input_text_cancel);
                button.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        activity.finish();
                    }
                });
            }
        }
    } else {
        showAlert("General error: arguments are missing!");
        this.finish();
    }
}

[Buggy Hunk]
process.setMessagekCardSenderReceiver(te_text.getText().toString());

[Patch]
process.setMessageCardSenderReceiver(te_text.getText().toString());

[Demonstration 2]

[Buggy Method]
@SubscribeEvent
public static void editSign(RightClickBlock event) {
    if (event.getEntityPlayer().isSneaking()) {
        return;
    }
    BlockPos pos = new BlockPos(event.getHitVec());
    IBlockState state = event.getWorld().getBlockState(pos);
    if (state.getBlock() != Blocks.WALL_SIGN && state.getBlock() != Blocks.STANDING_SIGN) {
        return;
    }
    EntityPlayer player = event.getEntityPlayer();
    TileEntity tileentity = event.getWorld().getTileEntity(pos);
    if (tileentity instanceof TileEntitySign) {
        TileEntitySign sign = (TileEntitySign) tileentity;
        sign.setPlayer(player);
        sign.setEditable(true);
        player.openEditSign(sign);
    }
}

[Buggy Hunk]
sign.setEditable(true);

[Patch]
ObfuscationReflectionHelper.setPrivateValue(TileEntitySign.class, sign, true, "field_145916_j", "isEditable");

[Demonstration 3]

[Buggy Method]
@SubscribeEvent
public void onRightClickCauldron(PlayerInteractEvent.RightClickBlock event) {
    World world = event.getWorld();
    EntityPlayer player = event.getEntityPlayer();
    IBlockState state = world.getBlockState(event.getPos());
    if (state.getBlock() instanceof BlockCauldron && SyncedConfigHandler.getBooleanValue(GameplayOption.ENABLE_THIRST)) {
        BlockCauldron cauldron = (BlockCauldron) state.getBlock();
        int level = ((Integer) state.getValue(BlockCauldron.LEVEL));
        if (level > 0 && !world.isRemote) {
            if (!player.capabilities.isCreativeMode) {
                ItemStack waterBottle = new ItemStack(TANItems.water_bottle);
                player.addStat(StatList.CAULDRON_USED);
                player.getHeldItem(event.getHand()).setCount(player.getHeldItem(event.getHand()).getCount() - 1);
                if (player.getHeldItem(event.getHand()).isEmpty()) {
                    player.setHeldItem(event.getHand(), waterBottle);
                } else if (!player.inventory.addItemStackToInventory(waterBottle)) {
                    player.dropItem(waterBottle, false);
                } else if (player instanceof EntityPlayerMP) {
                    ((EntityPlayerMP) player).sendContainerToPlayer(player.inventoryContainer);
                }
            }
            cauldron.setWaterLevel(world, event.getPos(), state, level - 1);
            event.setCanceled(true);
        }
    }
}

[Buggy Hunk]
if (state.getBlock() instanceof BlockCauldron && SyncedConfigHandler.getBooleanValue(GameplayOption.ENABLE_THIRST))

[Patch]
if (player.getHeldItem(event.getHand()).getItem() == Items.GLASS_BOTTLE && state.getBlock() instanceof BlockCauldron && SyncedConfigHandler.getBooleanValue(GameplayOption.ENABLE_THIRST))