code: public static void setupCustomCommandSerializationAndDeserialization(ObjectMapper mapper, CommandSerializer commandSerializer, CommandDeserializer commandDeserializer) {
          SimpleModule module = new SimpleModule("raftrpc-custom-command-module", new Version(0, 0, 0, "inline", "io.libraft", "raftrpc-command-module"));
  
          module.addSerializer(Command.class, new RaftRPCCommand.Serializer(commandSerializer));
          module.addDeserializer(Command.class, new RaftRPCCommand.Deserializer(commandDeserializer));
  
          mapper.registerModule(module);
      }
docs: Setup custom serialization and deserialization for POJO {@link Command} subclasses.
  <p/>
  See {@code RaftAgent} for more on which {@code Command} types are supported.
  
  @param mapper instance of {@code ObjectMapper} with which the serialization/deserialization mapping is registered
  @param commandSerializer instance of {@code CommandSerializer} that can serialize a POJO {@code Command} instance into binary
  @param commandDeserializer instance of {@code CommandDeserializer} that can deserialize binary into a POJO {@code Command} instance
  
  @see io.libraft.agent.RaftAgent