¿Cómo escuchar adecuadamente MultiUserChat en Smack?

No estoy seguro de cómo escuchar adecuadamente MultiUserChats, ya que aparentemente hay dos formas diferentes de escucharlos.

La primera forma es agregar un MessageListener para cada sala, así:

MultiUserChat muc = new MultiUserChat(connection,"MyGroup");
muc.addMessageListener(new PacketListener() {
    @Override
    public void processPacket(Packet packet) throws NotConnectedException {
        // TODO Auto-generated method stub
    }
});

La segunda forma es escuchar como lo haría con los mensajes normales de chat único:

PacketFilter filter = new MessageTypeFilter(Message.Type.groupchat);
connection.addPacketListener(new PacketListener() {
    @Override
    public void processPacket(Packet packet) {
        Message message = (Message) packet;
        if (message.getBody() != null) {
            final String fromName = StringUtils.parseBareAddress(message.getFrom());
            final String Rtext = message.getBody();

Teniendo en cuenta que también estoy escuchando transferencias de archivos, ¿podría ayudarme a determinar cuál es la forma correcta?

Respuestas a la pregunta(2)

Su respuesta a la pregunta