diff --git a/httpclient5-cache/src/main/java/org/apache/hc/client5/http/cache/ResponseCacheControl.java b/httpclient5-cache/src/main/java/org/apache/hc/client5/http/cache/ResponseCacheControl.java
index 7e7f4b0..57eafac 100644
--- a/httpclient5-cache/src/main/java/org/apache/hc/client5/http/cache/ResponseCacheControl.java
+++ b/httpclient5-cache/src/main/java/org/apache/hc/client5/http/cache/ResponseCacheControl.java
@@ -357,7 +357,6 @@
         private long staleIfError = -1;
         private Set<String> noCacheFields;
         private boolean mustUnderstand;
-        private boolean noTransform;
         private boolean immutable;
 
         Builder() {
diff --git a/httpclient5-cache/src/main/java/org/apache/hc/client5/http/impl/cache/AsyncCachingExec.java b/httpclient5-cache/src/main/java/org/apache/hc/client5/http/impl/cache/AsyncCachingExec.java
index ffd9b26..7dad9bc 100644
--- a/httpclient5-cache/src/main/java/org/apache/hc/client5/http/impl/cache/AsyncCachingExec.java
+++ b/httpclient5-cache/src/main/java/org/apache/hc/client5/http/impl/cache/AsyncCachingExec.java
@@ -1265,7 +1265,6 @@
             public AsyncDataConsumer handleResponse(
                     final HttpResponse backendResponse,
                     final EntityDetails entityDetails) throws HttpException, IOException {
-                final HttpClientContext context = scope.clientContext;
                 final Instant responseDate = getCurrentDate();
                 final AsyncExecCallback callback;
                 if (backendResponse.getCode() != HttpStatus.SC_NOT_MODIFIED) {
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/InternalH2AsyncExecRuntime.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/InternalH2AsyncExecRuntime.java
index 42b1a33..8ebe34f 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/InternalH2AsyncExecRuntime.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/InternalH2AsyncExecRuntime.java
@@ -40,7 +40,6 @@
 import org.apache.hc.core5.concurrent.Cancellable;
 import org.apache.hc.core5.concurrent.ComplexCancellable;
 import org.apache.hc.core5.concurrent.FutureCallback;
-import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.http.HttpVersion;
 import org.apache.hc.core5.http.nio.AsyncClientExchangeHandler;
 import org.apache.hc.core5.http.nio.AsyncPushConsumer;
@@ -88,7 +87,6 @@
             final HttpClientContext context,
             final FutureCallback<AsyncExecRuntime> callback) {
         if (sessionRef.get() == null) {
-            final HttpHost target = route.getTargetHost();
             final RequestConfig requestConfig = context.getRequestConfig();
             @SuppressWarnings("deprecation")
             final Timeout connectTimeout = requestConfig.getConnectTimeout();
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ContentCompressionExec.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ContentCompressionExec.java
index 8bcdc3a..0ffe820 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ContentCompressionExec.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ContentCompressionExec.java
@@ -78,11 +78,6 @@
     private final Lookup<InputStreamFactory> decoderRegistry;
     private final boolean ignoreUnknown;
 
-    /**
-     * An empty immutable {@code String} array.
-     */
-    private static final String[] EMPTY_STRING_ARRAY = {};
-
     public ContentCompressionExec(
             final List<String> acceptEncoding,
             final Lookup<InputStreamFactory> decoderRegistry,
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/protocol/RequestValidateTrace.java b/httpclient5/src/main/java/org/apache/hc/client5/http/protocol/RequestValidateTrace.java
index 9f7e381..e7dfeb1 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/protocol/RequestValidateTrace.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/protocol/RequestValidateTrace.java
@@ -41,8 +41,6 @@
 import org.apache.hc.core5.http.ProtocolException;
 import org.apache.hc.core5.http.protocol.HttpContext;
 import org.apache.hc.core5.util.Args;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * <h1>RequestTraceInterceptor</h1>
@@ -102,8 +100,6 @@
 @Contract(threading = ThreadingBehavior.STATELESS)
 public class RequestValidateTrace implements HttpRequestInterceptor {
 
-    private static final Logger LOG = LoggerFactory.getLogger(RequestValidateTrace.class);
-
     /**
      * Singleton instance of {@link RequestValidateTrace}.
      */
