code: @SuppressWarnings("unchecked")
    public <T> void registerCustomSerializer(Class<T> cls, JsonSerializer<T> forType) {
      if(customSerializersMap == null) {
        customSerializersMap = new HashMap<>();
      }
  
      if(cls == null) {
        throw new IllegalArgumentException("Class must not be null");
      } else if(cls.equals(JsonView.class)) {
        throw new IllegalArgumentException("Class cannot be " + JsonView.class);
      } else if(customSerializersMap.containsKey(cls)) {
        throw new IllegalArgumentException("Class " + cls + " already has a serializer registered (" + customSerializersMap.get(cls) + ")");
      }
  
      customSerializersMap.put(cls, (JsonSerializer<Object>) forType);
    }
docs: Registering custom serializer allows to the JSonView to deal with custom serializations for certains field types.<br>
  This way you could register for instance a JODA serialization as  a DateTimeSerializer. <br>
  Thus, when JSonView find a field of that type (DateTime), it will delegate the serialization to the serializer specified.<br>
  Example:<br>
  <code>
  JsonViewSupportFactoryBean bean = new JsonViewSupportFactoryBean( mapper );
  bean.registerCustomSerializer( DateTime.class, new DateTimeSerializer() );
  </code>
  
  @param <T>     Type class of the serializer
  @param cls     {@link Class} The class type you want to add a custom serializer
  @param forType {@link JsonSerializer} The serializer you want to apply for that type