[Demonstration 1]

[Buggy Method]
@Override
public Collection<DialogId> getDialogIds() {
    Collection<DialogId> items = new ArrayList<>();
    for (Reference<DialogId> reference : dialogs.values()) {
        DialogId dialog = reference.get();
        if (dialog != null)
            items.add(dialog);
    }
    return items;
}

[Buggy Hunk]
for (Reference<DialogId> reference : dialogs.values()) {

[Patch]
for (Reference<DialogIdImpl> reference : dialogs.values()) {

[Demonstration 2]

[Buggy Method]
public static URL getURL(String resource) {
    URL u = Thread.currentThread().getContextClassLoader().getResource(resource);
    if (u == null)
        u = CouchDbUtil.class.getResource("/" + resource);
    return u;
}

[Buggy Hunk]
u = CouchDbUtil.class.getResource("/" + resource);

[Patch]
u = CouchDbUtil.class.getClassLoader().getResource(resource);

[Demonstration 3]

[Buggy Method]
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
    if (!isMatchPackage(bean)) {
        return bean;
    }
    Class<?> clazz = bean.getClass();
    if (isProxyBean(bean)) {
        clazz = AopUtils.getTargetClass(bean);
    }
    Method[] methods = clazz.getMethods();
    for (Method method : methods) {
        String name = method.getName();
        if (name.length() > 3 && name.startsWith("set") && method.getParameterTypes().length == 1 && Modifier.isPublic(method.getModifiers()) && !Modifier.isStatic(method.getModifiers())) {
            try {
                Reference reference = method.getAnnotation(Reference.class);
                if (reference != null) {
                    Object value = refer(reference, method.getParameterTypes()[0]);
                    if (value != null) {
                        method.invoke(bean, new Object[] {});
                    }
                }
            } catch (Exception e) {
                // modified by lishen
                throw new BeanInitializationException("Failed to init remote service reference at method " + name + " in class " + bean.getClass().getName(), e);
                //                    logger.error("Failed to init remote service reference at method " + name + " in class " + bean.getClass().getName() + ", cause: " + e.getMessage(), e);
            }
        }
    }
    Field[] fields = clazz.getDeclaredFields();
    for (Field field : fields) {
        try {
            if (!field.isAccessible()) {
                field.setAccessible(true);
            }
            Reference reference = field.getAnnotation(Reference.class);
            if (reference != null) {
                Object value = refer(reference, field.getType());
                if (value != null) {
                    field.set(bean, value);
                }
            }
        } catch (Exception e) {
            // modified by lishen
            throw new BeanInitializationException("Failed to init remote service reference at filed " + field.getName() + " in class " + bean.getClass().getName(), e);
            //            	logger.error("Failed to init remote service reference at filed " + field.getName() + " in class " + bean.getClass().getName() + ", cause: " + e.getMessage(), e);
        }
    }
    return bean;
}

[Buggy Hunk]
method.invoke(bean, new Object[] {  });

[Patch]
method.invoke(bean, new Object[] { value });