docs: public static URI resolve(final URI uri,
                                final String path,
                                final boolean strict,
                                final boolean strictNorm) throws NormalizationException {
          final String query = '?' + Strings.nullToEmpty(getRawQuery(uri, strict));
          
          /* Append our ampersand stuff */
          final String myPath = (path.indexOf('&') == 0) ?
                                      (query + (hasQuery(uri) ? path : path.substring(1))) :
                                      path;
          final String ePath = esc(strict).escape(myPath);
          if (myPath.indexOf('/') == 0) {
              /* We can just resolve it directly */
              return normalize(uri.resolve(URI.create(ePath)), strictNorm);
          } else if (myPath.indexOf("./") == 0) {
              return normalize(uri.resolve(URI.create(getRawPath(uri, strict) + ePath.substring(1))), strictNorm);
          } else if (myPath.indexOf('?') == 0) {
              /* Resolve it against the raw path */
              return normalize(uri.resolve(URI.create(getRawPath(uri, strict) + ePath)), strictNorm);
          } else if (myPath.indexOf('#') == 0) {
              return normalize(uri.resolve(URI.create(getRawPath(uri, strict) + query + ePath)), strictNorm);
          }
          /* Resolve it against the raw directory */
          return normalize(uri.resolve(URI.create(getRawDirectory(uri, strict) + ePath)), strictNorm);
      }