[Demonstration 1]

[Buggy Method]
public final Set<Class<? extends ParaObject>> getComponentClasses(String basePackage) {
    basePackage = (basePackage == null) ? "" : basePackage;
    Set<Class<? extends ParaObject>> classes = new HashSet<Class<? extends ParaObject>>();
    for (BeanDefinition candidate : findCandidateComponents(basePackage)) {
        try {
            Class<? extends ParaObject> cls = (Class<? extends ParaObject>) ClassUtils.resolveClassName(candidate.getBeanClassName(), Thread.currentThread().getContextClassLoader());
            classes.add(cls);
        } catch (Exception ex) {
            logger.error(null, ex);
        }
    }
    return classes;
}

[Buggy Hunk]
logger.error(null, ex);

[Patch]
LOG.error(null, ex);

[Demonstration 2]

[Buggy Method]
public static String formatDateUnknownTimezone(Date date) {
    // Create the Calendar object in the system timezone
    Calendar calendar = GregorianCalendar.getInstance(Locale.US);
    calendar.setTime(date);
    // Have it formatted
    String formatted = formatDate(date);
    // Strip the timezone details before returning
    return formatted.substring(0, formatted.length() - 1);
}

[Buggy Hunk]
String formatted = formatDate(date);

[Patch]
String formatted = formatDate(calendar);

[Demonstration 3]

[Buggy Method]
@SuppressWarnings("unchecked")
@Override
public boolean dataUpdate(double time, String dataType, Object data) {
    switch(dataType) {
        case DataTypes.BDI_PLANS:
            {
                addUpdate((SimpleMessage) data);
                return true;
            }
        case DataTypes.LOCATION:
        case DataTypes.ROUTE:
        case DataTypes.REGION:
        case DataTypes.EVAC_SCHEDULE:
        case DataTypes.BDI_TREE:
        case DataTypes.IMAGE:
            {
                SimpleMessage msg = new SimpleMessage();
                msg.name = dataType;
                msg.params = new Object[] { data };
                addUpdate(msg);
                return true;
            }
        case DataTypes.REGION_ASSIGNMENT:
            {
                SimpleMessage msg = new SimpleMessage();
                msg.name = dataType;
                msg.agentName = (String) ((Object[]) data)[0];
                msg.params = new Object[] { (String) ((Object[]) data)[1] };
                addUpdate(msg);
                return true;
            }
        // unpack fire phases and locations, and add updates for individual fire locations
        case DataTypes.FIRE:
            {
                List<List<double[]>> firePhases;
                try {
                    firePhases = (List<List<double[]>>) data;
                    for (List<double[]> phase : firePhases) {
                        SimpleMessage formatted = new SimpleMessage();
                        formatted.name = FireModule.FIREPHASE;
                        StringBuilder sb = new StringBuilder();
                        for (double[] coords : phase) {
                            sb.append(coords[0] + "," + coords[1] + " ");
                        }
                        formatted.params = new Object[] { sb.toString() };
                        addUpdate(formatted);
                    }
                    return true;
                } catch (ClassCastException e) {
                    System.out.println("Fire data invalid");
                    return false;
                }
            }
        default:
            {
                return super.dataUpdate(time, dataType, data);
            }
        case DataTypes.UI_PROMPT:
            {
                awaitingPromptResponse = true;
                addUpdate((SimpleMessage) data);
                return true;
            }
    }
}

[Buggy Hunk]
msg.agentName       = (String) ((Object[]) data)[ 0 ];

[Patch]
msg.agentID       = (String) ((Object[]) data)[ 0 ];