[Demonstration 1]

[Buggy Method]
@Override
protected void animationLogicTemplate() {
    PointF ende;
    switch(this.direction) {
        case TOPLEFT:
            ende = getTopLeftCorner();
            break;
        case TOPRIGHT:
            ende = getTopRightCorner();
            break;
        case BOTTOMLEFT:
            ende = getBottomLeftCorner();
            break;
        case BOTTOMRIGHT:
            ende = getBottomRightCorner();
            break;
        case BOTTOMCENTER:
            ende = getBottomCenter();
            break;
        case CENTERLEFT:
            ende = getCenterLeft();
            break;
        case CENTERRIGHT:
            ende = getCenterRight();
            break;
        case TOPCENTER:
            ende = getTopCenter();
            break;
        default:
            ende = getTopRightCorner();
            break;
    }
    float xValue = InterpolationHelper.linearPointBetween(start.x, ende.x, counter, N);
    float yValue = InterpolationHelper.linearPointBetween(start.y, ende.y, counter, N);
    currentPosition = new PointF(xValue, yValue);
    if (counter >= N) {
        getAnimatedSprite().setPosition(currentPosition);
        counter = 0;
        if (!isLoop()) {
            finished = true;
            getListener().onAnimationEnd(this);
            return;
        }
        getListener().onAnimationRepeat(this);
    }
    counter++;
    getAnimatedSprite().setPosition(currentPosition);
}

[Buggy Hunk]
currentPosition = new PointF(xValue, yValue);

[Patch]
currentPosition.set(xValue, yValue);

[Demonstration 2]

[Buggy Method]
public void movePoint(int pointerId, PointF pos) {
    if (!points.containsKey(pointerId)) {
        throw new IllegalArgumentException("trying to update non-existent index");
    } else {
        Pair<PointF, PointF> entry = points.get(pointerId);
        points.put(pointerId, new Pair<PointF, PointF>(entry.first, pos));
    }
}

[Buggy Hunk]
points.put(pointerId, new Pair<PointF, PointF>(entry.first, pos));

[Patch]
points.put(pointerId, new Pair<>(entry.first, pos));

[Demonstration 3]

[Buggy Method]
private void fetchMessage() throws IOException {
    int fetchMessageNumber = (int) (inputSplit.getEndMessageOffset() - nextMessageOffset);
    if (fetchMessageNumber > TalosClientConfigKeys.GALAXY_TALOS_CONSUMER_MAX_FETCH_RECORDS_DEFAULT) {
        fetchMessageNumber = TalosClientConfigKeys.GALAXY_TALOS_CONSUMER_MAX_FETCH_RECORDS_DEFAULT;
    }
    int retryTimes = 0;
    TException exception = null;
    while (retryTimes < configuration.getMaxRetrys()) {
        try {
            messageAndOffsetList.addAll(simpleConsumer.fetchMessage(nextMessageOffset, fetchMessageNumber));
            if (messageAndOffsetList.size() == 0) {
                retryTimes = 0;
                try {
                    Thread.sleep(200);
                } catch (InterruptedException e) {
                }
            } else {
                return;
            }
        } catch (TException e) {
            LOG.info("TopicAndPartition: " + topicAndPartition + " fetchMessage with startMessageOffset: " + nextMessageOffset + " failed", e);
            exception = e;
            ++retryTimes;
        }
    }
    throw new IOException("TopicAndPartition: " + topicAndPartition + " fetchMessage with startMessageOffset: " + nextMessageOffset + " failed", exception);
}

[Buggy Hunk]
int fetchMessageNumber = (int)(inputSplit.getEndMessageOffset() - nextMessageOffset);

[Patch]
int fetchMessageNumber = (int)(inputSplit.getEndMessageOffset() - nextMessageOffset + 1);