[Demonstration 1]

[Buggy Method]
public void addLine(String line) {
    lines.add(line);
}

[Buggy Hunk]
lines.add(line);

[Patch]
lines.addFirst(line);

[Demonstration 2]

[Buggy Method]
@Test
public void outputIsCorrectTest() {
    String formatted = "";
    try {
        BibtexFormatter.convertReference(ref);
    } catch (Exception e) {
        fail("convertReference threw an exception: " + e);
    }
    Scanner scanner = new Scanner(formatted);
    assertEquals("@Book{Bankowski2051,", scanner.nextLine());
    Set<String> lines = new HashSet<String>();
    lines.add("year = \"2051\",");
    lines.add("publisher = \"Unknownpotato publishing\",");
    lines.add("author = \"Victor Bankowski\",");
    lines.add("title = \"a Dive into the Rust Programming Language\",");
    while (scanner.hasNextLine()) {
        String line = scanner.nextLine();
        if (lines.isEmpty()) {
            assertEquals("}", line);
            return;
        }
        if (lines.contains(line)) {
            lines.remove(line);
        } else {
            fail("Line was not expected: " + line);
        }
    }
    fail("Too few lines");
}

[Buggy Hunk]
BibtexFormatter.convertReference(ref);

[Patch]
formatted = BibtexFormatter.convertReference(ref);

[Demonstration 3]

[Buggy Method]
@Test
public void getGameMoveIncomingTransmissionFromGameMoveMadeStringForExpandedSettlement() {
    String message = "GAME B MOVE 3 PLAYER 14 PLACED GRASS+LAKE AT -2 0 2 3 EXPANDED SETTLEMENT AT 0 0 0 GRASS";
    Tile expectedTile = new Tile(Terrain.GRASS, Terrain.LAKE);
    Coordinate expectedTileCoordinate = new Coordinate(-2, 0, 2);
    HexagonNeighborDirection expectedDirection = HexagonNeighborDirection.UPPERLEFT;
    expectedDirection = expectedDirection.intToDirection(3);
    TileMove expectedTileMove = new TileMove(expectedTile, expectedDirection, expectedTileCoordinate);
    BuildOption expectedBuildOption = BuildOption.EXPANDSETTLEMENT;
    Coordinate expectedConstructionCoordinate = new Coordinate(0, 0, 0);
    ExpandSettlementMoveTransmission expectedExpandSettlementMoveTransmission = new ExpandSettlementMoveTransmission(expectedBuildOption, expectedConstructionCoordinate, Terrain.GRASS);
    final String expectedGID = "B";
    final String expectedMoveNumber = "3";
    final String expectedPid = "14";
    MoveInGameIncoming expectedMoveInGameIncoming = new MoveInGameIncoming(expectedGID, expectedMoveNumber, expectedPid, expectedTileMove, expectedExpandSettlementMoveTransmission);
    Parser parser = new Parser();
    MoveInGameIncoming testMoveInGameIncoming = parser.opponentMoveStringToGameMove(message);
    assertEquals(expectedMoveInGameIncoming.getTileMove().getCoordinate().getX(), testMoveInGameIncoming.getTileMove().getCoordinate().getX());
    assertEquals(expectedMoveInGameIncoming.getTileMove().getCoordinate().getY(), testMoveInGameIncoming.getTileMove().getCoordinate().getY());
    assertEquals(expectedMoveInGameIncoming.getTileMove().getTile().getTerrainsClockwiseFromVolcano(), testMoveInGameIncoming.getTileMove().getTile().getTerrainsClockwiseFromVolcano());
    assertEquals(expectedMoveInGameIncoming.getTileMove().getDirection(), testMoveInGameIncoming.getTileMove().getDirection());
    assertEquals(expectedMoveInGameIncoming.getConstructionMoveTransmission().getCoordinate().getX(), testMoveInGameIncoming.getConstructionMoveTransmission().getCoordinate().getX());
    assertEquals(expectedMoveInGameIncoming.getConstructionMoveTransmission().getCoordinate().getY(), testMoveInGameIncoming.getConstructionMoveTransmission().getCoordinate().getY());
    assertEquals(expectedMoveInGameIncoming.getConstructionMoveTransmission().getBuildOption(), testMoveInGameIncoming.getConstructionMoveTransmission().getBuildOption());
    assertEquals(expectedMoveInGameIncoming.getGid(), testMoveInGameIncoming.getGid());
    assertEquals(expectedMoveInGameIncoming.getMoveID(), testMoveInGameIncoming.getMoveID());
    expectedExpandSettlementMoveTransmission = (ExpandSettlementMoveTransmission) expectedMoveInGameIncoming.getConstructionMoveTransmission();
    ExpandSettlementMoveTransmission testExpandSettlementMoveTransmission = (ExpandSettlementMoveTransmission) testMoveInGameIncoming.getConstructionMoveTransmission();
    assertEquals(expectedExpandSettlementMoveTransmission.getTerrain(), testExpandSettlementMoveTransmission.getTerrain());
}

[Buggy Hunk]
MoveInGameIncoming testMoveInGameIncoming = parser.opponentMoveStringToGameMove(message);

[Patch]
MoveInGameIncoming testMoveInGameIncoming = parser.getMoveInGameIncomingObjectFromLine(message);