[Demonstration 1]

[Buggy Method]
public StructureModelRegistration connectStructureUpdates(LocationKey key, IDocument document, IStructureModelListener structureListener) {
    assertNotNull(key);
    assertNotNull(document);
    assertNotNull(structureListener);
    log.println("connectStructureUpdates: " + key);
    StructureInfo structureInfo = infosMap.getEntry(key);
    boolean connected = structureInfo.connectDocument(document, structureListener);
    if (!connected) {
        // Special case: this key has already been connected to, but with a different document.
        // As such, return a unmanaged StructureInfo
        structureInfo = new StructureInfo(key);
        connected = structureInfo.connectDocument(document, structureListener);
    }
    assertTrue(connected);
    assertTrue(structureInfo.getLocation() == key.getLocation());
    return new StructureModelRegistration(structureInfo, structureListener);
}

[Buggy Hunk]
assertTrue(structureInfo.getLocation() == key.getLocation());

[Patch]
assertTrue(areEqual(structureInfo.getLocation(), key.getLocation()));

[Demonstration 2]

[Buggy Method]
@Before
public void setUp() {
    this.metacardFactory = new MetacardFactory();
    metacardFactory.setMetacardType(new MetacardTypeImpl(GMTI_METACARD, metacardTypeList));
    this.nitfHeaderTransformer = new NitfHeaderTransformer();
    this.nitfGmtiTransformer = new NitfGmtiTransformer();
    this.nitfGmtiTransformer.setWktReader(new WKTReader());
    TreTestUtility.createFileIfNecessary(GMTI_TEST_NITF, TreTestUtility::createNitfNoImageTres);
}

[Buggy Hunk]
this.nitfGmtiTransformer.setWktReader(new WKTReader());

[Patch]
this.nitfGmtiTransformer.setGeometryFactory(new GeometryFactory());

[Demonstration 3]

[Buggy Method]
private void finish(QTDocument doc) {
    final String language = sourceInfo.getLang();
    //        final String date = dateFormat.format(Calendar.getInstance().getTime());
    doc.setLanguage(language);
    String body = doc.getBody();
    if (body.isEmpty()) {
        return;
    }
    String[] sentences = sentenceDetector.sentDetect(body);
    for (String sentence : sentences) {
        if (isStatement(sentence))
            doc.addStatement(sentence);
        else
            continue;
        String[] tokens = sentence.split("\\s+");
        if (nameFinder != null) {
            Span[] nameSpans = nameFinder.find(tokens);
            for (Span ns : nameSpans) {
                String p = "";
                for (int i = ns.getStart(); i < ns.getEnd(); i++) p += tokens[i] + " ";
                p = p.substring(0, p.length() - 1);
                doc.addPerson(p);
            }
        }
        if (organizationFinder != null) {
            Span[] organizationSpans = organizationFinder.find(tokens);
            for (Span os : organizationSpans) {
                String p = "";
                for (int i = os.getStart(); i < os.getEnd(); i++) p += tokens[i] + " ";
                p = p.substring(0, p.length() - 1);
                doc.addOrganization(p);
            }
        }
    }
    if (nameFinder != null)
        nameFinder.clearAdaptiveData();
    if (organizationFinder != null)
        organizationFinder.clearAdaptiveData();
    if (doc != null) {
        doc.setRegion(sourceInfo.getRegion());
        doc.setLanguage(sourceInfo.getLang());
        doc.setSource(sourceInfo.getSource());
    }
}

[Buggy Hunk]
doc.setSource(sourceInfo.getSource());

[Patch]
doc.setSource(sourceInfo.getSourceName());