[Demonstration 1]

[Buggy Method]
public void getNewCard() {
    if (!TextUtils.isEmpty(prevKey)) {
        Log.d(TAG, "starCountListener removed");
        databaseReference.child("starCount").child(prevKey).removeEventListener(valueEventListener);
        databaseReference.child("user").child(userId).child("checkedCard").child(prevKey).removeEventListener(starCheckValueEventListener);
        databaseReference.child("comment").child(prevKey).removeEventListener(commentValueEventListener);
    }
    starButton.setClickable(false);
    recordButton.setClickable(false);
    if (null == iterator) {
        return;
    }
    while (iterator.hasNext()) {
        imageLoadingIndicator.show();
        DataSnapshot snapshot = iterator.next();
        CardItem cardItem = snapshot.getValue(CardItem.class);
        // TODO -> 출시 전 count 개수 바꾸기
        if (cardItem.getId().equals(userId) || cardItem.getBlindCount() > 0) {
            continue;
        } else {
            if (!TextUtils.isEmpty(prevKey)) {
                cardLoading.setVisibility(View.VISIBLE);
            }
            //                Log.d(TAG, "cardItem: " + cardItem.toString());
            prevKey = snapshot.getKey();
            storageReference.child("card").child(cardItem.getId() + "/cardImage/" + cardItem.getCardName()).getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {

                @Override
                public void onSuccess(Uri uri) {
                    //                        Log.d(TAG, "cardImage: " + uri);
                    Glide.with(getActivity()).load(uri).thumbnail(0.5f).apply(new RequestOptions().error(R.drawable.ic_loading_error).format(DecodeFormat.DEFAULT).centerInside()).listener(new RequestListener<Drawable>() {

                        @Override
                        public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                            imageLoadingIndicator.hide();
                            cardInfo.setVisibility(View.GONE);
                            cardLoading.startAnimation(fadeOut);
                            swipeRefreshLayout.setRefreshing(false);
                            return false;
                        }

                        @Override
                        public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                            imageLoadingIndicator.hide();
                            cardInfo.setVisibility(View.VISIBLE);
                            cardLoading.startAnimation(fadeOut);
                            swipeRefreshLayout.setRefreshing(false);
                            return false;
                        }
                    }).into(cardImage);
                    if (!TextUtils.isEmpty(prevKey)) {
                        databaseReference.child("user").child(userId).child("checkedCard").child(prevKey).addListenerForSingleValueEvent(starCheckValueEventListener);
                        databaseReference.child("starCount").child(prevKey).addValueEventListener(valueEventListener);
                        Log.d(TAG, "checkedCard / starCountListener added");
                        starButton.setClickable(true);
                        recordButton.setClickable(true);
                        databaseReference.child("comment").child(prevKey).orderByChild("orderKey").limitToFirst(2).addValueEventListener(commentValueEventListener);
                    } else {
                        Glide.with(getActivity()).load(R.drawable.ic_loading_error).apply(new RequestOptions().format(DecodeFormat.DEFAULT).centerInside()).into(cardImage);
                    }
                }
            }).addOnFailureListener(new OnFailureListener() {

                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.d(TAG, "cardImage: " + e);
                    cardLoading.startAnimation(fadeOut);
                }
            });
            return;
        }
    }
    prevKey = null;
    imageLoadingIndicator.hide();
    cardLoading.startAnimation(fadeOut);
    cardInfo.setVisibility(View.GONE);
    starButton.setClickable(false);
    recordButton.setClickable(false);
    swipeRefreshLayout.setRefreshing(false);
    starButton.setImageResource(R.drawable.ic_unstar);
    Glide.with(getActivity()).load(R.drawable.ic_loading_error).apply(new RequestOptions().format(DecodeFormat.DEFAULT).centerInside()).into(cardImage);
    multipleReplyLayout.setVisibility(View.INVISIBLE);
    singleReplyLayout.setVisibility(View.VISIBLE);
    //singlePlayButton.setVisibility(View.INVISIBLE);
    singleComment.setHint("새로운 카드가 없어요!");
    sweetAlertDialog = new SweetAlertDialog(getActivity(), SweetAlertDialog.WARNING_TYPE);
    sweetAlertDialog.setTitleText("카드가 없어요!").setContentText("아래로 쓸어 내려 새 카드를 받아 볼까요?").setConfirmText("확인").show();
}

[Buggy Hunk]
if (cardItem.getId().equals(userId) || cardItem.getBlindCount() > 0) {

[Patch]
if (cardItem.getId().equals(userId) || cardItem.getBlindCount() > 10) {

[Demonstration 2]

[Buggy Method]
@Override
public <T> MStream<T> stream(Iterable<? extends T> iterable) {
    JavaRDD<T> rdd;
    if (iterable == null) {
        return empty();
    } else if (iterable instanceof List) {
        rdd = getSparkContext().parallelize(Cast.<List<T>>as(iterable));
    } else {
        rdd = getSparkContext().parallelize(Lists.<T>newArrayList(Cast.as(iterable)));
    }
    return new SparkStream<>(rdd);
}

[Buggy Hunk]
rdd = getSparkContext().parallelize(Lists.<T>newArrayList(Cast.as(iterable)));

[Patch]
rdd = getSparkContext().parallelize(Lists.<T>newArrayList(iterable));

[Demonstration 3]

[Buggy Method]
protected Unfiltered computeNext() {
    try {
        return iterator.hasNext() ? iterator.next() : endOfData();
    } catch (IndexOutOfBoundsException e) {
        sstable.markSuspect();
        throw new CorruptSSTableException(e, filename);
    } catch (IOError e) {
        if (e.getCause() instanceof IOException) {
            sstable.markSuspect();
            throw new CorruptSSTableException((Exception) e.getCause(), filename);
        } else {
            throw e;
        }
    }
}

[Buggy Hunk]
return iterator.hasNext() ? iterator.next() : endOfData();

[Patch]
return doCompute();