[Demonstration 1]

[Buggy Method]
static ResourceState wrap(final ResourceState state) {
    final ByteBuffer byteBuf = state.getByteBuffer();
    state.putCapacity(byteBuf.capacity());
    final boolean readOnlyBB = byteBuf.isReadOnly();
    final boolean direct = byteBuf.isDirect();
    if (readOnlyBB) {
        state.setResourceReadOnly();
        //READ-ONLY DIRECT
        if (direct) {
            //address() is already adjusted for direct slices, so regionOffset = 0
            state.putNativeBaseOffset(((sun.nio.ch.DirectBuffer) byteBuf).address());
            return state;
        }
        //READ-ONLY HEAP
        //The messy acquisition of arrayOffset() and array() created from a RO slice()
        final Object unsafeObj;
        final long regionOffset;
        try {
            Field field = ByteBuffer.class.getDeclaredField("offset");
            field.setAccessible(true);
            //includes the slice() offset for heap.
            regionOffset = ((Integer) field.get(byteBuf)).longValue() * ARRAY_BYTE_INDEX_SCALE;
            //the backing byte[] from HeapByteBuffer
            field = ByteBuffer.class.getDeclaredField("hb");
            field.setAccessible(true);
            unsafeObj = field.get(byteBuf);
        } catch (final IllegalAccessException | NoSuchFieldException e) {
            throw new RuntimeException("Could not get offset/byteArray from OnHeap ByteBuffer instance: " + e.getClass());
        }
        state.putUnsafeObjectHeader(ARRAY_BYTE_BASE_OFFSET);
        state.putUnsafeObject(unsafeObj);
        state.putRegionOffset(regionOffset);
        return state;
    } else {
        //BB is WRITABLE.
        //WRITABLE-DIRECT  //nativeBaseAddress, byteBuf, capacity
        if (direct) {
            //address() is already adjusted for direct slices, so regionOffset = 0
            state.putNativeBaseOffset(((sun.nio.ch.DirectBuffer) byteBuf).address());
            return state;
        }
        //WRITABLE-HEAP  //unsafeObj, unsafeObjHeader, bytBuf, regionOffset, capacity
        state.putUnsafeObject(byteBuf.array());
        state.putUnsafeObjectHeader(ARRAY_BYTE_BASE_OFFSET);
        state.putRegionOffset(byteBuf.arrayOffset() * ARRAY_BYTE_INDEX_SCALE);
        return state;
    }
}

[Buggy Hunk]
state.putCapacity(byteBuf.capacity());

[Patch]
state.putCapacity(byteBuf.limit());

[Demonstration 2]

[Buggy Method]
public void draw() {
    Point previousLocation = getPosition();
    if (directionalMovement)
        moveTo(moveDirection);
    else if (anglularMovement)
        moveAt(moveAngle);
    if (!moved)
        lastDirection = UNDEFINED_DIRECTION;
    moved = false;
    if (movementArea != UNDEFINED_AREA && !isInside(movementArea))
        setPosition(previousLocation);
    animation.update();
    Game.painter().drawImage(animation.getFrame(), (int) x, (int) y, null);
}

[Buggy Hunk]
if (movementArea != UNDEFINED_AREA && !isInside(movementArea)) setPosition(previousLocation);

[Patch]
if (movementArea != Item.UNDEFINED_ITEM && !isInside(movementArea)) setPosition(previousLocation);

[Demonstration 3]

[Buggy Method]
public boolean Done(Region region, Status status) throws FindFailed, InterruptedException {
    Match richang = region.exists(Common.RI_CHANG);
    if (richang != null) {
        richang.click();
        Thread.sleep(6000L);
        Match shenglingquan = region.exists(baseDir + "shenglingquan.png", 30);
        if (shenglingquan != null) {
            shenglingquan.click();
            // 神灵泉
            if (status.canDo(Task.SHENG_LING_QUAN_XI_LIAN)) {
                putongxilian(region, true);
                if (status.canDo(Task.SHENG_LING_QUAN_MIAN_FEI)) {
                    region.click(baseDir + "dingjishenshui.png");
                    Match zhixingmianfeicaozuo = region.exists(baseDir + "zhixingmianfeicaozuo.png", 6);
                    if (zhixingmianfeicaozuo != null) {
                        Thread.sleep(2000L);
                        Match queding = region.exists(Common.QUE_DING, 10);
                        if (queding != null) {
                            Thread.sleep(2000L);
                            region.click(Common.QUE_DING);
                            status.Done(Task.SHENG_LING_QUAN_MIAN_FEI);
                        }
                        Thread.sleep(2000L);
                        putongxilian(region, true);
                    } else {
                        region.click(Common.QU_XIAO);
                        status.Done(Task.SHENG_LING_QUAN_MIAN_FEI);
                    }
                }
                if (status.isPeace() && LocalTime.now().isAfter(LocalTime.of(22, 0))) {
                    putongxilian(region, false);
                }
                status.Done(Task.SHENG_LING_QUAN_XI_LIAN, Status.nextRefresh());
            }
            // 高级修炼
            if (status.canDo(Task.SHENG_LING_QUAN_XIU_LIAN)) {
                Match xiulian = region.exists(baseDir + "xiulian.png", 3);
                if (xiulian != null) {
                    xiulian.click();
                    Match kaishixiulian = region.exists(baseDir + "kaishixiulian.png", 3);
                    if (kaishixiulian != null && kaishixiulian.getScore() > 0.95) {
                        Thread.sleep(1000L);
                        region.click(baseDir + "gaojixiulian.png");
                        Thread.sleep(1000L);
                        region.click(baseDir + "kaishixiulian.png");
                        Match goumai = region.exists(baseDir + "goumai.png", 3);
                        if (goumai != null) {
                            region.click(Common.QUE_DING);
                            status.Done(Task.SHENG_LING_QUAN_XIU_LIAN);
                        }
                    } else {
                        status.Done(Task.SHENG_LING_QUAN_XIU_LIAN, Status.nextCheck());
                    }
                }
            }
            region.click(Common.CLOSE);
            Thread.sleep(500L);
        }
        region.click(Common.CLOSE);
        return true;
    }
    return false;
}

[Buggy Hunk]
if (status.isPeace() && LocalTime.now().isAfter(LocalTime.of(22, 0))) {

[Patch]
if (LocalTime.now().isAfter(LocalTime.of(22, 0))) {