[Demonstration 1]

[Buggy Method]
private GenericRecord convertRecord(JsonNode json, Schema schema) throws IOException {
    GenericRecordBuilder builder = new GenericRecordBuilder(schema);
    List<Field> fields = schema.getFields();
    for (Field f : fields) {
        for (Schema s : f.schema().getTypes()) {
            if (s.getType().equals(Schema.Type.STRING)) {
                builder.set(f.name(), json.get(f.name()).asText());
            } else if (s.getType().equals(Schema.Type.INT)) {
                builder.set(f.name(), json.get(f.name()).asInt());
            } else if (s.getType().equals(Schema.Type.LONG)) {
                builder.set(f.name(), json.get(f.name()).asLong());
            } else if (s.getType().equals(Schema.Type.BOOLEAN)) {
                builder.set(f.name(), json.get(f.name()).asBoolean());
            } else if (s.getType().equals(Schema.Type.DOUBLE)) {
                builder.set(f.name(), json.get(f.name()).asDouble());
            } else if (s.getType().equals(Schema.Type.FLOAT)) {
                builder.set(f.name(), json.get(f.name()).asDouble());
            } else if (s.getType().equals(Schema.Type.RECORD)) {
                builder.set(f.name(), json.get(f.name()));
            } else if (s.getType().equals(Schema.Type.ARRAY)) {
                builder.set(f.name(), convertArray(json.get(f.name()), s));
            } else if (s.getType().equals(Schema.Type.MAP)) {
                builder.set(f.name(), convertMap(json.get(f.name()), s));
            }
        }
    }
    return builder.build();
}

[Buggy Hunk]
builder.set(f.name(), json.get(f.name()));

[Patch]
builder.set(f.name(), convertRecord(json.get(f.name()), s));

[Demonstration 2]

[Buggy Method]
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
    try {
        return userServiceBean.getGroupById(Long.valueOf(value));
    } catch (EJBException e) {
        Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", e);
        throw new ConverterException(new FacesMessage(i18n.getString("errors.converter.group")));
    }
}

[Buggy Hunk]
return userServiceBean.getGroupById(Long.valueOf(value));

[Patch]
return userServiceBean.getGroupByName(value);

[Demonstration 3]

[Buggy Method]
private Object personalizedSerialization(String field, Object value) {
    //        log.info("Il campo è "+field+" il valore "+value);
    if (value == null) {
        //            log.info("il valore è null");
        return null;
    }
    //        log.info("Il tipo originale è "+value.getClass());
    String type = YangType.get(field);
    //        log.info("Il tipo è "+type);
    if (type == null)
        return null;
    if (type.equals("boolean"))
        return Boolean.parseBoolean(value.toString());
    if (type.equals("uint8"))
        return Integer.parseInt(value.toString());
    if (type.equals("uint16"))
        return Integer.parseInt(value.toString());
    if (type.equals("int32"))
        return Integer.parseInt(value.toString());
    if (type.equals("inet:port-number"))
        return Long.parseLong(value.toString());
    return value.toString();
}

[Buggy Hunk]
return Long.parseLong(value.toString());

[Patch]
return Integer.parseInt(value.toString());