[Demonstration 1]

[Buggy Method]
@Override
public void transform(ClassNode node, boolean dev) {
    for (MethodNode methodNode : node.methods) {
        if (methodNode.name.equals("renderFirstPersonArm") || methodNode.name.equals("func_82441_a")) {
            InsnList insnList = methodNode.instructions;
            insnList.clear();
            insnList.add(new VarInsnNode(ALOAD, 0));
            insnList.add(new VarInsnNode(ALOAD, 1));
            insnList.add(new FieldInsnNode(GETSTATIC, "net/ilexiconn/llibrary/server/util/EnumHandSide", "RIGHT", "Lnet/ilexiconn/llibrary/server/util/EnumHandSide;"));
            insnList.add(new MethodInsnNode(INVOKESTATIC, "net/ilexiconn/llibrary/server/asm/LLibraryHooks", "renderArm", "(Lnet/minecraft/client/renderer/entity/RenderPlayer;Lnet/minecraft/entity/player/EntityPlayer;Lnet/ilexiconn/llibrary/server/util/EnumHandSide;)V", false));
            insnList.add(new InsnNode(RETURN));
        } else if (methodNode.name.equals("<init>")) {
            InsnList insnList = methodNode.instructions;
            for (AbstractInsnNode insnNode : insnList.toArray()) {
                if (insnNode.getOpcode() == RETURN) {
                    insnList.insertBefore(insnNode, new VarInsnNode(ALOAD, 0));
                    insnList.insertBefore(insnNode, new VarInsnNode(ALOAD, 0));
                    insnList.insertBefore(insnNode, new VarInsnNode(ALOAD, 0));
                    insnList.insertBefore(insnNode, new VarInsnNode(ALOAD, 0));
                    insnList.insertBefore(insnNode, new FieldInsnNode(GETFIELD, "net/minecraft/client/renderer/entity/RenderPlayer", dev ? "mainModel" : "field_77045_g", "Lnet/minecraft/client/model/ModelBase;"));
                    insnList.insertBefore(insnNode, new TypeInsnNode(CHECKCAST, "net/minecraft/client/model/ModelBiped"));
                    insnList.insertBefore(insnNode, new FieldInsnNode(INVOKESTATIC, "net/ilexiconn/llibrary/server/asm/LLibraryHooks", "assignModel", "(Lnet/minecraft/client/renderer/entity/RenderPlayer;Lnet/minecraft/client/model/ModelBiped;)Lnet/minecraft/client/model/ModelBiped;"));
                    insnList.insertBefore(insnNode, new FieldInsnNode(PUTFIELD, "net/minecraft/client/renderer/entity/RenderPlayer", dev ? "mainModel" : "field_77045_g", "Lnet/minecraft/client/model/ModelBase;"));
                }
            }
        }
    }
}

[Buggy Hunk]
if (insnNode.getOpcode() == RETURN) {

[Patch]
if (insnNode.getOpcode() == INVOKESPECIAL && ((MethodInsnNode) insnNode).desc.equals("(Lnet/minecraft/client/model/ModelBase;F)V")) {

[Demonstration 2]

[Buggy Method]
private boolean isMethodType(ExecutableElement method) {
    return prefix.equals(method.getSimpleName().subSequence(0, prefix.length())) && method.getParameters().size() == noParams;
}

[Buggy Hunk]
return prefix.equals(method.getSimpleName().subSequence(0, prefix.length())) && method.getParameters().size() == noParams;

[Patch]
return method.getSimpleName().toString().startsWith(prefix) && method.getParameters().size() == noParams;

[Demonstration 3]

[Buggy Method]
@Override
public FlexoBehaviour getDeclaredFlexoBehaviour(String behaviourName, Type... parameters) {
    for (FlexoBehaviour b : getDeclaredFlexoBehaviours()) {
        if (b.getName().equals(behaviourName)) {
            if (b.getParameters().size() == parameters.length) {
                boolean allParametersMatch = true;
                for (int i = 0; i < b.getParameters().size(); i++) {
                    if (!TypeUtils.isTypeAssignableFrom(b.getParameters().get(i).getType(), parameters[i], true)) {
                        allParametersMatch = false;
                        break;
                    }
                }
                if (allParametersMatch) {
                    return b;
                }
            }
        }
    }
    return null;
}

[Buggy Hunk]
if (!TypeUtils.isTypeAssignableFrom(b.getParameters().get(i).getType(), parameters[i], true)) {

[Patch]
if (!TypeUtils.isTypeAssignableFrom(parameters[i], b.getParameters().get(i).getType(), true)) {