code: public <B> XMLReader<B> map(final Function<? super T, ? extends B> mapper) {
  		requireNonNull(mapper);
  
  		return new XMLReader<B>(_name, _type) {
  			@Override
  			public B read(final XMLStreamReader xml, final boolean lenient)
  				throws XMLStreamException
  			{
  				try {
  					return mapper.apply(XMLReader.this.read(xml, lenient));
  				} catch (RuntimeException e) {
  					if (!lenient) {
  						throw new XMLStreamException(format(
  							"Invalid value for '%s'.", _name), e
  						);
  					} else {
  						return null;
  					}
  				}
  			}
  		};
  	}
docs: Create a new reader for the new mapped type {@code B}.
  
  @param mapper the mapper function
  @param <B> the target type of the new reader
  @return a new reader
  @throws NullPointerException if the given {@code mapper} function is
  {@code null}