[Demonstration 1]

[Buggy Method]
@SubscribeEvent
public void onLivingHurt(LivingHurtEvent event) {
    if (!event.getEntity().worldObj.isRemote) {
        if (event.getEntity() instanceof EntityPlayer) {
            EntityPlayer player = (EntityPlayer) event.getEntity();
            // Exclude Creative Players
            if (player.isCreative()) {
                return;
            }
            // Check Armor in Inventory
            for (ItemStack stack : player.getArmorInventoryList()) {
                if (stack.getItem() == this) {
                    if (player.experienceTotal > event.getAmount()) {
                        float amount = event.getAmount();
                        // Reduce the attack amount
                        event.setAmount(amount * (1 - reduction));
                        // Take the experience
                        int exp = (int) (amount * reduction);
                        player.experience -= exp / (float) player.xpBarCap();
                        for (player.experienceTotal -= exp; player.experience <= 0.0F; player.experience /= (float) player.xpBarCap()) {
                            player.experience = (player.experience + 1.0F) * (float) player.xpBarCap();
                            player.removeExperienceLevel(1);
                        }
                    } else {
                        // Reduce the attack amount
                        event.setAmount(event.getAmount() - player.experienceTotal);
                        // Take the experience
                        player.experienceLevel = 0;
                        player.experience = 0.0F;
                        player.experienceTotal = 0;
                    }
                    return;
                }
            }
        }
    }
}

[Buggy Hunk]
if (stack.getItem() == this) {

[Patch]
if (stack != null && stack.getItem() == this) {

[Demonstration 2]

[Buggy Method]
public String buildMessage(Map<String, String> parameters) {
    Gson gson = new Gson();
    if (parameters.containsKey(POWER_PARAM)) {
        LightMessageDto lightMessageDto = new LightMessageDto(Boolean.valueOf(parameters.get(POWER_PARAM)));
        return gson.toJson(lightMessageDto);
    }
    return null;
}

[Buggy Hunk]
LightMessageDto lightMessageDto = new LightMessageDto(Boolean.valueOf(parameters.get(POWER_PARAM)));

[Patch]
LightMessageDto lightMessageDto = new LightMessageDto(String.valueOf(parameters.get(POWER_PARAM)));

[Demonstration 3]

[Buggy Method]
public void setProgress(int progress) {
    float targetAngle = (progress / 100f) * 360f;
    if (mAnimation != null) {
        mAnimation.cancel();
    }
    mAnimation = ValueAnimator.ofFloat(mProgressAngle, targetAngle);
    float absDiffAngle = Math.abs(mProgressAngle - targetAngle);
    int duration = (int) (absDiffAngle / 360f * TOTAL_DURATION);
    mAnimation.setDuration(duration);
    mAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            mProgressAngle = (float) animation.getAnimatedValue();
            invalidate();
        }
    });
    mAnimation.start();
}

[Buggy Hunk]
float targetAngle = (progress / 100f) * 360f;

[Patch]
float targetAngle = 360f - (progress / 100f) * 360f;