public void populate(
      final MessageInfoHolder target,
      final Message m,
      final FolderInfoHolder folder,
      final Account account) {
    final Contacts contactHelper =
        RakuPhotoMail.showContactName() ? Contacts.getInstance(mContext) : null;
    try {
      LocalMessage message = (LocalMessage) m;
      target.message = message;
      target.compareDate = message.getSentDate();
      if (target.compareDate == null) {
        target.compareDate = message.getInternalDate();
      }

      target.folder = folder;

      target.read = message.isSet(Flag.SEEN);
      target.answered = message.isSet(Flag.ANSWERED);
      target.flagged = message.isSet(Flag.FLAGGED);
      target.downloaded = message.isSet(Flag.X_DOWNLOADED_FULL);
      target.partially_downloaded = message.isSet(Flag.X_DOWNLOADED_PARTIAL);

      Address[] addrs = message.getFrom();

      if (addrs.length > 0 && account.isAnIdentity(addrs[0])) {
        CharSequence to =
            Address.toFriendly(message.getRecipients(RecipientType.TO), contactHelper);
        target.compareCounterparty = to.toString();
        target.sender =
            new SpannableStringBuilder(mContext.getString(R.string.message_to_label)).append(to);
      } else {
        target.sender = Address.toFriendly(addrs, contactHelper);
        target.compareCounterparty = target.sender.toString();
      }

      if (addrs.length > 0) {
        target.senderAddress = addrs[0].getAddress();
      } else {
        // a reasonable fallback "whomever we were corresponding with
        target.senderAddress = target.compareCounterparty;
      }

      target.uid = message.getUid();

      target.account = account.getDescription();
      target.uri =
          "email://messages/"
              + account.getAccountNumber()
              + "/"
              + m.getFolder().getName()
              + "/"
              + m.getUid();

    } catch (MessagingException me) {
      Log.w(RakuPhotoMail.LOG_TAG, "Unable to load message info", me);
    }
  }