class GremlinClient extends AbstractJerseyRestClient {

    /**
     * Constructs a GremlinClient with the specified URL, timeout, maxTotal, and maxPerRoute.
     *
     * @param url         The URL of the Gremlin server this client will interact with.
     * @param timeout     The timeout for the client.
     * @param maxTotal    The maximum total connections for the client.
     * @param maxPerRoute The maximum connections per route for the client.
     */
    public GremlinClient(String url, int timeout, int maxTotal, int maxPerRoute) {
        super(url, timeout, maxTotal, maxPerRoute);
    }

    /**
     * Sends a POST request to the Gremlin server.
     *
     * @param auth The authorization token for the request.
     * @param req  The body of the request.
     * @return The response from the server.
     */
    public Response doPostRequest(String auth, String req) {<FILL_FUNCTION_BODY>}

    /**
     * Sends a GET request to the Gremlin server.
     *
     * @param auth   The authorization token for the request.
     * @param params The query parameters for the request.
     * @return The response from the server.
     */
    public Response doGetRequest(String auth, MultivaluedMap<String, String> params) {
        WebTarget target = this.getWebTarget();
        for (Map.Entry<String, List<String>> entry : params.entrySet()) {
            E.checkArgument(entry.getValue().size() == 1,
                            "Invalid query param '%s', can only accept one value, but got %s",
                            entry.getKey(), entry.getValue());
            target = target.queryParam(entry.getKey(), entry.getValue().get(0));
        }
        return target.request()
                     .header(HttpHeaders.AUTHORIZATION, auth)
                     .accept(MediaType.APPLICATION_JSON)
                     .acceptEncoding(CompressInterceptor.GZIP)
                     .get();
    }
}

        Entity<?> body = Entity.entity(req, MediaType.APPLICATION_JSON);
        return this.getWebTarget().request()
                   .header(HttpHeaders.AUTHORIZATION, auth)
                   .accept(MediaType.APPLICATION_JSON)
                   .acceptEncoding(CompressInterceptor.GZIP)
                   .post(body);
    
<methods>public void <init>(java.lang.String, int, int, int) ,public void <init>(java.lang.String, ClientConfig) ,public void close() <variables>private static final java.lang.String CONNECTION_MANAGER,private static final long IDLE_TIME,private static final java.lang.String PROPERTY_IDLE_TIME,private static final java.lang.String PROPERTY_MAX_PER_ROUTE,private static final java.lang.String PROPERTY_MAX_TOTAL,private static final long TTL,private java.util.concurrent.ScheduledExecutorService cleanExecutor,private final non-sealed Client client,private final non-sealed PoolingHttpClientConnectionManager pool,private final non-sealed WebTarget webTarget