[Demonstration 1]

[Buggy Method]
@Override
public boolean canExecute() {
    if (!super.canExecute()) {
        return false;
    }
    if (!(this.getSourceModel() instanceof WalkerNote) && !(this.getTargetModel() instanceof WalkerNote)) {
        return false;
    }
    return true;
}

[Buggy Hunk]
if (!(this.getSourceModel() instanceof WalkerNote) && !(this.getTargetModel() instanceof WalkerNote)) {

[Patch]
if (!(getSourceModel() instanceof WalkerNote) && !(getTargetModel() instanceof WalkerNote)) {

[Demonstration 2]

[Buggy Method]
public Span[] sentPosDetect(String s) {
    List<Span> sentences = new ArrayList<Span>();
    int start = 0;
    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        if (c == '\n' || c == '\r') {
            if (start - i > 0) {
                Span span = new Span(start, i).trim(s);
                if (span.length() > 0) {
                    sentences.add(span);
                }
                start = i + 1;
            }
        }
    }
    if (s.length() - start > 0) {
        Span span = new Span(start, s.length()).trim(s);
        if (span.length() > 0) {
            sentences.add(span);
        }
    }
    return sentences.toArray(new Span[sentences.size()]);
}

[Buggy Hunk]
if (start - i > 0) {

[Patch]
if (i - start > 0) {

[Demonstration 3]

[Buggy Method]
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public Object convert(Object value, Class targetClass, Object context) {
    if (targetClass != null && value != null) {
        Class<? extends Object> sourceClass = value.getClass();
        if (targetClass.equals(sourceClass)) {
            return value;
        }
        // primitive type
        if (sourceClass.isPrimitive() || targetClass.isPrimitive()) {
            return value;
        }
        // collection
        if (Collection.class.isAssignableFrom(sourceClass) && Collection.class.isAssignableFrom(targetClass)) {
            // not supported
            return null;
        } else if (Timestamp.class.isAssignableFrom(sourceClass) && targetClass.isAssignableFrom(String.class)) {
            return timeStampFormatter.format((Timestamp) value);
        } else if (Date.class.isAssignableFrom(sourceClass) && targetClass.isAssignableFrom(String.class)) {
            return dateFormatter.format((Date) value);
        } else if (java.util.Date.class.isAssignableFrom(targetClass) && sourceClass.isAssignableFrom(String.class)) {
            try {
                return DateUtils.parseDate(value.toString(), new String[] { "yyyy-MM-dd" });
            } catch (ParseException e) {
                return null;
            }
        } else if (targetClass.isAssignableFrom(sourceClass)) {
            return value;
        }
        // complex type
        if (targetClass.getClassLoader() != null && sourceClass.getClassLoader() != null) {
            return ConverterService.convert(value, targetClass, null);
        }
    }
    return null;
}

[Buggy Hunk]
return ConverterService.convert(value, targetClass, null);

[Patch]
return ConverterService.convert(value, targetClass);