code: public void appendRawPath(String encodedPath) {
      if (encodedPath != null && encodedPath.length() != 0) {
        List<String> appendedPathParts = toPathParts(encodedPath);
        if (pathParts == null || pathParts.isEmpty()) {
          this.pathParts = appendedPathParts;
        } else {
          int size = pathParts.size();
          pathParts.set(size - 1, pathParts.get(size - 1) + appendedPathParts.get(0));
          pathParts.addAll(appendedPathParts.subList(1, appendedPathParts.size()));
        }
      }
    }
docs: Appends the given raw encoded path to the current {@link #pathParts}, setting field only if it
  is {@code null} or empty.
  
  <p>The last part of the {@link #pathParts} is merged with the first part of the path parts
  computed from the given encoded path. Thus, if the current raw encoded path is {@code "a"}, and
  the given encoded path is {@code "b"}, then the resulting raw encoded path is {@code "ab"}.
  
  @param encodedPath raw encoded path or {@code null} to ignore