code: @SuppressWarnings({"unchecked", "rawtypes"})
      public U encode(Object value) {
          requireNonNull(value, "Value for encoding can not be null");
  
          TypeEncoder encoder = classMapping.get(value.getClass());
          if (encoder != null)
              return (U) encoder.encode(value);
  
          throw new TypeEncodingException("An unknown type [" + value.getClass() + "] was encountered");
      }
docs: Encodes the given {@code value} using one of the registered {@link TypeEncoder}s.