Program: 171222
Project: 171222
Buggy source:
private void hookNotifyDataSetChanged(XC_MethodHook.MethodHookParam param){
  LogUtils.INSTANCE.log("String_Node_Str");
  String clazzName=param.thisObject.getClass().getSimpleName();
  if (!clazzName.equals(Class_Conversation_List_View_Adapter_SimpleName))   return;
  notifyList=false;
{
    chatRoomListInAdapterPositions.clear();
    unReadCountListForChatRoom.clear();
    firstChatRoomPosition=-1;
    officialListInAdapterPositions.clear();
    unReadCountListForOfficial.clear();
    firstOfficialPosition=-1;
    newViewPositionWithDataPositionList.clear();
    officialNickNameEntries=new ArrayList<>();
    muteChatRoomNickNameEntries=new ArrayList<>();
    allChatRoomNickNameEntries=new ArrayList<>();
    Object tMb=XposedHelpers.getObjectField(param.thisObject,Method_Adapter_Get_Object_Step_1);
    Integer originCount=(Integer)XposedHelpers.callMethod(tMb,"String_Node_Str");
    LogUtils.INSTANCE.log("String_Node_Str" + originCount);
    for (int i=0; i < originCount; i++) {
      Object value=getMessageBeanForOriginIndex(param.thisObject,i);
      Object messageStatus=XposedHelpers.callMethod(param.thisObject,Method_Message_Status_Bean,value);
      ChatInfoModel chatInfoModel=ChatInfoModel.Companion.convertFromObject(value,param.thisObject,context);
      boolean isChatRoomConversation=isChatRoomConversation(messageStatus);
      boolean isOfficialConversation=isOfficialConversation(value,messageStatus);
      if (isChatRoomConversation) {
        if (firstChatRoomPosition == -1) {
          firstChatRoomPosition=i;
          if (officialListInAdapterPositions.size() != 0)           firstChatRoomPosition=firstChatRoomPosition - officialListInAdapterPositions.size() + 1;
        }
        chatRoomListInAdapterPositions.add(i);
        unReadCountListForChatRoom.put(i,chatInfoModel.getUnReadCount());
      }
      if (isOfficialConversation) {
        if (firstOfficialPosition == -1) {
          firstOfficialPosition=i;
          if (chatRoomListInAdapterPositions.size() != 0)           firstOfficialPosition=firstOfficialPosition - chatRoomListInAdapterPositions.size() + 1;
        }
        officialListInAdapterPositions.add(i);
        unReadCountListForOfficial.put(i,chatInfoModel.getUnReadCount());
      }
      if (LogUtils.INSTANCE.isOpen()) {
        LogUtils.INSTANCE.log("String_Node_Str" + i + "String_Node_Str"+ originCount+ "String_Node_Str"+ chatInfoModel.getNickname()+ "String_Node_Str"+ isChatRoomConversation+ "String_Node_Str"+ isOfficialConversation);
      }
      int chatRoomCount=chatRoomListInAdapterPositions.size();
      int officialCount=officialListInAdapterPositions.size();
      if (!isChatRoomConversation && !isOfficialConversation || (chatRoomCount == 1 && isChatRoomConversation && !isOfficialConversation) || (officialCount == 1 && isOfficialConversation && !isChatRoomConversation)) {
        int key=i - (chatRoomCount >= 1 ? (chatRoomCount - 1) : chatRoomCount);
        key=key - (officialCount >= 1 ? (officialCount - 1) : officialCount);
        newViewPositionWithDataPositionList.put(key,i);
      }
    }
  }
  notifyList=true;
  if (chatRoomViewPresenter != null) {
    chatRoomViewPresenter.setListInAdapterPositions(chatRoomListInAdapterPositions);
  }
  if (officialViewPresenter != null) {
    officialViewPresenter.setListInAdapterPositions(officialListInAdapterPositions);
  }
}

Fixed version (ground truth):
private void hookNotifyDataSetChanged(XC_MethodHook.MethodHookParam param){
  String clazzName=param.thisObject.getClass().getSimpleName();
  if (!clazzName.equals(Class_Conversation_List_View_Adapter_SimpleName))   return;
  notifyList=false;
{
    chatRoomListInAdapterPositions.clear();
    unReadCountListForChatRoom.clear();
    firstChatRoomPosition=-1;
    officialListInAdapterPositions.clear();
    unReadCountListForOfficial.clear();
    firstOfficialPosition=-1;
    newViewPositionWithDataPositionList.clear();
    officialNickNameEntries=new ArrayList<>();
    muteChatRoomNickNameEntries=new ArrayList<>();
    allChatRoomNickNameEntries=new ArrayList<>();
    Object tMb=XposedHelpers.getObjectField(param.thisObject,Method_Adapter_Get_Object_Step_1);
    Integer originCount=(Integer)XposedHelpers.callMethod(tMb,"String_Node_Str");
    for (int i=0; i < originCount; i++) {
      Object value=getMessageBeanForOriginIndex(param.thisObject,i);
      Object messageStatus=XposedHelpers.callMethod(param.thisObject,Method_Message_Status_Bean,value);
      ChatInfoModel chatInfoModel=ChatInfoModel.Companion.convertFromObject(value,param.thisObject,context);
      boolean isChatRoomConversation=isChatRoomConversation(messageStatus);
      boolean isOfficialConversation=isOfficialConversation(value,messageStatus);
      if (isChatRoomConversation) {
        if (firstChatRoomPosition == -1) {
          firstChatRoomPosition=i;
          if (officialListInAdapterPositions.size() != 0)           firstChatRoomPosition=firstChatRoomPosition - officialListInAdapterPositions.size() + 1;
        }
        chatRoomListInAdapterPositions.add(i);
        unReadCountListForChatRoom.put(i,chatInfoModel.getUnReadCount());
      }
      if (isOfficialConversation) {
        if (firstOfficialPosition == -1) {
          firstOfficialPosition=i;
          if (chatRoomListInAdapterPositions.size() != 0)           firstOfficialPosition=firstOfficialPosition - chatRoomListInAdapterPositions.size() + 1;
        }
        officialListInAdapterPositions.add(i);
        unReadCountListForOfficial.put(i,chatInfoModel.getUnReadCount());
      }
      int chatRoomCount=chatRoomListInAdapterPositions.size();
      int officialCount=officialListInAdapterPositions.size();
      if (!isChatRoomConversation && !isOfficialConversation || (chatRoomCount == 1 && isChatRoomConversation && !isOfficialConversation) || (officialCount == 1 && isOfficialConversation && !isChatRoomConversation)) {
        int key=i - (chatRoomCount >= 1 ? (chatRoomCount - 1) : chatRoomCount);
        key=key - (officialCount >= 1 ? (officialCount - 1) : officialCount);
        newViewPositionWithDataPositionList.put(key,i);
      }
    }
  }
  notifyList=true;
  if (chatRoomViewPresenter != null) {
    chatRoomViewPresenter.setListInAdapterPositions(chatRoomListInAdapterPositions);
  }
  if (officialViewPresenter != null) {
    officialViewPresenter.setListInAdapterPositions(officialListInAdapterPositions);
  }
}