[Demonstration 1]

[Buggy Method]
@Override
public void actionPerformed(ActionEvent e) {
    incrementNrOfWindows();
    SWEKEventInformationDialog dialog = new SWEKEventInformationDialog(rEvent, event);
    dialog.addWindowListener(SWEKEventInformationDialog.this);
    dialog.validate();
    dialog.pack();
    dialog.setVisible(true);
}

[Buggy Hunk]
SWEKEventInformationDialog dialog = new SWEKEventInformationDialog(rEvent, event);

[Patch]
SWEKEventInformationDialog dialog = new SWEKEventInformationDialog(rEvents, event);

[Demonstration 2]

[Buggy Method]
public static void processAssignmentLine(String line, SymbolTable st) throws Ex6Exceptions {
    String[] parts = line.split("=");
    String name = parts[0];
    String value = parts[1].trim();
    value = value.substring(0, value.length() - 1);
    String value_type = getValueType(value);
    // check for locals:
    // check if variable is in st.
    if (st.locals.get(name) != null) {
        Variable var = st.locals.get(name);
        if (var.fin) {
            throw new FinalVariableAssignment(name);
            // assignment to final variable.
        }
        if (value_type != st.get_variable_type(name)) {
            if (!(value_type == IntVariable.TYPE && st.get_variable_type(name) == DoubleVariable.TYPE)) {
                if (!(st.get_variable_type(name) == BooleanVariable.TYPE && (value_type.equals(IntVariable.TYPE) || value_type.equals(DoubleVariable.TYPE)))) {
                    throw new IncompatibleType(name);
                    // wrong type assigned to var.
                }
            }
        }
        var.init = true;
    }
    // check for globals:
    // check if variable is in st.
    if (st.globals.get(name) == null) {
        throw new UndefinedVariableUsed(name);
        // variable not defined at assignment.
    } else {
        Variable var = st.globals.get(name);
        if (var.fin) {
            throw new FinalVariableAssignment(name);
            // assignment to final variable.
        }
        if (value_type != st.get_variable_type(name)) {
            if (!(value_type == IntVariable.TYPE && st.get_variable_type(name) == DoubleVariable.TYPE)) {
                throw new IncompatibleType(name);
                // wrong type addigned to var.
            }
        }
        var.init = true;
    }
}

[Buggy Hunk]
String name = parts[0];

[Patch]
String name = parts[0].trim();

[Demonstration 3]

[Buggy Method]
@Override
public Expression parseGrammar() throws GrammarException {
    Variable variable = VariableTable.getInstance().get(name);
    if (notNull(variable)) {
        System.out.println(name + " is currently " + variable.getValue());
    } else {
        System.out.println("variable " + name + " does not exist. ");
        return null;
    }
    if (!type.equals(variable.getType()))
        except("Expected variable '" + name + "' to be type '" + type.name() + "' but was '" + variable.getType().name() + "'", true);
    return new Expression(Expression.Type.Expression, variable.getType());
}

[Buggy Hunk]
if (!type.equals(variable.getType())) except("Expected variable '" + name + "' to be type '"

[Patch]
if (notNull(type) && !type.equals(variable.getType())) except("Expected variable '" + name + "' to be type '"