[Demonstration 1]

[Buggy Method]
private void generateRandomSegment() {
    //get all segmentDefinitions matching current level
    List<SegmentDefinition> segmentDefinitions = new ArrayList<SegmentDefinition>();
    for (Field field : SegmentDefinitions.class.getFields()) {
        //if it's not segment definition continue
        if (!field.getType().getName().equals(SegmentDefinition.class.getTypeName())) {
            continue;
        }
        try {
            SegmentDefinition s = (SegmentDefinition) field.get(null);
            if (s.getMinLevel() <= level && s.getMaxLevel() >= level) {
                segmentDefinitions.add(s);
            }
        } catch (IllegalArgumentException | IllegalAccessException e) {
            logger.error("Error during SegmentDefinitions reflection operation: ", e);
        }
    }
    //get random segment def
    if (segmentDefinitions.size() > 0) {
        logger.debug("spawning segment");
        Random random = new Random();
        SegmentDefinition segmentToSpawn = segmentDefinitions.get(random.nextInt(segmentDefinitions.size()));
        Segment segment = segmentGenerator.getSegment(segmentToSpawn);
        segment.setPosition(nextPosition);
        activeSegments.add(segment);
        this.nextPosition += segmentToSpawn.getBaseOffset() + level;
    }
}

[Buggy Hunk]
if(!field.getType().getName().equals(SegmentDefinition.class.getTypeName())){

[Patch]
if(!field.getType().getName().equals(SegmentDefinition.class.getCanonicalName())){

[Demonstration 2]

[Buggy Method]
public boolean dispatchKeyShortcutEvent(KeyEvent event) {
    boolean ret = super.dispatchKeyShortcutEvent(event);
    if (mPluginActivity != null) {
        return mPluginActivity.dispatchKeyShortcutEvent(event);
    }
    return ret;
}

[Buggy Hunk]
return mPluginActivity.dispatchKeyShortcutEvent(event);

[Patch]
mPluginActivity.dispatchKeyShortcutEvent(event);