code: @Override
  	public URI getWarcTargetURI() {
  		final Header header = WarcHeader.getFirstHeader(this.warcHeaders, WarcHeader.Name.WARC_TARGET_URI);
  		if (header == null) throw new IllegalStateException(WarcHeader.Name.WARC_TARGET_URI + " header not present");
  		if (! USE_BURL) return URI.create(header.getValue());
  		final URI result = BURL.parse(header.getValue());
  		if (result == null) throw new IllegalArgumentException("BURL.parse() found an unfixable syntax error in URL " + header.getValue());
  		return result;
  	}
docs: Returns the <code>WARC-Target-URI</code> header as a {@link URI}.
  
  <p>Parsing is performed by {@link URI#create(String)}, unless the system property {@value #USE_BURL_PROPERTY}
  has been set to true, in which case {@link BURL#parse(String)} will be used (if {@link BURL#parse(String)}
  returns {@code null}, we throw an {@link IllegalArgumentException} as from the specification
  in {@link WarcRecord#getWarcTargetURI()}).
  
  @return the record target URI.
  @throws IllegalStateException if the header is not present.
  @throws IllegalArgumentException if the header value cannot be parsed into a URI.
  @see AbstractWarcRecord#getWarcTargetURI()