[Demonstration 1]

[Buggy Method]
@Override
public int hashCode() {
    return fromNode.hashCode() * toNode.hashCode();
}

[Buggy Hunk]
return fromNode.hashCode() * toNode.hashCode();

[Patch]
return (fromNode.getName() + toNode.getName()).hashCode();

[Demonstration 2]

[Buggy Method]
private void handlePublish(PublishInfo publishInfo) {
    String vpnInstance = publishInfo.getNodeId();
    if (mapStore.containsKey(vpnInstance)) {
        DeviceId publisher = publishInfo.getFromDevice();
        List<DeviceId> devicesToNotify = getListOfDevicesToNotify(vpnInstance, publisher);
        pubSubService.notifyPublishEvent(devicesToNotify, publishInfo);
        logger.info("Status of the VPN Store after Publish: " + mapStore.toString());
    } else {
        // TODO: notify error <item-not-found>
    }
}

[Buggy Hunk]
pubSubService.notifyPublishEvent(devicesToNotify, publishInfo);

[Patch]
pubSubService.sendEventNotification(devicesToNotify, publishInfo);

[Demonstration 3]

[Buggy Method]
public Role getNext() {
    if (winner != null) {
        return null;
    }
    Role next = initiator;
    while (getCard(next) != null) {
        next = next.next();
    }
    return next;
}

[Buggy Hunk]
if (winner != null) {

[Patch]
if (winner.get() != null) {