[Demonstration 1]

[Buggy Method]
@Override
public void apply(BattleSystem battleSystem, BattleNode that, BattleNode attacker, DoublePtr damage) {
    battleNode.hp.v -= damage.v;
    if (battleNode.hp.v <= 0) {
        City city = UnitPool.cities.fetchMemory();
        city.configure(gamer);
        city.battleNode.coords.pos.copy(battleNode.coords.pos);
        battleSystem.getBaseEngine().addUnit(city);
    }
}

[Buggy Hunk]
city.configure(gamer);

[Patch]
city.configure(attacker.gamer.v);

[Demonstration 2]

[Buggy Method]
@Override
public void run() {
    errBuffer.delete(0, errBuffer.length());
    if (src == null) {
        errBuffer.append("Export request failed. Please see console for details.").append(Constants.LINE_SEPARATOR);
        Logging.log(Logging.WARNING, "Error in FOPHandler:run - previous errors stopped intermediate file " + "from being produced. Could not produce output.");
        return;
    }
    OutputStream out = null;
    try {
        File tempOut = null;
        try {
            tempOut = (outFile == null ? File.createTempFile("printOutput", ".pdf") : outFile);
        } catch (Exception ex) {
            Logging.errorPrint("Can't create temp file");
        }
        Logging.log(Logging.WARNING, "FOPHandler outFile = " + (tempOut == null ? "null" : tempOut));
        out = new BufferedOutputStream(new FileOutputStream(tempOut));
        org.apache.fop.apps.FOUserAgent userAgent = fopFactory.newFOUserAgent();
        userAgent.setProducer("PC Gen Character Generator");
        userAgent.setAuthor(System.getProperty("user.name"));
        userAgent.setCreationDate(new Date());
        Logging.log(Logging.WARNING, "FOPHandler mode = " + mode);
        if (mode == PDF_MODE) {
            userAgent.setKeywords("PCGEN FOP PDF");
            //                renderer = new PDFRenderer();
            //                userAgent.setRendererOverride(renderer);
        } else if (mode == AWT_MODE) {
            userAgent.setKeywords("PCGEN FOP AWT");
            renderer = new AWTRenderer();
            renderer.setUserAgent(userAgent);
            userAgent.setRendererOverride(renderer);
        } else {
            Logging.errorPrint("Unsupported mode for file export.");
            return;
        }
        Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, userAgent, out);
        Result res = new SAXResult(fop.getDefaultHandler());
        FOPErrorListener errListener = new FOPErrorListener();
        transformer.setErrorListener(errListener);
        transformer.transform(src, res);
    } catch (TransformerException e) {
        errBuffer.append(e.getMessage()).append(Constants.LINE_SEPARATOR);
        Logging.errorPrint("Exception in FOPHandler:run", e);
    } catch (FOPException fopex) {
        errBuffer.append(fopex.getMessage()).append(Constants.LINE_SEPARATOR);
        Logging.errorPrint("Exception in FOPHandler:run", fopex);
    } catch (FileNotFoundException fnfex) {
        errBuffer.append(fnfex.getMessage()).append(Constants.LINE_SEPARATOR);
        Logging.errorPrint("Exception in FOPHandler:run, cannot find file: " + fnfex.getMessage());
    } catch (Exception ex) {
        errBuffer.append(ex.getMessage()).append(Constants.LINE_SEPARATOR);
        Logging.errorPrint("Unexpected exception in FOPHandler:run: " + ex.getMessage());
    } finally {
        if (out != null) {
            try {
                out.close();
            } catch (IOException ioex) {
                errBuffer.append(ioex.getMessage()).append(Constants.LINE_SEPARATOR);
                Logging.errorPrint("Exception in FOPHandler:run", ioex);
            }
        }
    }
    out = null;
}

[Buggy Hunk]
renderer = new AWTRenderer();

[Patch]
renderer = new PageableRenderer();

[Demonstration 3]

[Buggy Method]
public void onClick(MouseEvent e) {
    //Grabs the cardholder they just clicked, can be in hand or on board
    Cardholder clickedHolder = this.cardholderContaining(this.hand, e);
    if (clickedHolder == null) {
        clickedHolder = this.cardholderContaining(this.cardholders, e);
    }
    //Grab the one they selected
    if (clickedHolder != null && clickedHolder.isSrcClickable()) {
        this.selectedCardholder = clickedHolder;
        System.out.println("Selected " + this.selectedCardholder);
    } else if (clickedHolder != null && clickedHolder.isDestClickable()) {
        clickedHolder.setCard(this.selectedCardholder.getCard());
        clickedHolder.setSrcClickable(true);
        clickedHolder.setDestClickable(false);
        this.selectedCardholder.clearCard();
        this.selectedCardholder.setSrcClickable(false);
        this.selectedCardholder = null;
    }
    // Cardholder cardholderClick = this.cardholderContaining(this.cardholders,e);
    // //They clicked on a cardholder
    // if(cardholderClick != null) {
    //    //Make sure its empty
    //    if(cardholderClick.getCard() == null && this.selectedCard != null) {
    //       //Set in cardholder
    //       cardholderClick.setCard(this.selectedCard);
    //       //Remove from hand
    //       for(int i = 0; i < this.hand.size(); i++) {
    //          if(this.hand.get(i).getCard() == this.selectedCard) {
    //             this.hand.get(i).clearCard();
    //          }
    //       }
    //       //Clear selectedCard
    //       this.selectedCard = null;
    //    }
    // }
}

[Buggy Hunk]
} else if(clickedHolder != null && clickedHolder.isDestClickable()) {

[Patch]
} else if(clickedHolder != null && clickedHolder.isDestClickable() && this.selectedCardholder != null) {