code: public final <S, T> void registerConverter(ConverterKey<S,T> key, Converter<S, T> converter) {	
  
          if (key.getInputClass() == null) {
              throw new IllegalArgumentException("Input Class must not be null");
          }
          if (key.getOutputClass() == null) {
              throw new IllegalArgumentException("Output Class must not be null");
          }
          if (converter == null) {
              throw new IllegalArgumentException("Converter must not be null");
          }
  
          if (key.getQualifierAnnotation() == null) {
              throw new IllegalArgumentException("Qualifier must not be null");
          }
  
          Converter<?,?> old = registeredConverters.putIfAbsent(key, converter);
          if (old != null && (!isSameConverter(old, converter))) {
          	throw new IllegalStateException("Converter already registered for key: " + key);
          }
      }
docs: Register a Converter with the given input and output classes. Instances of the input class can be converted into
  instances of the output class
  @param key Converter Key to use
  @param converter The Converter to be registered