code: public Path relativize(Path other) {
  		if (other.isAbsolute() != isAbsolute())
  			throw new IllegalArgumentException("This path and the given path are not both absolute or both relative: " + toString() + " | " + other.toString());
  		if (startsWith(other)) {
  			return internalRelativize(this, other);
  		} else if (other.startsWith(this)) {
  			return internalRelativize(other, this);
  		}
  		return null;
  	}
docs: Constructs a relative path between this path and a given path.
  
  <p> Relativization is the inverse of {@link #getAbsolutePath(Path) resolution}.
  This method attempts to construct a {@link #isAbsolute relative} path
  that when {@link #getAbsolutePath(Path) resolved} against this path, yields a
  path that locates the same file as the given path. For example, on UNIX,
  if this path is {@code "/a/b"} and the given path is {@code "/a/b/c/d"}
  then the resulting relative path would be {@code "c/d"}.
  Both paths must be absolute and and either this path or the given path must be a
  {@link #startsWith(Path) prefix} of the other.
  
  @param   other
  the path to relativize against this path
  
  @return  the resulting relative path or null if neither of the given paths is a prefix of the other
  
  @throws  IllegalArgumentException
  if this path and {@code other} are not both absolute or relative