[Demonstration 1]

[Buggy Method]
Element toXml() {
    Element element = new Element("triangular");
    element.setAttribute("maxValue", Double.toString(maxValue));
    element.setAttribute("mostLikelyValue", Double.toString(mostLikelyValue));
    element.setAttribute("minValue", Double.toString(minValue));
    return element;
}

[Buggy Hunk]
Element element = new Element("triangular");

[Patch]
Element element = new Element("triangular", IO.NS);

[Demonstration 2]

[Buggy Method]
public static void i(Object... msg) {
    StringBuilder sb = new StringBuilder();
    for (Object obj : msg) {
        sb.append(obj + ",");
    }
    log(INFO, null, String.valueOf(sb));
}

[Buggy Hunk]
log(INFO, null, String.valueOf(sb));

[Patch]
log(INFO, null, sb.substring(0, sb.length() - 1));

[Demonstration 3]

[Buggy Method]
@SuppressWarnings("unchecked")
@Override
public boolean dataUpdate(double time, String dataType, Object data) {
    switch(dataType) {
        case DataTypes.BDI_PLANS:
            {
                addUpdate((SimpleMessage) data);
                return true;
            }
        case DataTypes.LOCATION:
        case DataTypes.ROUTE:
        case DataTypes.REGION:
        case DataTypes.EVAC_SCHEDULE:
        case DataTypes.BDI_TREE:
        case DataTypes.IMAGE:
            {
                SimpleMessage msg = new SimpleMessage();
                msg.name = dataType;
                msg.params = new Object[] { data };
                addUpdate(msg);
                return true;
            }
        case DataTypes.REGION_ASSIGNMENT:
            {
                SimpleMessage msg = new SimpleMessage();
                msg.name = dataType;
                msg.agentName = (String) ((Object[]) data)[0];
                msg.params = new Object[] { (String) ((Object[]) data)[1] };
                addUpdate(msg);
                return true;
            }
        // unpack fire phases and locations, and add updates for individual fire locations
        case DataTypes.FIRE:
            {
                List<List<double[]>> firePhases;
                try {
                    firePhases = (List<List<double[]>>) data;
                    for (List<double[]> phase : firePhases) {
                        SimpleMessage formatted = new SimpleMessage();
                        formatted.name = FireModule.FIREPHASE;
                        StringBuilder sb = new StringBuilder();
                        for (double[] coords : phase) {
                            sb.append(coords[0] + "," + coords[1] + " ");
                        }
                        formatted.params = new Object[] { sb.toString() };
                        addUpdate(formatted);
                    }
                    return true;
                } catch (ClassCastException e) {
                    System.out.println("Fire data invalid");
                    return false;
                }
            }
        default:
            {
                return super.dataUpdate(time, dataType, data);
            }
        case DataTypes.UI_PROMPT:
            {
                awaitingPromptResponse = true;
                addUpdate((SimpleMessage) data);
                return true;
            }
    }
}

[Buggy Hunk]
msg.agentName       = (String) ((Object[]) data)[ 0 ];

[Patch]
msg.agentID       = (String) ((Object[]) data)[ 0 ];