code: public <T> TypeParserBuilder registerParser(GenericType<T> targetType, Parser<T> parser) {
          if (parser == null) {
              throw new NullPointerException(makeNullArgumentErrorMsg("parser"));
          }
          if (targetType == null) {
              throw new NullPointerException(makeNullArgumentErrorMsg("targetType"));
          }
          parsers.put(targetType.getType(), decorateParser(targetType.getType(), parser));
          return this;
      }
docs: Register a custom made {@link Parser} implementation, associated with
  the given generic {@code targetType}.
  
  @param targetType generic type associated with given {@code parser}.
  @param parser custom made {@link Parser} implementation.
  @return {@link TypeParserBuilder}
  @throws NullPointerException if any given argument is null.