Program: 172397
Project: 172397
Buggy source:
@Override public void sendMessageToFirebaseUser(final Context context,final Chat chat,final String receiverFirebaseToken){
  final String room_type_1=chat.getSenderUid() + "String_Node_Str" + chat.getReceiverUid();
  final String room_type_2=chat.getReceiverUid() + "String_Node_Str" + chat.getSenderUid();
  final DatabaseReference databaseReference=FirebaseDatabase.getInstance().getReference();
  databaseReference.child(Constants.INSTANCE.getARG_CHAT_ROOMS()).getRef().addListenerForSingleValueEvent(new ValueEventListener(){
    @Override public void onDataChange(    DataSnapshot dataSnapshot){
      if (dataSnapshot.hasChild(room_type_1)) {
        Log.e(TAG,"String_Node_Str" + room_type_1 + "String_Node_Str");
        databaseReference.child(Constants.INSTANCE.getARG_CHAT_ROOMS()).child(room_type_1).child(String.valueOf(chat.getTimestamp())).setValue(chat);
      }
 else       if (dataSnapshot.hasChild(room_type_2)) {
        Log.e(TAG,"String_Node_Str" + room_type_2 + "String_Node_Str");
        databaseReference.child(Constants.INSTANCE.getARG_CHAT_ROOMS()).child(room_type_2).child(String.valueOf(chat.getTimestamp())).setValue(chat);
      }
 else {
        Log.e(TAG,"String_Node_Str");
        databaseReference.child(Constants.INSTANCE.getARG_CHAT_ROOMS()).child(room_type_1).child(String.valueOf(chat.getTimestamp())).setValue(chat);
        getMessageFromFirebaseUser(chat.getSenderUid(),chat.getReceiverUid());
      }
      sendPushNotificationToReceiver(chat.getSender(),chat.getMessage(),chat.getSenderUid(),new SharedPrefUtil(context).getString(Constants.INSTANCE.getARG_FIREBASE_TOKEN()),receiverFirebaseToken);
      mOnSendMessageListener.onSendMessageSuccess();
    }
    @Override public void onCancelled(    DatabaseError databaseError){
      mOnSendMessageListener.onSendMessageFailure("String_Node_Str" + databaseError.getMessage());
    }
  }
);
}

Fixed version (ground truth):
@Override public void sendMessageToFirebaseUser(@NonNull final Context context,@NonNull final Chat chat,@NonNull final String receiverFirebaseToken){
  final String room_type_1=chat.getSenderUid() + "String_Node_Str" + chat.getReceiverUid();
  final String room_type_2=chat.getReceiverUid() + "String_Node_Str" + chat.getSenderUid();
  final DatabaseReference databaseReference=FirebaseDatabase.getInstance().getReference();
  databaseReference.child(Constants.INSTANCE.getARG_CHAT_ROOMS()).getRef().addListenerForSingleValueEvent(new ValueEventListener(){
    @Override public void onDataChange(    DataSnapshot dataSnapshot){
      if (dataSnapshot.hasChild(room_type_1)) {
        Log.e(TAG,"String_Node_Str" + room_type_1 + "String_Node_Str");
        databaseReference.child(Constants.INSTANCE.getARG_CHAT_ROOMS()).child(room_type_1).child(String.valueOf(chat.getTimestamp())).setValue(chat);
      }
 else       if (dataSnapshot.hasChild(room_type_2)) {
        Log.e(TAG,"String_Node_Str" + room_type_2 + "String_Node_Str");
        databaseReference.child(Constants.INSTANCE.getARG_CHAT_ROOMS()).child(room_type_2).child(String.valueOf(chat.getTimestamp())).setValue(chat);
      }
 else {
        Log.e(TAG,"String_Node_Str");
        databaseReference.child(Constants.INSTANCE.getARG_CHAT_ROOMS()).child(room_type_1).child(String.valueOf(chat.getTimestamp())).setValue(chat);
        getMessageFromFirebaseUser(chat.getSenderUid(),chat.getReceiverUid());
      }
      sendPushNotificationToReceiver(chat.getSender(),chat.getMessage(),chat.getSenderUid(),new SharedPrefUtil(context).getString(Constants.INSTANCE.getARG_FIREBASE_TOKEN()),receiverFirebaseToken);
      mOnSendMessageListener.onSendMessageSuccess();
    }
    @Override public void onCancelled(    DatabaseError databaseError){
      mOnSendMessageListener.onSendMessageFailure("String_Node_Str" + databaseError.getMessage());
    }
  }
);
}