code: @Nullable
      public static PathAndQuery parse(@Nullable String rawPath) {
          if (CACHE != null && rawPath != null) {
              final PathAndQuery parsed = CACHE.getIfPresent(rawPath);
              if (parsed != null) {
                  return parsed;
              }
          }
          return splitPathAndQuery(rawPath);
      }
docs: Validates the {@link String} that contains an absolute path and a query, and splits them into
  the path part and the query part. If the path is usable (e.g., can be served a successful response from
  the server and doesn't have variable path parameters), {@link PathAndQuery#storeInCache(String)} should
  be called to cache the parsing result for faster future invocations.
  
  @return a {@link PathAndQuery} with the absolute path and query, or {@code null} if the specified
  {@link String} is not an absolute path or invalid.