[Demonstration 1]

[Buggy Method]
public final Class<T> getSpecies() {
    return this.species;
}

[Buggy Hunk]
public final Class<T> getSpecies() {

[Patch]
public Class<T> getSpecies() {

[Demonstration 2]

[Buggy Method]
public static void main(String[] args) throws Exception {
    EventSocketListener listener = WebsocketFactory.getListenerInstance();
    LOGGER.info("Reading initial board");
    Board originalBoard = getBoard();
    LOGGER.info("Creating clients");
    List<EventSocketCounter> clients = new ArrayList<>(config.getClientThreads());
    for (int i = 0; i < config.getClientThreads(); i++) {
        clients.add(WebsocketFactory.getCounterInstance());
    }
    LOGGER.info("Starting load test");
    SimpleColor[][] colors = originalBoard.getColors();
    int xMax = colors[0].length;
    int yMax = colors.length;
    List<Thread> threads = new ArrayList<>(config.getRequesterThreads());
    for (int t = 0; t < config.getRequesterThreads(); t++) {
        Thread thread = new Thread(new PixelPutter(config, xMax, yMax));
        thread.start();
        threads.add(thread);
    }
    // Await
    for (Thread t : threads) {
        t.join();
    }
    LOGGER.info("Finished load test");
    Thread.sleep(5000);
    assertEqualMessages(listener, clients);
    Board finishedBoard = getBoard();
    replayMessagesOn(originalBoard, listener.getSetPixels());
    assertEquals(originalBoard, finishedBoard);
    // Close
    listener.getSession().close();
    for (EventSocketCounter c : clients) {
        c.getSession().close();
    }
    client.close();
    WebsocketFactory.shutdown();
    LOGGER.info("Closed stuff");
}

[Buggy Hunk]
Thread thread = new Thread(new PixelPutter(config, xMax, yMax));

[Patch]
Thread thread = new Thread(new RandomPixelPutter(config, xMax, yMax));