private <T, R extends ApiResponse<T>> PendingResult<T> getWithPath(
      Class<R> clazz,
      FieldNamingPolicy fieldNamingPolicy,
      String hostName,
      String path,
      boolean canUseClientId,
      String encodedPath,
      RequestMetrics metrics,
      Map<String, String> headers) {
    checkContext(canUseClientId);
    if (!encodedPath.startsWith("&")) {
      throw new IllegalArgumentException("encodedPath must start with &");
    }

    StringBuilder url = new StringBuilder(path);
    if (canUseClientId && clientId != null) {
      url.append("?client=").append(clientId);
    } else {
      url.append("?key=").append(apiKey);
    }
    url.append(encodedPath);

    if (canUseClientId && urlSigner != null) {
      String signature = urlSigner.getSignature(url.toString());
      url.append("&signature=").append(signature);
    }

    if (baseUrlOverride != null) {
      hostName = baseUrlOverride;
    }

    final Map<String, String> allHeaders = addDefaultHeaders(headers);

    return requestHandler.handle(
        hostName,
        url.toString(),
        allHeaders,
        clazz,
        fieldNamingPolicy,
        errorTimeout,
        maxRetries,
        exceptionsAllowedToRetry,
        metrics);
  }
Shut down this GeoApiContext instance, reclaiming resources. After shutdown() has been called,
no further queries may be done against this instance.
src/main/java/com/google/maps/GeoApiContext.java