Program: 19103
Project: 19103
Buggy source:
private void displaySessionData(final SessionDetailModel data){
  mTitle.setText(data.getSessionTitle());
  mSubtitle.setText(data.getSessionSubtitle());
  mPhotoViewContainer.setBackgroundColor(UIUtils.scaleSessionColorToDefaultBG(data.getSessionColor()));
  if (data.hasPhotoUrl()) {
    mHasPhoto=true;
    mNoPlaceholderImageLoader.loadImage(data.getPhotoUrl(),mPhotoView,new RequestListener<String,Bitmap>(){
      @Override public boolean onException(      Exception e,      String model,      Target<Bitmap> target,      boolean isFirstResource){
        mHasPhoto=false;
        recomputePhotoAndScrollingMetrics();
        return false;
      }
      @Override public boolean onResourceReady(      Bitmap resource,      String model,      Target<Bitmap> target,      boolean isFromMemoryCache,      boolean isFirstResource){
        recomputePhotoAndScrollingMetrics();
        return false;
      }
    }
);
    recomputePhotoAndScrollingMetrics();
  }
 else {
    mHasPhoto=false;
    recomputePhotoAndScrollingMetrics();
  }
  tryExecuteDeferredUiOperations();
  mAddScheduleButton.setVisibility((AccountUtils.hasActiveAccount(getContext()) && !data.isKeynote()) ? View.VISIBLE : View.INVISIBLE);
  displayTags(data);
  if (!data.isKeynote()) {
    showStarredDeferred(data.isInSchedule(),false);
  }
  if (!TextUtils.isEmpty(data.getSessionAbstract())) {
    UIUtils.setTextMaybeHtml(mAbstract,data.getSessionAbstract());
    mAbstract.setVisibility(View.VISIBLE);
  }
 else {
    mAbstract.setVisibility(View.GONE);
  }
  final View requirementsBlock=getActivity().findViewById(R.id.session_requirements_block);
  final String sessionRequirements=data.getRequirements();
  if (!TextUtils.isEmpty(sessionRequirements)) {
    UIUtils.setTextMaybeHtml(mRequirements,sessionRequirements);
    requirementsBlock.setVisibility(View.VISIBLE);
  }
 else {
    requirementsBlock.setVisibility(View.GONE);
  }
  final ViewGroup relatedVideosBlock=(ViewGroup)getActivity().findViewById(R.id.related_videos_block);
  relatedVideosBlock.setVisibility(View.GONE);
  updateEmptyView(data);
  updateTimeBasedUi(data);
  if (data.getLiveStreamVideoWatched()) {
    mPhotoView.setColorFilter(getContext().getResources().getColor(R.color.video_scrim_watched));
    mLiveStreamPlayIconAndText.setText(getString(R.string.session_replay));
  }
  if (data.hasLiveStream()) {
    mLiveStreamPlayIconAndText.setOnClickListener(new View.OnClickListener(){
      @Override public void onClick(      View v){
        String videoId=YouTubeUtils.getVideoIdFromSessionData(data.getYouTubeUrl(),data.getLiveStreamId());
        YouTubeUtils.showYouTubeVideo(videoId,getActivity());
      }
    }
);
  }
  fireAnalyticsScreenView(data.getSessionTitle());
  mHandler.post(new Runnable(){
    @Override public void run(){
      onScrollChanged(0,0);
      mScrollViewChild.setVisibility(View.VISIBLE);
    }
  }
);
  mTimeHintUpdaterRunnable=new Runnable(){
    @Override public void run(){
      if (getActivity() == null) {
        return;
      }
      updateTimeBasedUi(data);
      mHandler.postDelayed(mTimeHintUpdaterRunnable,SessionDetailConstants.TIME_HINT_UPDATE_INTERVAL);
    }
  }
;
  mHandler.postDelayed(mTimeHintUpdaterRunnable,SessionDetailConstants.TIME_HINT_UPDATE_INTERVAL);
}

Fixed version (ground truth):
private void displaySessionData(final SessionDetailModel data){
  mTitle.setText(data.getSessionTitle());
  mSubtitle.setText(data.getSessionSubtitle());
  mPhotoViewContainer.setBackgroundColor(UIUtils.scaleSessionColorToDefaultBG(data.getSessionColor()));
  if (data.hasPhotoUrl()) {
    mHasPhoto=true;
    mNoPlaceholderImageLoader.loadImage(data.getPhotoUrl(),mPhotoView,new RequestListener<String,Bitmap>(){
      @Override public boolean onException(      Exception e,      String model,      Target<Bitmap> target,      boolean isFirstResource){
        mHasPhoto=false;
        recomputePhotoAndScrollingMetrics();
        return false;
      }
      @Override public boolean onResourceReady(      Bitmap resource,      String model,      Target<Bitmap> target,      boolean isFromMemoryCache,      boolean isFirstResource){
        recomputePhotoAndScrollingMetrics();
        return false;
      }
    }
);
    recomputePhotoAndScrollingMetrics();
  }
 else {
    mHasPhoto=false;
    recomputePhotoAndScrollingMetrics();
  }
  tryExecuteDeferredUiOperations();
  mAddScheduleButton.setVisibility((AccountUtils.hasActiveAccount(getContext()) && !data.isKeynote()) ? View.VISIBLE : View.INVISIBLE);
  displayTags(data);
  if (!data.isKeynote()) {
    showStarredDeferred(data.isInSchedule(),false);
  }
  if (!TextUtils.isEmpty(data.getSessionAbstract())) {
    UIUtils.setTextMaybeHtml(mAbstract,data.getSessionAbstract());
    mAbstract.setVisibility(View.VISIBLE);
  }
 else {
    mAbstract.setVisibility(View.GONE);
  }
  final View requirementsBlock=getActivity().findViewById(R.id.session_requirements_block);
  final String sessionRequirements=data.getRequirements();
  if (!TextUtils.isEmpty(sessionRequirements)) {
    UIUtils.setTextMaybeHtml(mRequirements,sessionRequirements);
    requirementsBlock.setVisibility(View.VISIBLE);
  }
 else {
    requirementsBlock.setVisibility(View.GONE);
  }
  final ViewGroup relatedVideosBlock=(ViewGroup)getActivity().findViewById(R.id.related_videos_block);
  relatedVideosBlock.setVisibility(View.GONE);
  updateEmptyView(data);
  updateTimeBasedUi(data);
  if (data.getLiveStreamVideoWatched()) {
    mPhotoView.setColorFilter(getContext().getResources().getColor(R.color.played_video_tint));
    mLiveStreamPlayIconAndText.setText(getString(R.string.session_replay));
  }
  if (data.hasLiveStream()) {
    mLiveStreamPlayIconAndText.setOnClickListener(new View.OnClickListener(){
      @Override public void onClick(      View v){
        String videoId=YouTubeUtils.getVideoIdFromSessionData(data.getYouTubeUrl(),data.getLiveStreamId());
        YouTubeUtils.showYouTubeVideo(videoId,getActivity());
      }
    }
);
  }
  fireAnalyticsScreenView(data.getSessionTitle());
  mHandler.post(new Runnable(){
    @Override public void run(){
      onScrollChanged(0,0);
      mScrollViewChild.setVisibility(View.VISIBLE);
    }
  }
);
  mTimeHintUpdaterRunnable=new Runnable(){
    @Override public void run(){
      if (getActivity() == null) {
        return;
      }
      updateTimeBasedUi(data);
      mHandler.postDelayed(mTimeHintUpdaterRunnable,SessionDetailConstants.TIME_HINT_UPDATE_INTERVAL);
    }
  }
;
  mHandler.postDelayed(mTimeHintUpdaterRunnable,SessionDetailConstants.TIME_HINT_UPDATE_INTERVAL);
}