[Demonstration 1]

[Buggy Method]
@Override
public Message handleMessage(Message message) {
    MessageType messageType = message.getMessageType();
    switch(messageType) {
        case RESPONSE_FROM_TRE_ATTESTATION_REQUEST:
            if (publicInfo == null) {
                publicInfo = Base64.decodeBase64(String.valueOf(message.getObject()));
                String query = "Mike";
                log.info("Start Encryption ");
                try {
                    String encryptedQuery = Utils.encrypt(query, publicInfo);
                    log.info("Send Encrypted value to TRE");
                    ObjectMapper mapper = new ObjectMapper();
                    String jsonInString = mapper.writeValueAsString(new Message(MessageType.GET_PRICE, encryptedQuery));
                    return Utils.stringToMessage(jsonInString);
                } catch (IOException e) {
                    log.error("{}", e);
                }
            } else {
                return null;
            }
            break;
        case RESPONSE_FROM_TRE_GET_PRICE:
            Map<String, Object> result = (Map<String, Object>) message.getObject();
            QuoteAndRateResponseMessage quoteAndRateResponseMessage = new QuoteAndRateResponseMessage(String.valueOf(result.get("quote")), Integer.valueOf(String.valueOf(result.get("rateValue"))));
            log.info("Great!! Rate Value for user: {}", quoteAndRateResponseMessage.getRateValue());
            return null;
    }
    return null;
}

[Buggy Hunk]
publicInfo = Base64.decodeBase64(String.valueOf(message.getObject()));

[Patch]
setPublicInfo(Base64.decodeBase64(String.valueOf(message.getObject())));

[Demonstration 2]

[Buggy Method]
public void setComponents(final Team team) {
    setDrivers(new ArrayList<MinimalTeamComponent>());
    for (final Driver driver : team.getDrivers()) {
        getDrivers().add(new MinimalTeamComponent(driver.getName(), driver.getPrice(), driver.getTotalPoints()));
    }
    car = new MinimalTeamComponent(team.getCar().getName(), team.getCar().getPrice(), team.getCar().getTotalPoints());
    engine = new MinimalTeamComponent(team.getEngine().getName(), team.getEngine().getPrice(), team.getEngine().getTotalPoints());
}

[Buggy Hunk]
.getPrice(), driver.getTotalPoints()));

[Patch]
.getPrice(), driver.getTotalPoints(), driver.getNumber()));

[Demonstration 3]

[Buggy Method]
public void updateRegister(View v) {
    String name = nameView.getText().toString();
    String nusp = nuspView.getText().toString();
    String password = passwordView.getText().toString();
    String confirmPassword = confirmPasswordView.getText().toString();
    if (name.length() < 1) {
        nameView.setError(getString(R.string.error_field_required));
        nameView.requestFocus();
    } else if (nusp.length() < 4) {
        nuspView.setError(getString(R.string.error_invalid_nusp));
        nuspView.requestFocus();
    } else if (password.length() < 3) {
        passwordView.setError(getString(R.string.error_invalid_password));
        passwordView.requestFocus();
    } else if (!password.equals(confirmPassword)) {
        confirmPasswordView.setError(getString(R.string.password_mismatch));
        confirmPasswordView.setText("");
        confirmPasswordView.requestFocus();
    } else {
        RegisterUpdateActivity.RegisterUpdateTask register = new RegisterUpdateActivity.RegisterUpdateTask(nusp, password, name);
        register.execute();
        /*Intent i = new Intent(this, RegisterUpdateActivity.class);*/
        Intent i = new Intent(this, AfterLoginActivity.class);
        startActivity(i);
        Log.d("RegisterUpdateActivity", "After Intent do RegisterUpdateActivity");
    }
}

[Buggy Hunk]
confirmPasswordView.setError(getString(R.string.password_mismatch));

[Patch]
confirmPasswordView.setError(getString(R.string.error_password_mismatch));