[Demonstration 1]

[Buggy Method]
protected byte[] ctDecrypt(byte[] key) {
    StringBuffer retData = new StringBuffer();
    retData.append(this.getInstEncKeyNum());
    retData.append("|");
    retData.append(this.bytesToString(key));
    HBCIUtilsInternal.getCallback().callback(this, HBCIServerCallback.CT_DECRYPT, "decrypt", HBCICallback.TYPE_TEXT, retData);
    String result = retData.toString();
    if (result == "<error>") {
        throw new CTException("error while encrypting data");
    }
    return this.stringToBytes(result);
}

[Buggy Hunk]
if(result == "<error>") {

[Patch]
if(result.equals("<error>")) {

[Demonstration 2]

[Buggy Method]
public Map<String, double[]> getSubjectProbabilityMap() {
    return subjectProbabilityMap;
}

[Buggy Hunk]
public Map<String, double[]> getSubjectProbabilityMap() {

[Patch]
public Map<String, int[]> getSubjectProbabilityMap() {

[Demonstration 3]

[Buggy Method]
public static Person generatePerson(org.openmrs.Person omrsPerson) {
    Person person = new Person();
    //Set person ID
    IdDt uuid = new IdDt();
    uuid.setValue(omrsPerson.getUuid());
    person.setId(uuid);
    List<HumanNameDt> humanNames = new ArrayList<HumanNameDt>();
    for (PersonName name : omrsPerson.getNames()) {
        HumanNameDt fhirName = new HumanNameDt();
        StringDt familyName = new StringDt();
        familyName.setValue(name.getFamilyName());
        List<StringDt> familyNames = new ArrayList<StringDt>();
        familyNames.add(familyName);
        fhirName.setFamily(familyNames);
        StringDt givenName = new StringDt();
        givenName.setValue(name.getGivenName());
        List<StringDt> givenNames = new ArrayList<StringDt>();
        givenNames.add(givenName);
        fhirName.setGiven(givenNames);
        if (name.getFamilyNameSuffix() != null) {
            StringDt suffix = fhirName.addSuffix();
            suffix.setValue(name.getFamilyNameSuffix());
            List<StringDt> suffixes = new ArrayList<StringDt>();
            suffixes.add(suffix);
            fhirName.setSuffix(suffixes);
        }
        if (name.getPrefix() != null) {
            StringDt prefix = fhirName.addPrefix();
            prefix.setValue(name.getPrefix());
            List<StringDt> prefixes = new ArrayList<StringDt>();
            prefixes.add(prefix);
            fhirName.setSuffix(prefixes);
        }
        if (name.isPreferred()) {
            fhirName.setUse(NameUseEnum.USUAL);
        } else {
            fhirName.setUse(NameUseEnum.OLD);
        }
        humanNames.add(fhirName);
    }
    person.setName(humanNames);
    //Set address in FHIR person
    List<AddressDt> addressList = new ArrayList<AddressDt>();
    AddressDt fhirAddress;
    for (PersonAddress address : omrsPerson.getAddresses()) {
        fhirAddress = new AddressDt();
        fhirAddress.setCity(address.getCityVillage());
        fhirAddress.setCountry(address.getCountry());
        fhirAddress.setState(address.getStateProvince());
        fhirAddress.setPostalCode(address.getPostalCode());
        List<StringDt> addressStrings = new ArrayList<StringDt>();
        addressStrings.add(new StringDt(address.getAddress1()));
        addressStrings.add(new StringDt(address.getAddress2()));
        addressStrings.add(new StringDt(address.getAddress3()));
        addressStrings.add(new StringDt(address.getAddress4()));
        addressStrings.add(new StringDt(address.getAddress5()));
        fhirAddress.setLine(addressStrings);
        if (address.isPreferred()) {
            fhirAddress.setUse(AddressUseEnum.HOME);
        } else {
            fhirAddress.setUse(AddressUseEnum.OLD);
        }
        addressList.add(fhirAddress);
    }
    person.setAddress(addressList);
    //Set gender in fhir person object
    if (omrsPerson.getGender().equals("M")) {
        person.setGender(AdministrativeGenderEnum.MALE);
    } else if (person.getGender().equals("F")) {
        person.setGender(AdministrativeGenderEnum.FEMALE);
    } else {
        person.setGender(AdministrativeGenderEnum.UNKNOWN);
    }
    DateTimeDt fhirBirthDate = new DateTimeDt();
    fhirBirthDate.setValue(omrsPerson.getBirthdate());
    person.setBirthDate(fhirBirthDate);
    if (!omrsPerson.isVoided()) {
        person.setActive(true);
    } else {
        person.setActive(false);
    }
    //Check whether person converted to a patient
    Patient patient = Context.getPatientService().getPatientByUuid(omrsPerson.getUuid());
    if (patient != null) {
        List<Person.Link> links = new ArrayList<Person.Link>();
        Person.Link link = new Person.Link();
        String uri = FHIRConstants.PATIENT + "/" + omrsPerson.getUuid();
        ResourceReferenceDt other = new ResourceReferenceDt();
        PersonName name = omrsPerson.getPersonName();
        StringBuilder nameDisplay = new StringBuilder();
        nameDisplay.append(name.getGivenName());
        nameDisplay.append(" ");
        nameDisplay.append(name.getFamilyName());
        other.setDisplay(nameDisplay.toString());
        IdDt patientRef = new IdDt();
        patientRef.setValue(uri);
        other.setReference(patientRef);
        link.setOther(other);
        links.add(link);
        person.setLink(links);
    }
    FHIRUtils.validate(person);
    return person;
}

[Buggy Hunk]
} else if (person.getGender().equals("F")) {

[Patch]
} else if (omrsPerson.getGender().equals("F")) {