[Demonstration 1]

[Buggy Method]
public ArrayList<EnumFiremode> getFiremodes() {
    if (type == EnumGunType.PISTOL || type == EnumGunType.SHOTGUN || type == EnumGunType.SNIPER_RIFLE) {
        //noinspection ArraysAsListWithZeroOrOneArgument
        return (ArrayList<EnumFiremode>) Arrays.asList(EnumFiremode.SINGLE);
    }
    ArrayList<EnumFiremode> firemodes = new ArrayList<>();
    switch(this) {
        case C8_SFW:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case L85A2:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case AR33:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.DOUBLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case SIG_556xi:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case G36_C:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case R4_C:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case FAMAS_F2:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.TRIPLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case AK12:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.TRIPLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case HK_416_C:
            {
                firemodes.add(EnumFiremode.AUTO);
                firemodes.add(EnumFiremode.SINGLE);
                break;
            }
        case SIG_552_C:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.TRIPLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case AUG_A2:
            {
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case Mk17_CQB:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case PARA_308:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case TYPE_89:
            {
                firemodes.add(EnumFiremode.AUTO);
                firemodes.add(EnumFiremode.TRIPLE);
                firemodes.add(EnumFiremode.SINGLE);
                break;
            }
        case G8A1:
            {
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case PKP_6P41:
            {
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case M249:
            {
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case K9X19VSN:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case FMG9:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case MP5K:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.TRIPLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case MP5:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.TRIPLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case MP7:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case P90:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case STEN_9MM_C1:
            {
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case UMP45:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.TRIPLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case MPX:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case M12:
            {
                firemodes.add(EnumFiremode.SINGLE);
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case MP5SD:
            {
                break;
            }
        case SMG11:
            {
                firemodes.add(EnumFiremode.AUTO);
                break;
            }
        case BEARING_9:
            {
                firemodes.add(EnumFiremode.AUTO);
                firemodes.add(EnumFiremode.SINGLE);
                break;
            }
    }
    return firemodes;
}

[Buggy Hunk]
return (ArrayList<EnumFiremode>) Arrays.asList(EnumFiremode.SINGLE);

[Patch]
return new ArrayList<>(Arrays.asList(EnumFiremode.SINGLE));

[Demonstration 2]

[Buggy Method]
@Override
public void mouseMoved(MouseEvent e) {
    mouseX = e.getX();
    mouseY = e.getY() + 25;
}

[Buggy Hunk]
mouseY = e.getY()+25;

[Patch]
mouseY = e.getY();

[Demonstration 3]

[Buggy Method]
@Override
public void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException {
    super.mouseClicked(mouseX, mouseY, mouseButton);
    if (mouseX < 15 || mouseX > this.width - 15 || mouseY > this.height - 24 || mouseY < (this.height - 24) - (10 * getShownChatLines())) {
        return;
    }
    for (Integer pos : currentChatLinePositions.keySet()) {
        if (mouseY >= pos && mouseY <= pos + 10) {
            String clicked = currentChatLinePositions.get(pos).getLine();
            String name = ChatUtil.parseChat(clicked).get();
            mod.getMacroMenu().setName(name);
            mc.displayGuiScreen(mod.getMacroMenu());
            break;
        }
    }
}

[Buggy Hunk]
|| mouseY < (this.height - 24) - (10 * getShownChatLines()))

[Patch]
|| mouseY < (this.height - 24) - (10 * getShownChatLines()) || mouseButton == -1)