code: private static String merge(String path, String relativePath, boolean hasAuthority) {
  		String parent=path;
  		if(hasAuthority && parent.isEmpty()) {
  			parent=SLASH;
  		}
  		return parent.substring(0,parent.lastIndexOf('/')+1).concat(relativePath);
  	}
docs: 5.2.3.  Merge Paths
  
  The pseudocode above refers to a "merge" routine for merging a
  relative-path reference with the path of the base URI.  This is
  accomplished as follows:
  
  o  If the base URI has a defined authority component and an empty
  path, then return a string consisting of "/" concatenated with the
  reference's path; otherwise,
  o  return a string consisting of the reference's path component
  appended to all but the last segment of the base URI's path (i.e.,
  excluding any characters after the right-most "/" in the base URI
  path, or excluding the entire base URI path if it does not contain
  any "/" characters).
  
  @param hasAuthority