[Demonstration 1]

[Buggy Method]
Node Expr() {
    Node res;
    int kind;
    Node n = null;
    res = Term();
    while (la.kind == 40 || la.kind == 41) {
        kind = Addop();
        n = Term();
        if ((!res.type.isPrimitive() && !res.type.equals(Tab.stringType)) || n == null || (!n.type.isPrimitive() && !n.type.equals(Tab.stringType)) || n.type.equals(Tab.boolType))
            SemErr("type is not a primitive or string except bool");
        else if (res.type.equals(Tab.stringType) && n.type.equals(Tab.stringType) && kind != Node.PLUS)
            SemErr("for string operations, only + is allowed");
        else if ((res.type.equals(Tab.stringType) || n.type.equals(Tab.stringType)) && ((res.type.equals(Tab.stringType) || res.type.equals(Tab.charType)) != (n.type.equals(Tab.stringType) || n.type.equals(Tab.charType))))
            SemErr("you cannot mix primitive and string in expression");
        else {
            res = tab.doImplicitCastByAritmetic(res, res.type, n.type);
            n = tab.doImplicitCastByAritmetic(n, res.type, n.type);
            res = new Node(kind, res, n, res.type);
        }
    }
    return res;
}

[Buggy Hunk]
if((!res.type.isPrimitive() && !res.type.equals(Tab.stringType)) || n==null || (!n.type.isPrimitive() && !n.type.equals(Tab.stringType)) || n.type.equals(Tab.boolType))

[Patch]
if(res == null || (!res.type.isPrimitive() && !res.type.equals(Tab.stringType)) || n==null || (!n.type.isPrimitive() && !n.type.equals(Tab.stringType)) || n.type.equals(Tab.boolType))

[Demonstration 2]

[Buggy Method]
private void setupMarkers() {
    markers = new ArrayList<>();
    LatLng position = null;
    LatLngBounds.Builder builder = new LatLngBounds.Builder();
    for (String key : coords.keySet()) {
        LatLng latLng = coords.get(key);
        Marker marker = mMap.addMarker(getMarkerOptions(key, latLng));
        marker.setTitle(key);
        marker.showInfoWindow();
        markers.add(marker);
        builder.include(marker.getPosition());
        if (isSelectedLocation(key)) {
            position = latLng;
        }
    }
    // zoom in on marker group if no location was selected
    if (position == null) {
        builder.build().getCenter();
    }
    CameraPosition cameraPosition = new CameraPosition.Builder().target(position).zoom(14).build();
    mMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}

[Buggy Hunk]
builder.build().getCenter();

[Patch]
position = builder.build().getCenter();

[Demonstration 3]

[Buggy Method]
public String getNameWithParams() {
    String nameWithParams = this.getName();
    for (ProjectParameterMember parameterMember : this.getParametersType()) {
        nameWithParams += parameterMember.getType();
    }
    return nameWithParams;
}

[Buggy Hunk]
nameWithParams += parameterMember.getType();

[Patch]
nameWithParams += Capitalizer.capitalize(parameterMember.getType());