Buggy code:
public class CampaignDetailsAdapter extends RecyclerView . Adapter < RecyclerView . ViewHolder > { public static final int VIEW_TYPE_CAMPAIGN = 0 ; public static final int VIEW_TYPE_CAMPAIGN_FOOTER = 1 ; public static final int VIEW_TYPE_REPORT_BACK = 2 ; private final int webOrange ; private final int shadowColor ; private final int slantHeight ; private final int widthOvershoot ; private final int heightShadowOvershoot ; private ArrayList < Object > dataSet = new ArrayList < > ( ) ; private CampaignDetailsAdapter . DetailsAdapterClickListener detailsAdapterClickListener ; private Campaign currentCampaign ; private boolean mUserIsSignedUp ; private boolean mSignupInProgress ; public CampaignDetailsAdapter ( CampaignDetailsAdapter . DetailsAdapterClickListener detailsAdapterClickListener , Resources resources , boolean isSignedUp ) { } public void updateCampaign ( Campaign campaign ) { } public void addAll ( List < ReportBack > reportBacks ) { } public Campaign getCampaign ( ) { } public void processingUpload ( ) { } public void refreshOnSignup ( ) { } public interface DetailsAdapterClickListener { void onScrolledToBottom ( ) { } void proveClicked ( ) { } void shareClicked ( Campaign campaign ) { } void onUserClicked ( String id ) { } void onKudosClicked ( ReportBack reportBack , Kudos kudos ) { } void onSignupClicked ( int campaignId ) { } } @ Override public ViewHolder onCreateViewHolder ( ViewGroup parent , int viewType ) { } @ Override public void onBindViewHolder ( final RecyclerView . ViewHolder holder , final int position ) { <START_BUG> if ( position == ( ( dataSet . size ( ) ) - 3 ) ) { <END_BUG> detailsAdapterClickListener . onScrolledToBottom ( ) ; } if ( ( getItemViewType ( position ) ) == ( CampaignDetailsAdapter . VIEW_TYPE_CAMPAIGN ) ) { final Campaign campaign = ( ( Campaign ) ( dataSet . get ( position ) ) ) ; CampaignDetailsAdapter . CampaignViewHolder campaignViewHolder = ( ( CampaignDetailsAdapter . CampaignViewHolder ) ( holder ) ) ; Resources res = campaignViewHolder . imageView . getContext ( ) . getResources ( ) ; int height = res . getDimensionPixelSize ( campaign_height_expanded ) ; if ( ( ( campaign . imagePath ) == null ) || ( campaign . imagePath . isEmpty ( ) ) ) { Picasso . with ( campaignViewHolder . imageView . getContext ( ) ) . load ( image_error ) . resize ( 0 , height ) . into ( campaignViewHolder . imageView ) ; } else { Picasso . with ( campaignViewHolder . imageView . getContext ( ) ) . load ( campaign . imagePath ) . placeholder ( image_loading ) . resize ( 0 , height ) . into ( campaignViewHolder . imageView ) ; } campaignViewHolder . title . setText ( campaign . title ) ; campaignViewHolder . callToAction . setText ( campaign . callToAction ) ; if ( mSignupInProgress ) { campaignViewHolder . signupProgress . setVisibility ( VISIBLE ) ; } else { campaignViewHolder . signupProgress . setVisibility ( GONE ) ; } if ( ! ( mUserIsSignedUp ) ) { campaignViewHolder . solutionWrapper . setVisibility ( GONE ) ; } else { campaignViewHolder . solutionWrapper . setVisibility ( VISIBLE ) ; if ( ( campaign . solutionCopy ) != null ) { campaignViewHolder . solutionCopy . setText ( campaign . solutionCopy . trim ( ) ) ; } else { campaignViewHolder . solutionCopy . setVisibility ( GONE ) ; } if ( ( campaign . solutionSupport ) != null ) { campaignViewHolder . solutionSupport . setText ( campaign . solutionSupport . trim ( ) ) ; } else { campaignViewHolder . solutionSupport . setVisibility ( GONE ) ; } } if ( ! ( mUserIsSignedUp ) ) { campaignViewHolder . actionButton . setText ( res . getString ( stop_being_bored ) ) ; } else if ( ( campaign . showShare ) == ( UploadShare . SHARE ) ) { campaignViewHolder . actionButton . setText ( cta_photo_in_hub ) ; } else if ( ( campaign . showShare ) == ( UploadShare . UPLOADING ) ) { campaignViewHolder . actionButton . setText ( res . getString ( uploading ) ) ; } else if ( ( campaign . showShare ) == ( UploadShare . SHOW_OFF ) ) { campaignViewHolder . actionButton . setText ( res . getString ( show_off ) ) ; } campaignViewHolder . actionButton . setOnClickListener ( new View . OnClickListener ( ) { @ Override public void onClick ( View v ) { if ( ! ( mUserIsSignedUp ) ) { mSignupInProgress = true ; notifyDataSetChanged ( ) ; detailsAdapterClickListener . onSignupClicked ( campaign . id ) ; } else if ( ( campaign . showShare ) == ( UploadShare . SHARE ) ) { detailsAdapterClickListener . shareClicked ( campaign ) ; } else if ( ( campaign . showShare ) == ( UploadShare . SHOW_OFF ) ) { detailsAdapterClickListener . proveClicked ( ) ; } } } ) ; } else if ( ( getItemViewType ( position ) ) == ( CampaignDetailsAdapter . VIEW_TYPE_REPORT_BACK ) ) { final ReportBack reportBack = ( ( ReportBack ) ( dataSet . get ( position ) ) ) ; final CampaignDetailsAdapter . ReportBackViewHolder reportBackViewHolder = ( ( CampaignDetailsAdapter . ReportBackViewHolder ) ( holder ) ) ; final Context context = reportBackViewHolder . itemView . getContext ( ) ; Picasso . with ( context ) . load ( reportBack . getImagePath ( ) ) . into ( reportBackViewHolder . imageView ) ; String reportbackName = reportBack . user . first_name ; if ( ( ( reportBack . user . last_name ) != null ) && ( ! ( reportBack . user . last_name . isEmpty ( ) ) ) ) { reportbackName += ( "<seq2seq4repair_space>" + ( reportBack . user . last_name . charAt ( 0 ) ) ) + "." ; } reportBackViewHolder . name . setText ( reportbackName ) ;

Fix:
if ( position >= ( ( dataSet . size ( ) ) - 3 ) ) {