[Demonstration 1]

[Buggy Method]
public static View createView(Context context, XmlPullParser xmlPullParser, ViewGroup parent, Class<?> holderClass) {
    if (xmlPullParser == null)
        return null;
    HashMap<String, Integer> ids = new HashMap<>();
    try {
        if (xmlPullParser.next() != XmlPullParser.START_TAG) {
            throw new InflateException(xmlPullParser.getPositionDescription() + ": No start tag found!");
        }
    } catch (XmlPullParserException | IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    if (parent == null) {
        parent = new FrameLayout(context);
        parent.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
    }
    View container = createViewInternal(context, xmlPullParser, parent, ids);
    if (container == null)
        return null;
    if (container.getTag(INTERNAL_TAG_ID) != null)
        XmlDynamicUtils.applyLayoutProperties(container, (List<XmlDynamicProperty>) container.getTag(INTERNAL_TAG_ID), parent, ids);
    /* clear tag from properties */
    container.setTag(INTERNAL_TAG_ID, null);
    if (holderClass != null) {
        try {
            Object holder = holderClass.getConstructor().newInstance();
            XmlDynamicUtils.parseDynamicView(holder, container, ids);
            parent.setTag(holder);
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
    }
    parent.addView(container);
    return parent;
}

[Buggy Hunk]
parent.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));

[Patch]
parent.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

[Demonstration 2]

[Buggy Method]
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
    super.onScrollStateChanged(recyclerView, newState);
    if (lastItem >= getItemCount() - 2 && newState == RecyclerView.SCROLL_STATE_IDLE && !isLoad) {
        ViewGroup.LayoutParams params = getFooterView().getLayoutParams();
        params.width = RecyclerView.LayoutParams.MATCH_PARENT;
        params.height = RecyclerView.LayoutParams.WRAP_CONTENT;
        getFooterView().setLayoutParams(params);
        getFooterView().setVisibility(VISIBLE);
        recyclerView.smoothScrollToPosition(getItemCount() - 1);
        isLoad = true;
        loadMoreListener.onLoadMore();
    }
    if (firstVisible <= 1) {
        // header is on 0
        isTop = true;
    } else {
        isTop = false;
        RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) getHeaderView().getLayoutParams();
        params.width = RecyclerView.LayoutParams.MATCH_PARENT;
        params.height = RecyclerView.LayoutParams.WRAP_CONTENT;
        params.setMargins(0, -getHeaderView().getHeight(), 0, 0);
        getHeaderView().setLayoutParams(params);
    }
}

[Buggy Hunk]
if (lastItem >= getItemCount() - 2 && newState == RecyclerView.SCROLL_STATE_IDLE && !isLoad) {

[Patch]
if (lastItem >= getItemCount() - 2 && newState == RecyclerView.SCROLL_STATE_IDLE && !isLoad && mRecyclerView.getHeight() >= getScreenHeight()) {

[Demonstration 3]

[Buggy Method]
public int getGanhador(Carta.Valor manilha) {
    Carta bestCard = Carta.getWorstCard(manilha);
    int n = 0;
    for (Carta c : cartas) {
        if (c.valor().getRank() == manilha.getRank()) {
            if (bestCard.valor().getRank() != manilha.getRank())
                bestCard = c;
            else if (c.naipe().getRank() > bestCard.naipe().getRank())
                bestCard = c;
        } else if (c.valor().getRank() > bestCard.valor().getRank())
            bestCard = c;
    }
    System.out.println("Melhor carta: " + bestCard);
    if (bestCard.valor().getRank() != manilha.getRank()) {
        for (Carta c : cartas) {
            if (bestCard.valor().getRank() == c.valor().getRank())
                n++;
        }
    }
    if (n > 1) {
        return -1;
    } else {
        return cartas.indexOf(bestCard);
    }
}

[Buggy Hunk]
else if (c.valor().getRank() > bestCard.valor().getRank())

[Patch]
else if (c.valor().getRank() > bestCard.valor().getRank() && bestCard.valor().getRank() != manilha.getRank())