private MessageHandler<Message<ID>> getMessageHandler(Message<ID> msg) {
      Class<?> msgClazz = msg.getClass();
      MessageHandler<?> h = handlers.get(msgClazz);
      if (h == null) {
        for (Class<?> clazz : handlers.keySet()) {
          if (clazz.isAssignableFrom(msgClazz)) {
            h = handlers.get(clazz);
            handlers.put(msg.getClass(), h);
            break;
          }
        }
      }
      if (h == null) {
        h = services.getManager();
      }
      return (MessageHandler<Message<ID>>) h;
    }
returns the handler that should process the given message. The default handler is the
membership manager
geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessenger.java