public <T extends IMessage> void send(final T message) {
        List<IMessageHandler<? extends IMessage>> handlers = handlersByMessage.get(message.getClass());
        
        if (handlers != null) {
            for (IMessageHandler<? extends IMessage> handler : handlers) {
                ((IMessageHandler<T>) handler).onMessageReceived(message);
            }
        }
    }