[Demonstration 1]

[Buggy Method]
private void sendJoinRequest(Circle circle, final int position) {
    UserCircle uc = new UserCircle();
    uc.setCircle(circle);
    uc.setUser(ParseUser.getCurrentUser());
    uc.setIsBroadcasting(false);
    uc.setIsPending(true);
    uc.setIsAccepted(false);
    uc.setIsInvite(false);
    uc.saveInBackground(new SaveCallback() {

        @Override
        public void done(ParseException e) {
            if (e == null) {
                mOriginal.remove(getItems().remove(position));
                getItems().remove(position);
                getBaseAdapter().notifyItemRemoved(position);
                Toast.makeText(getContext(), "Sent request!", Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(getContext(), e.getMessage(), Toast.LENGTH_LONG).show();
            }
        }
    });
}

[Buggy Hunk]
mOriginal.remove(getItems().remove(position));

[Patch]
mOriginal.remove(getItems().get(position));

[Demonstration 2]

[Buggy Method]
private void treeBuilder() {
    while (true) {
        synchronized (mTree) {
            synchronized (this) {
                notify();
            }
            boolean minBuild = false;
            while (!minBuild) {
                while (mTree.addNode()) {
                }
                Log.d("ComputerPlayer", "treeBuilder(): completed tree level " + mTree.getMaxCompleteLevel() + ", size: " + mTree.size());
                if (mTree.getMaxCompleteLevel() >= MIN_BUILD_LEVEL) {
                    minBuild = true;
                }
            }
        }
        Log.d("ComputerPlayer", "treeBuilder(): min build is done, can accept move");
        while (mTree.getMaxCompleteLevel() < MAX_BUILD_LEVEL) {
            synchronized (mTree) {
                mTree.addNode();
            }
        }
        synchronized (mTree) {
            if (mTree.getMaxCompleteLevel() >= MAX_BUILD_LEVEL) {
                try {
                    Log.d("ComputerPlayer", "treeBuilder(): completed tree level " + mTree.getMaxCompleteLevel() + ", size: " + mTree.size() + ", going to sleep");
                    mTree.wait();
                    Log.d("ComputerPlayer", "treeBuilder(): woken up");
                } catch (InterruptedException e) {
                    Log.e("ComputerPlayer", "treeBuilder(): caught interruptedexception", e);
                }
            }
        }
    }
}

[Buggy Hunk]
boolean minBuild = false;

[Patch]
boolean minBuild = (mTree.getMaxCompleteLevel() >= MIN_BUILD_LEVEL);

[Demonstration 3]

[Buggy Method]
public void remove(Item item) throws InventoryException {
    if (items.containsValue(item)) {
        this.items.remove(item);
    } else {
        throw new InventoryException(item.titleToString() + " is not in your inventory. ");
    }
}

[Buggy Hunk]
this.items.remove(item);

[Patch]
this.items.remove(item.getName());