Program: 20423
Project: 20423
Buggy source:
private void bindPost(Theme theme,Post post){
  bound=true;
  threadMode=callback.getLoadable().isThreadMode();
  setPostLinkableListener(post,this);
  replies.setClickable(threadMode);
  if (!threadMode) {
    replies.setBackgroundResource(0);
  }
  if (highlighted) {
    setBackgroundColor(theme.highlightedColor);
  }
 else   if (post.isSavedReply) {
    setBackgroundColor(theme.savedReplyColor);
  }
 else   if (selected) {
    setBackgroundColor(theme.selectedColor);
  }
 else   if (threadMode) {
    setBackgroundResource(0);
  }
 else {
    setBackgroundResource(R.drawable.item_background);
  }
  if (post.filterHighlightedColor != 0) {
    filterMatchColor.setVisibility(View.VISIBLE);
    filterMatchColor.setBackgroundColor(post.filterHighlightedColor);
  }
 else {
    filterMatchColor.setVisibility(View.GONE);
  }
  if (post.hasImage) {
    thumbnailView.setVisibility(View.VISIBLE);
    thumbnailView.setUrl(post.thumbnailUrl,thumbnailView.getLayoutParams().width,thumbnailView.getLayoutParams().height);
  }
 else {
    thumbnailView.setVisibility(View.GONE);
    thumbnailView.setUrl(null,0,0);
  }
  List<CharSequence> titleParts=new ArrayList<>(5);
  if (post.subjectSpan != null) {
    titleParts.add(post.subjectSpan);
    titleParts.add("String_Node_Str");
  }
  titleParts.add(post.nameTripcodeIdCapcodeSpan);
  CharSequence time;
  if (ChanSettings.postFullDate.get()) {
    time=post.date;
  }
 else {
    time=DateUtils.getRelativeTimeSpanString(post.time * 1000L,Time.get(),DateUtils.SECOND_IN_MILLIS,0);
  }
  String noText="String_Node_Str" + post.no;
  SpannableString date=new SpannableString(noText + "String_Node_Str" + time);
  date.setSpan(new ForegroundColorSpan(theme.detailsColor),0,date.length(),0);
  date.setSpan(new AbsoluteSizeSpan(detailsSizePx),0,date.length(),0);
  boolean noClickable=ChanSettings.tapNoReply.get();
  if (noClickable) {
    date.setSpan(new NoClickableSpan(),0,noText.length(),0);
  }
  titleParts.add(date);
  if (post.hasImage) {
    PostImage image=post.image;
    boolean postFileName=ChanSettings.postFilename.get();
    if (postFileName) {
      String filename=image.spoiler ? getString(R.string.image_spoiler_filename) : image.filename + "String_Node_Str" + image.extension;
      SpannableString fileInfo=new SpannableString("String_Node_Str" + filename);
      fileInfo.setSpan(new ForegroundColorSpan(theme.detailsColor),0,fileInfo.length(),0);
      fileInfo.setSpan(new AbsoluteSizeSpan(detailsSizePx),0,fileInfo.length(),0);
      fileInfo.setSpan(new UnderlineSpan(),0,fileInfo.length(),0);
      titleParts.add(fileInfo);
    }
    if (ChanSettings.postFileInfo.get()) {
      SpannableString fileInfo=new SpannableString((postFileName ? "String_Node_Str" : "String_Node_Str") + image.extension.toUpperCase() + "String_Node_Str"+ AndroidUtils.getReadableFileSize(image.size,false)+ "String_Node_Str"+ image.imageWidth+ "String_Node_Str"+ image.imageHeight);
      fileInfo.setSpan(new ForegroundColorSpan(theme.detailsColor),0,fileInfo.length(),0);
      fileInfo.setSpan(new AbsoluteSizeSpan(detailsSizePx),0,fileInfo.length(),0);
      titleParts.add(fileInfo);
    }
  }
  title.setText(TextUtils.concat(titleParts.toArray(new CharSequence[titleParts.size()])));
  icons.edit();
  icons.set(PostIcons.STICKY,post.sticky);
  icons.set(PostIcons.CLOSED,post.closed);
  icons.set(PostIcons.DELETED,post.deleted.get());
  icons.set(PostIcons.ARCHIVED,post.archived);
  if (!isEmpty(post.country)) {
    icons.set(PostIcons.COUNTRY,true);
    icons.showCountry(post,theme,countrySizePx);
  }
 else {
    icons.set(PostIcons.COUNTRY,false);
  }
  icons.apply();
  CharSequence commentText;
  if (post.comment.length() > COMMENT_MAX_LENGTH_BOARD && !threadMode) {
    commentText=post.comment.subSequence(0,COMMENT_MAX_LENGTH_BOARD);
  }
 else {
    commentText=post.comment;
  }
  comment.setText(commentText);
  comment.setVisibility(isEmpty(commentText) && !post.hasImage ? GONE : VISIBLE);
  if (commentClickable != threadMode) {
    commentClickable=threadMode;
    if (commentClickable) {
      comment.setMovementMethod(commentMovementMethod);
      comment.setOnClickListener(selfClicked);
      if (noClickable) {
        title.setMovementMethod(titleMovementMethod);
      }
    }
 else {
      comment.setOnClickListener(null);
      comment.setClickable(false);
      comment.setMovementMethod(null);
      title.setMovementMethod(null);
    }
  }
  int repliesFromSize;
synchronized (post.repliesFrom) {
    repliesFromSize=post.repliesFrom.size();
  }
  if ((!threadMode && post.replies > 0) || (repliesFromSize > 0)) {
    replies.setVisibility(View.VISIBLE);
    int replyCount=threadMode ? repliesFromSize : post.replies;
    String text=getResources().getQuantityString(R.plurals.reply,replyCount,replyCount);
    if (!threadMode && post.images > 0) {
      text+="String_Node_Str" + getResources().getQuantityString(R.plurals.image,post.images,post.images);
    }
    replies.setText(text);
    comment.setPadding(comment.getPaddingLeft(),comment.getPaddingTop(),comment.getPaddingRight(),0);
    replies.setPadding(replies.getPaddingLeft(),paddingPx,replies.getPaddingRight(),replies.getPaddingBottom());
  }
 else {
    replies.setVisibility(View.GONE);
    comment.setPadding(comment.getPaddingLeft(),comment.getPaddingTop(),comment.getPaddingRight(),paddingPx);
    replies.setPadding(replies.getPaddingLeft(),0,replies.getPaddingRight(),replies.getPaddingBottom());
  }
  divider.setVisibility(showDivider ? VISIBLE : GONE);
}

Fixed version (ground truth):
private void bindPost(Theme theme,Post post){
  bound=true;
  threadMode=callback.getLoadable().isThreadMode();
  setPostLinkableListener(post,this);
  replies.setClickable(threadMode);
  if (!threadMode) {
    replies.setBackgroundResource(0);
  }
  if (highlighted) {
    setBackgroundColor(theme.highlightedColor);
  }
 else   if (post.isSavedReply) {
    setBackgroundColor(theme.savedReplyColor);
  }
 else   if (selected) {
    setBackgroundColor(theme.selectedColor);
  }
 else   if (threadMode) {
    setBackgroundResource(0);
  }
 else {
    setBackgroundResource(R.drawable.item_background);
  }
  if (post.filterHighlightedColor != 0) {
    filterMatchColor.setVisibility(View.VISIBLE);
    filterMatchColor.setBackgroundColor(post.filterHighlightedColor);
  }
 else {
    filterMatchColor.setVisibility(View.GONE);
  }
  if (post.hasImage) {
    thumbnailView.setVisibility(View.VISIBLE);
    thumbnailView.setUrl(post.thumbnailUrl,thumbnailView.getLayoutParams().width,thumbnailView.getLayoutParams().height);
  }
 else {
    thumbnailView.setVisibility(View.GONE);
    thumbnailView.setUrl(null,0,0);
  }
  List<CharSequence> titleParts=new ArrayList<>(5);
  if (post.subjectSpan != null) {
    titleParts.add(post.subjectSpan);
    titleParts.add("String_Node_Str");
  }
  titleParts.add(post.nameTripcodeIdCapcodeSpan);
  CharSequence time;
  if (ChanSettings.postFullDate.get()) {
    time=post.date;
  }
 else {
    time=DateUtils.getRelativeTimeSpanString(post.time * 1000L,Time.get(),DateUtils.SECOND_IN_MILLIS,0);
  }
  String noText="String_Node_Str" + post.no;
  SpannableString date=new SpannableString(noText + "String_Node_Str" + time);
  date.setSpan(new ForegroundColorSpanHashed(theme.detailsColor),0,date.length(),0);
  date.setSpan(new AbsoluteSizeSpanHashed(detailsSizePx),0,date.length(),0);
  boolean noClickable=ChanSettings.tapNoReply.get();
  if (noClickable) {
    date.setSpan(new NoClickableSpan(),0,noText.length(),0);
  }
  titleParts.add(date);
  if (post.hasImage) {
    PostImage image=post.image;
    boolean postFileName=ChanSettings.postFilename.get();
    if (postFileName) {
      String filename=image.spoiler ? getString(R.string.image_spoiler_filename) : image.filename + "String_Node_Str" + image.extension;
      SpannableString fileInfo=new SpannableString("String_Node_Str" + filename);
      fileInfo.setSpan(new ForegroundColorSpanHashed(theme.detailsColor),0,fileInfo.length(),0);
      fileInfo.setSpan(new AbsoluteSizeSpanHashed(detailsSizePx),0,fileInfo.length(),0);
      fileInfo.setSpan(new UnderlineSpan(),0,fileInfo.length(),0);
      titleParts.add(fileInfo);
    }
    if (ChanSettings.postFileInfo.get()) {
      SpannableString fileInfo=new SpannableString((postFileName ? "String_Node_Str" : "String_Node_Str") + image.extension.toUpperCase() + "String_Node_Str"+ AndroidUtils.getReadableFileSize(image.size,false)+ "String_Node_Str"+ image.imageWidth+ "String_Node_Str"+ image.imageHeight);
      fileInfo.setSpan(new ForegroundColorSpanHashed(theme.detailsColor),0,fileInfo.length(),0);
      fileInfo.setSpan(new AbsoluteSizeSpanHashed(detailsSizePx),0,fileInfo.length(),0);
      titleParts.add(fileInfo);
    }
  }
  title.setText(TextUtils.concat(titleParts.toArray(new CharSequence[titleParts.size()])));
  icons.edit();
  icons.set(PostIcons.STICKY,post.sticky);
  icons.set(PostIcons.CLOSED,post.closed);
  icons.set(PostIcons.DELETED,post.deleted.get());
  icons.set(PostIcons.ARCHIVED,post.archived);
  if (!isEmpty(post.country)) {
    icons.set(PostIcons.COUNTRY,true);
    icons.showCountry(post,theme,countrySizePx);
  }
 else {
    icons.set(PostIcons.COUNTRY,false);
  }
  icons.apply();
  CharSequence commentText;
  if (post.comment.length() > COMMENT_MAX_LENGTH_BOARD && !threadMode) {
    commentText=post.comment.subSequence(0,COMMENT_MAX_LENGTH_BOARD);
  }
 else {
    commentText=post.comment;
  }
  comment.setText(commentText);
  comment.setVisibility(isEmpty(commentText) && !post.hasImage ? GONE : VISIBLE);
  if (commentClickable != threadMode) {
    commentClickable=threadMode;
    if (commentClickable) {
      comment.setMovementMethod(commentMovementMethod);
      comment.setOnClickListener(selfClicked);
      if (noClickable) {
        title.setMovementMethod(titleMovementMethod);
      }
    }
 else {
      comment.setOnClickListener(null);
      comment.setClickable(false);
      comment.setMovementMethod(null);
      title.setMovementMethod(null);
    }
  }
  int repliesFromSize;
synchronized (post.repliesFrom) {
    repliesFromSize=post.repliesFrom.size();
  }
  if ((!threadMode && post.replies > 0) || (repliesFromSize > 0)) {
    replies.setVisibility(View.VISIBLE);
    int replyCount=threadMode ? repliesFromSize : post.replies;
    String text=getResources().getQuantityString(R.plurals.reply,replyCount,replyCount);
    if (!threadMode && post.images > 0) {
      text+="String_Node_Str" + getResources().getQuantityString(R.plurals.image,post.images,post.images);
    }
    replies.setText(text);
    comment.setPadding(comment.getPaddingLeft(),comment.getPaddingTop(),comment.getPaddingRight(),0);
    replies.setPadding(replies.getPaddingLeft(),paddingPx,replies.getPaddingRight(),replies.getPaddingBottom());
  }
 else {
    replies.setVisibility(View.GONE);
    comment.setPadding(comment.getPaddingLeft(),comment.getPaddingTop(),comment.getPaddingRight(),paddingPx);
    replies.setPadding(replies.getPaddingLeft(),0,replies.getPaddingRight(),replies.getPaddingBottom());
  }
  divider.setVisibility(showDivider ? VISIBLE : GONE);
}