code: public <T> TypeParserBuilder registerParser(Class<T> targetType, Parser<T> parser) {
          if (parser == null) {
              throw new NullPointerException(makeNullArgumentErrorMsg("parser"));
          }
          if (targetType == null) {
              throw new NullPointerException(makeNullArgumentErrorMsg("targetType"));
          }
          if (targetType.isArray()) {
              String message = "Cannot register Parser for array class. Register a Parser for "
                      + "the component type '%s' instead, as arrays are handled automatically "
                      + "internally in type-parser.";
              Class<?> componentType = targetType.getComponentType();
              throw new IllegalArgumentException(String.format(message, componentType.getName()));
          }
          parsers.put(targetType, decorateParser(targetType, parser));
          return this;
      }
docs: Register a custom made {@link Parser} implementation, associated with
  the given {@code targetType}.
  
  @param targetType associated with given {@code parser}.
  @param parser custom made {@link Parser} implementation.
  @return {@link TypeParserBuilder}
  @throws NullPointerException if any given argument is null.