diff --git a/.github/workflows/test-integration-unreleased.yml b/.github/workflows/test-integration-unreleased.yml
index 8cee43c124..2c0d59a450 100644
--- a/.github/workflows/test-integration-unreleased.yml
+++ b/.github/workflows/test-integration-unreleased.yml
@@ -18,6 +18,7 @@ jobs:
           - { opensearch_ref: '1.x', java: 11 }
           - { opensearch_ref: '2.x', java: 11 }
           - { opensearch_ref: '2.x', java: 17 }
+          - { opensearch_ref: '2.x', java: 21 }
           - { opensearch_ref: 'main', java: 11 }
           - { opensearch_ref: 'main', java: 17 }
           - { opensearch_ref: 'main', java: 21 }
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 43753f96ac..3c1d5e278b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -42,6 +42,7 @@ This section is for maintaining a changelog for all breaking changes for the cli
 ### Dependencies
 
 ### Changed
+- Restore support for Java 8 ([#767](https://github.com/opensearch-project/opensearch-java/pull/767))
 
 ### Deprecated
 - Deprecated "_toQuery()" in Query and QueryVariant ([#760](https://github.com/opensearch-project/opensearch-java/pull/760)
diff --git a/java-client/build.gradle.kts b/java-client/build.gradle.kts
index b8faacdbc5..7bf725171c 100644
--- a/java-client/build.gradle.kts
+++ b/java-client/build.gradle.kts
@@ -64,8 +64,8 @@ configurations {
 }
 
 java {
-    targetCompatibility = JavaVersion.VERSION_11
-    sourceCompatibility = JavaVersion.VERSION_11
+    targetCompatibility = JavaVersion.VERSION_1_8
+    sourceCompatibility = JavaVersion.VERSION_1_8
 
     withJavadocJar()
     withSourcesJar()
@@ -149,15 +149,20 @@ val integrationTest = task<Test>("integrationTest") {
             System.getProperty("tests.awsSdk2support.domainRegion", "us-east-1"))
 }
 
+val opensearchVersion = "3.0.0-SNAPSHOT"
+
 dependencies {
 
-    val opensearchVersion = "3.0.0-SNAPSHOT"
     val jacksonVersion = "2.15.2"
     val jacksonDatabindVersion = "2.15.2"
 
     // Apache 2.0
     compileOnly("org.opensearch.client", "opensearch-rest-client", opensearchVersion)
-    testImplementation("org.opensearch.test", "framework", opensearchVersion)
+    testImplementation("org.hamcrest:hamcrest:2.1")
+    testImplementation("com.carrotsearch.randomizedtesting:randomizedtesting-runner:2.7.1") {
+        exclude(group = "junit")
+    }
+    testImplementation("org.opensearch.client", "opensearch-rest-client", opensearchVersion)
 
     api("org.apache.httpcomponents.client5:httpclient5:5.2.3") {
       exclude(group = "org.apache.httpcomponents.core5")
@@ -331,3 +336,38 @@ publishing {
         }
     }
 }
+
+if (JavaVersion.current() >= JavaVersion.VERSION_11) {
+  val java11: SourceSet = sourceSets.create("java11") {
+    java {
+      compileClasspath += sourceSets.main.get().output + sourceSets.test.get().output
+      runtimeClasspath += sourceSets.main.get().output + sourceSets.test.get().output
+      srcDir("src/test/java11")
+    }
+  }
+
+  configurations[java11.implementationConfigurationName].extendsFrom(configurations.testImplementation.get())
+  configurations[java11.runtimeOnlyConfigurationName].extendsFrom(configurations.testRuntimeOnly.get())
+
+  dependencies {
+    testImplementation("org.opensearch.test", "framework", opensearchVersion) {
+      exclude(group = "org.hamcrest")
+    }
+  }
+
+  tasks.named<JavaCompile>("compileJava11Java") {
+    targetCompatibility = JavaVersion.VERSION_11.toString()
+    sourceCompatibility = JavaVersion.VERSION_11.toString()
+  }
+  
+  tasks.named<JavaCompile>("compileTestJava") {
+    targetCompatibility = JavaVersion.VERSION_11.toString()
+    sourceCompatibility = JavaVersion.VERSION_11.toString()
+  }
+  
+  tasks.test {
+    testClassesDirs += java11.output.classesDirs
+    classpath = sourceSets["java11"].runtimeClasspath
+  }
+ 
+}
diff --git a/java-client/src/main/java/org/opensearch/client/opensearch/cat/CatRequestBase.java b/java-client/src/main/java/org/opensearch/client/opensearch/cat/CatRequestBase.java
index 92372d2693..173ddb1f49 100644
--- a/java-client/src/main/java/org/opensearch/client/opensearch/cat/CatRequestBase.java
+++ b/java-client/src/main/java/org/opensearch/client/opensearch/cat/CatRequestBase.java
@@ -61,10 +61,10 @@ public CatRequestBase(CatRequestBaseBuilder<?> builder) {
 
     protected final Map<String, String> queryParameters() {
         Map<String, String> params = new HashMap<>();
-        if (headers != null && !headers.isBlank()) {
+        if (headers != null && !headers.trim().isEmpty()) {
             params.put("h", headers);
         }
-        if (sort != null && !sort.isBlank()) {
+        if (sort != null && !sort.trim().isEmpty()) {
             params.put("s", sort);
         }
         params.put("format", "json");
diff --git a/java-client/src/main/java/org/opensearch/client/transport/TransportOptions.java b/java-client/src/main/java/org/opensearch/client/transport/TransportOptions.java
index 18c9d51065..a2223447a1 100644
--- a/java-client/src/main/java/org/opensearch/client/transport/TransportOptions.java
+++ b/java-client/src/main/java/org/opensearch/client/transport/TransportOptions.java
@@ -32,6 +32,7 @@
 
 package org.opensearch.client.transport;
 
+import java.util.AbstractMap;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -98,7 +99,7 @@ public Builder addHeader(String name, String value) {
             if (headers.isEmpty()) {
                 headers = new ArrayList<>();
             }
-            headers.add(Map.entry(name, value));
+            headers.add(new AbstractMap.SimpleEntry<>(name, value));
             return this;
         }
 
@@ -135,8 +136,8 @@ class DefaultImpl implements TransportOptions {
         private final Function<List<String>, Boolean> onWarnings;
 
         protected DefaultImpl(BuilderImpl builder) {
-            this.headers = builder.headers.isEmpty() ? Collections.emptyList() : List.copyOf(builder.headers);
-            this.params = builder.queryParameters.isEmpty() ? Collections.emptyMap() : Map.copyOf(builder.queryParameters);
+            this.headers = builder.headers.isEmpty() ? Collections.emptyList() : new ArrayList<>(builder.headers);
+            this.params = builder.queryParameters.isEmpty() ? Collections.emptyMap() : new HashMap<>(builder.queryParameters);
             this.onWarnings = builder.onWarnings;
         }
 
diff --git a/java-client/src/main/java/org/opensearch/client/transport/aws/AwsSdk2Transport.java b/java-client/src/main/java/org/opensearch/client/transport/aws/AwsSdk2Transport.java
index 2e4145f3bb..2269b8e13b 100644
--- a/java-client/src/main/java/org/opensearch/client/transport/aws/AwsSdk2Transport.java
+++ b/java-client/src/main/java/org/opensearch/client/transport/aws/AwsSdk2Transport.java
@@ -13,16 +13,17 @@
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
+import java.util.function.Supplier;
 import java.util.zip.GZIPInputStream;
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
@@ -261,11 +262,12 @@ private <RequestT> OpenSearchRequestBodyBuffer prepareRequestBody(
                 .map(o -> o instanceof AwsSdk2TransportOptions ? ((AwsSdk2TransportOptions) o) : null)
                 .map(AwsSdk2TransportOptions::mapper)
                 .orElse(defaultMapper);
-            final int maxUncompressedSize = Optional.ofNullable(options)
-                .map(o -> o instanceof AwsSdk2TransportOptions ? ((AwsSdk2TransportOptions) o) : null)
-                .map(AwsSdk2TransportOptions::requestCompressionSize)
-                .or(() -> Optional.ofNullable(transportOptions.requestCompressionSize()))
-                .orElse(DEFAULT_REQUEST_COMPRESSION_SIZE);
+            final int maxUncompressedSize = or(
+                Optional.ofNullable(options)
+                    .map(o -> o instanceof AwsSdk2TransportOptions ? ((AwsSdk2TransportOptions) o) : null)
+                    .map(AwsSdk2TransportOptions::requestCompressionSize),
+                () -> Optional.ofNullable(transportOptions.requestCompressionSize())
+            ).orElse(DEFAULT_REQUEST_COMPRESSION_SIZE);
 
             OpenSearchRequestBodyBuffer buffer = new OpenSearchRequestBodyBuffer(mapper, maxUncompressedSize);
             buffer.addContent(request);
@@ -280,7 +282,7 @@ private <RequestT> SdkHttpFullRequest prepareRequest(
         Endpoint<RequestT, ?, ?> endpoint,
         @CheckForNull TransportOptions options,
         @CheckForNull OpenSearchRequestBodyBuffer body
-    ) {
+    ) throws UnsupportedEncodingException {
         SdkHttpFullRequest.Builder req = SdkHttpFullRequest.builder().method(SdkHttpMethod.fromValue(endpoint.method(request)));
 
         StringBuilder url = new StringBuilder();
@@ -293,9 +295,9 @@ private <RequestT> SdkHttpFullRequest prepareRequest(
         Map<String, String> params = endpoint.queryParameters(request);
         if (params != null && !params.isEmpty()) {
             char sep = '?';
-            for (var ent : params.entrySet()) {
+            for (Map.Entry<String, String> ent : params.entrySet()) {
                 url.append(sep).append(ent.getKey()).append('=');
-                url.append(URLEncoder.encode(ent.getValue(), StandardCharsets.UTF_8));
+                url.append(URLEncoder.encode(ent.getValue(), "UTF-8"));
                 sep = '&';
             }
         }
@@ -321,22 +323,24 @@ private <RequestT> SdkHttpFullRequest prepareRequest(
             req.putHeader("x-amz-content-sha256", "required");
         }
 
-        boolean responseCompression = Optional.ofNullable(options)
-            .map(o -> o instanceof AwsSdk2TransportOptions ? ((AwsSdk2TransportOptions) o) : null)
-            .map(AwsSdk2TransportOptions::responseCompression)
-            .or(() -> Optional.ofNullable(transportOptions.responseCompression()))
-            .orElse(Boolean.TRUE);
+        boolean responseCompression = or(
+            Optional.ofNullable(options)
+                .map(o -> o instanceof AwsSdk2TransportOptions ? ((AwsSdk2TransportOptions) o) : null)
+                .map(AwsSdk2TransportOptions::responseCompression),
+            () -> Optional.ofNullable(transportOptions.responseCompression())
+        ).orElse(Boolean.TRUE);
         if (responseCompression) {
             req.putHeader("Accept-Encoding", "gzip");
         } else {
             req.removeHeader("Accept-Encoding");
         }
 
-        final AwsCredentialsProvider credentials = Optional.ofNullable(options)
-            .map(o -> o instanceof AwsSdk2TransportOptions ? ((AwsSdk2TransportOptions) o) : null)
-            .map(AwsSdk2TransportOptions::credentials)
-            .or(() -> Optional.ofNullable(transportOptions.credentials()))
-            .orElse(DefaultCredentialsProvider.create());
+        final AwsCredentialsProvider credentials = or(
+            Optional.ofNullable(options)
+                .map(o -> o instanceof AwsSdk2TransportOptions ? ((AwsSdk2TransportOptions) o) : null)
+                .map(AwsSdk2TransportOptions::credentials),
+            () -> Optional.ofNullable(transportOptions.credentials())
+        ).orElse(DefaultCredentialsProvider.create());
 
         Aws4SignerParams signerParams = Aws4SignerParams.builder()
             .awsCredentials(credentials.resolveCredentials())
@@ -346,7 +350,7 @@ private <RequestT> SdkHttpFullRequest prepareRequest(
         return Aws4Signer.create().sign(req.build(), signerParams);
     }
 
-    private void applyOptionsParams(StringBuilder url, TransportOptions options) {
+    private void applyOptionsParams(StringBuilder url, TransportOptions options) throws UnsupportedEncodingException {
         if (options == null) {
             return;
         }
@@ -355,7 +359,7 @@ private void applyOptionsParams(StringBuilder url, TransportOptions options) {
             char sep = url.indexOf("?") < 0 ? '?' : '&';
             for (Map.Entry<String, String> param : params.entrySet()) {
                 url.append(sep).append(param.getKey()).append('=');
-                url.append(URLEncoder.encode(param.getValue(), StandardCharsets.UTF_8));
+                url.append(URLEncoder.encode(param.getValue(), "UTF-8"));
                 sep = '?';
             }
         }
@@ -524,4 +528,16 @@ private <ResponseT, ErrorT> ResponseT parseResponse(
             }
         }
     }
+
+    private static <T> Optional<T> or(Optional<T> opt, Supplier<? extends Optional<? extends T>> supplier) {
+        Objects.requireNonNull(opt);
+        Objects.requireNonNull(supplier);
+        if (opt.isPresent()) {
+            return opt;
+        } else {
+            @SuppressWarnings("unchecked")
+            Optional<T> r = (Optional<T>) supplier.get();
+            return Objects.requireNonNull(r);
+        }
+    }
 }
diff --git a/java-client/src/main/java/org/opensearch/client/transport/httpclient5/ApacheHttpClient5Transport.java b/java-client/src/main/java/org/opensearch/client/transport/httpclient5/ApacheHttpClient5Transport.java
index c4142d7f85..28be09ae05 100644
--- a/java-client/src/main/java/org/opensearch/client/transport/httpclient5/ApacheHttpClient5Transport.java
+++ b/java-client/src/main/java/org/opensearch/client/transport/httpclient5/ApacheHttpClient5Transport.java
@@ -932,9 +932,15 @@ public long getContentLength() {
                 if (chunkedEnabled.get()) {
                     return -1L;
                 } else {
-                    long size;
+                    long size = 0;
+                    final byte[] buf = new byte[8192];
+                    int nread = 0;
+
                     try (InputStream is = getContent()) {
-                        size = is.readAllBytes().length;
+                        // read to EOF which may read more or less than buffer size
+                        while ((nread = is.read(buf)) > 0) {
+                            size += nread;
+                        }
                     } catch (IOException ex) {
                         size = -1L;
                     }
diff --git a/java-client/src/main/java/org/opensearch/client/transport/rest_client/RestClientOptions.java b/java-client/src/main/java/org/opensearch/client/transport/rest_client/RestClientOptions.java
index 8fa20977c8..830a04ae92 100644
--- a/java-client/src/main/java/org/opensearch/client/transport/rest_client/RestClientOptions.java
+++ b/java-client/src/main/java/org/opensearch/client/transport/rest_client/RestClientOptions.java
@@ -51,7 +51,7 @@
  * The {@link RestClientTransport} is deprecated and is scheduled for removal in later versions. Please
  * use {@link org.opensearch.client.transport.httpclient5.ApacheHttpClient5Transport} instead.
  */
-@Deprecated(since = "3.0.0", forRemoval = true)
+@Deprecated
 public class RestClientOptions implements TransportOptions {
 
     private final RequestOptions options;
diff --git a/java-client/src/main/java/org/opensearch/client/transport/rest_client/RestClientTransport.java b/java-client/src/main/java/org/opensearch/client/transport/rest_client/RestClientTransport.java
index c43504483e..e2a40a2fff 100644
--- a/java-client/src/main/java/org/opensearch/client/transport/rest_client/RestClientTransport.java
+++ b/java-client/src/main/java/org/opensearch/client/transport/rest_client/RestClientTransport.java
@@ -72,7 +72,7 @@
  * The {@link RestClientTransport} is deprecated and is scheduled for removal in later versions. Please
  * use {@link org.opensearch.client.transport.httpclient5.ApacheHttpClient5Transport} instead.
  */
-@Deprecated(since = "3.0.0", forRemoval = true)
+@Deprecated
 public class RestClientTransport implements OpenSearchTransport {
 
     static final ContentType JsonContentType = ContentType.APPLICATION_JSON;
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/_types/mapping/KnnVectorMethodTest.java b/java-client/src/test/java/org/opensearch/client/opensearch/_types/mapping/KnnVectorMethodTest.java
index 538eef9d15..abe3e5812a 100644
--- a/java-client/src/test/java/org/opensearch/client/opensearch/_types/mapping/KnnVectorMethodTest.java
+++ b/java-client/src/test/java/org/opensearch/client/opensearch/_types/mapping/KnnVectorMethodTest.java
@@ -12,7 +12,7 @@
 
 import jakarta.json.stream.JsonParser;
 import java.io.StringReader;
-import java.util.Map;
+import java.util.Collections;
 import junit.framework.TestCase;
 import org.junit.Test;
 import org.opensearch.client.json.JsonData;
@@ -30,7 +30,7 @@ public void testCreateKnnVectorMethodWithAll() {
         KnnVectorMethod knnVectorMethod = new KnnVectorMethod.Builder().name("hnsw")
             .spaceType("l2")
             .engine("nmslib")
-            .parameters(Map.of("ef_construction", JsonData.of(128)))
+            .parameters(Collections.singletonMap("ef_construction", JsonData.of(128)))
             .build();
         assertEquals("hnsw", knnVectorMethod.name());
         assertEquals("l2", knnVectorMethod.spaceType());
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/core/GetMappingsResponseTest.java b/java-client/src/test/java/org/opensearch/client/opensearch/core/GetMappingsResponseTest.java
index 9f72b6cca0..38f0f3fe31 100644
--- a/java-client/src/test/java/org/opensearch/client/opensearch/core/GetMappingsResponseTest.java
+++ b/java-client/src/test/java/org/opensearch/client/opensearch/core/GetMappingsResponseTest.java
@@ -2,6 +2,7 @@
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import jakarta.json.stream.JsonParser;
 import java.io.StringReader;
 import java.util.Collections;
 import java.util.HashMap;
@@ -12,7 +13,9 @@
 import org.opensearch.client.json.jsonb.JsonbJsonpMapper;
 import org.opensearch.client.opensearch._types.mapping.IcuCollationKeywordProperty;
 import org.opensearch.client.opensearch._types.mapping.Property;
+import org.opensearch.client.opensearch._types.mapping.TypeMapping;
 import org.opensearch.client.opensearch.indices.GetTemplateResponse;
+import org.opensearch.client.opensearch.indices.TemplateMapping;
 
 public class GetMappingsResponseTest extends Assert {
 
@@ -36,32 +39,27 @@ public void deserialize_IcuCollationKeywordExists_propertyDeserializes() throws
         icuCollationConfig.put("strength", "quaternary");
         icuCollationConfig.put("variable_top", "$");
 
-        mappingTemplate.put(
-            "test-index",
-            Map.of(
-                "aliases",
-                Collections.emptyMap(),
-                "index_patterns",
-                Collections.singletonList("test-pattern*"),
-                "mappings",
-                Map.of("properties", Map.of("icu_test_field", icuCollationConfig)),
-                "order",
-                0,
-                "settings",
-                Collections.emptyMap(),
-                "version",
-                1
-            )
+        final Map<String, Object> mappingTemplateMap = new HashMap<>();
+        mappingTemplateMap.put("aliases", Collections.emptyMap());
+        mappingTemplateMap.put("index_patterns", Collections.singletonList("test-pattern*"));
+        mappingTemplateMap.put(
+            "mappings",
+            Collections.singletonMap("properties", Collections.singletonMap("icu_test_field", icuCollationConfig))
         );
+        mappingTemplateMap.put("order", 0);
+        mappingTemplateMap.put("settings", Collections.emptyMap());
+        mappingTemplateMap.put("version", 1);
+        mappingTemplate.put("test-index", mappingTemplateMap);
+
         final JsonpMapper mapper = new JsonbJsonpMapper();
         final String indexTemplate = new ObjectMapper().writeValueAsString(mappingTemplate);
-        final var parser = mapper.jsonProvider().createParser(new StringReader(indexTemplate));
+        final JsonParser parser = mapper.jsonProvider().createParser(new StringReader(indexTemplate));
 
         final GetTemplateResponse response = GetTemplateResponse._DESERIALIZER.deserialize(parser, mapper);
-        final var template = response.get("test-index");
-        final var mappings = template.mappings();
-        final var properties = mappings.properties();
-        final var property = properties.get("icu_test_field");
+        final TemplateMapping template = response.get("test-index");
+        final TypeMapping mappings = template.mappings();
+        final Map<String, Property> properties = mappings.properties();
+        final Property property = properties.get("icu_test_field");
         final IcuCollationKeywordProperty icu = property.icuCollationKeyword();
 
         assertEquals(property._kind(), Property.Kind.IcuCollationKeyword);
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/core/PutTemplateRequestTest.java b/java-client/src/test/java/org/opensearch/client/opensearch/core/PutTemplateRequestTest.java
index 449b41e496..b609094414 100644
--- a/java-client/src/test/java/org/opensearch/client/opensearch/core/PutTemplateRequestTest.java
+++ b/java-client/src/test/java/org/opensearch/client/opensearch/core/PutTemplateRequestTest.java
@@ -2,8 +2,10 @@
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import jakarta.json.stream.JsonParser;
 import java.io.StringReader;
-import java.util.List;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.Map;
 import org.junit.Assert;
 import org.junit.Test;
@@ -16,15 +18,19 @@ public class PutTemplateRequestTest extends Assert {
     @Test
     public void deserialize_validFieldsIncluded_RequestIsBuilt() throws JsonProcessingException {
         final JsonpMapper mapper = new JsonbJsonpMapper();
-        final Map<String, Object> indexTemplateMap = Map.of("name", "test", "index_patterns", "*", "create", true, "order", 1);
+        final Map<String, Object> indexTemplateMap = new HashMap<>();
+        indexTemplateMap.put("name", "test");
+        indexTemplateMap.put("index_patterns", "*");
+        indexTemplateMap.put("create", true);
+        indexTemplateMap.put("order", 1);
 
         final String indexTemplate = new ObjectMapper().writeValueAsString(indexTemplateMap);
-        final var parser = mapper.jsonProvider().createParser(new StringReader(indexTemplate));
+        final JsonParser parser = mapper.jsonProvider().createParser(new StringReader(indexTemplate));
 
         final PutTemplateRequest putTemplateRequest = PutTemplateRequest._DESERIALIZER.deserialize(parser, mapper);
 
         assertEquals(putTemplateRequest.name(), "test");
-        assertEquals(putTemplateRequest.indexPatterns(), List.of("*"));
+        assertEquals(putTemplateRequest.indexPatterns(), Collections.singletonList("*"));
         assertEquals((int) putTemplateRequest.order(), 1);
         assertEquals(putTemplateRequest.create(), true);
     }
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/experiments/ParsingTests.java b/java-client/src/test/java/org/opensearch/client/opensearch/experiments/ParsingTests.java
index ab46a8418d..6963f82f89 100644
--- a/java-client/src/test/java/org/opensearch/client/opensearch/experiments/ParsingTests.java
+++ b/java-client/src/test/java/org/opensearch/client/opensearch/experiments/ParsingTests.java
@@ -32,7 +32,7 @@
 
 package org.opensearch.client.opensearch.experiments;
 
-import java.util.List;
+import java.util.Arrays;
 import java.util.Map;
 import org.junit.Test;
 import org.opensearch.client.opensearch._types.Time;
@@ -76,13 +76,13 @@ public void testFoo() {
     @Test
     public void testIndexSettingsTranslogOptionsParsing() {
 
-        var indexSettings = IndexSettings.of(
+        final IndexSettings indexSettings = IndexSettings.of(
             _1 -> _1.translog(
                 Translog.of(tr -> tr.syncInterval(Time.of(t -> t.time("10s"))).durability("async").flushThresholdSize("256mb"))
             )
         );
 
-        var str = toJson(indexSettings);
+        final String str = toJson(indexSettings);
         assertEquals("{\"translog\":{\"durability\":\"async\",\"flush_threshold_size\":\"256mb\"," + "\"sync_interval\":\"10s\"}}", str);
 
         IndexSettings deserialized = fromJson(str, IndexSettings._DESERIALIZER);
@@ -90,7 +90,7 @@ public void testIndexSettingsTranslogOptionsParsing() {
         assertEquals(indexSettings.translog().durability(), deserialized.translog().durability());
         assertEquals(indexSettings.translog().flushThresholdSize(), deserialized.translog().flushThresholdSize());
 
-        var deprecatedForm = "{\"translog\":{\"sync_interval\":\"10s\"},\"translog.durability\":\"async\",\"translog"
+        final String deprecatedForm = "{\"translog\":{\"sync_interval\":\"10s\"},\"translog.durability\":\"async\",\"translog"
             + ".flush_threshold_size\":\"256mb\"}";
         IndexSettings deprecatedDeserialized = fromJson(deprecatedForm, IndexSettings._DESERIALIZER);
         assertEquals(indexSettings.translog().syncInterval().time(), deprecatedDeserialized.translog().syncInterval().time());
@@ -101,7 +101,7 @@ public void testIndexSettingsTranslogOptionsParsing() {
     @Test
     public void testIndexSettingsMappingParsing() {
 
-        var mapping = IndexSettingsMapping.of(
+        final IndexSettingsMapping mapping = IndexSettingsMapping.of(
             b -> b.totalFields(d -> d.limit(1L))
                 .depth(d -> d.limit(2L))
                 .nestedFields(d -> d.limit(3L))
@@ -109,14 +109,14 @@ public void testIndexSettingsMappingParsing() {
                 .fieldNameLength(d -> d.limit(5L))
         );
 
-        var str = toJson(mapping);
+        final String str = toJson(mapping);
         assertEquals(
             "{\"total_fields\":{\"limit\":1},\"depth\":{\"limit\":2},\"nested_fields\":{\"limit\":3},"
                 + "\"nested_objects\":{\"limit\":4},\"field_name_length\":{\"limit\":5}}",
             str
         );
 
-        var deserialized = fromJson(str, IndexSettingsMapping._DESERIALIZER);
+        final IndexSettingsMapping deserialized = fromJson(str, IndexSettingsMapping._DESERIALIZER);
         assertEquals(mapping.totalFields().limit(), deserialized.totalFields().limit());
         assertEquals(mapping.depth().limit(), deserialized.depth().limit());
         assertEquals(mapping.nestedFields().limit(), deserialized.nestedFields().limit());
@@ -159,7 +159,7 @@ public void testSmartcn_StopFilter() {
 
     @Test
     public void testCjk_Analyzer() {
-        final Analyzer analyzer = new Analyzer.Builder().cjk(b -> b.stopwords(List.of("a", "b", "c")).stopwordsPath("path")).build();
+        final Analyzer analyzer = new Analyzer.Builder().cjk(b -> b.stopwords(Arrays.asList("a", "b", "c")).stopwordsPath("path")).build();
 
         assertTrue(analyzer.isCjk());
 
@@ -280,7 +280,7 @@ public void testTermvectorsResponseOptionals() {
     @Test
     public void testIndexSettingsIndexing() {
 
-        var indexing = IndexSettingsIndexing.of(
+        final IndexSettingsIndexing indexing = IndexSettingsIndexing.of(
             is -> is.slowlog(
                 s -> s.level("info")
                     .source(0)
@@ -295,14 +295,14 @@ public void testIndexSettingsIndexing() {
             )
         );
 
-        var str = toJson(indexing);
+        final String str = toJson(indexing);
         assertEquals(
             "{\"slowlog\":{\"level\":\"info\",\"source\":0,\"threshold\":{\"index\":{"
                 + "\"warn\":\"5000ms\",\"info\":\"1000ms\",\"debug\":\"500ms\",\"trace\":\"200ms\"}}}}",
             str
         );
 
-        var deserialized = fromJson(str, IndexSettingsIndexing._DESERIALIZER);
+        final IndexSettingsIndexing deserialized = fromJson(str, IndexSettingsIndexing._DESERIALIZER);
         assertEquals(indexing.slowlog().level(), deserialized.slowlog().level());
         assertEquals(indexing.slowlog().source(), deserialized.slowlog().source());
         assertEquals(indexing.slowlog().threshold().index().debug().time(), deserialized.slowlog().threshold().index().debug().time());
@@ -315,7 +315,7 @@ public void testIndexSettingsIndexing() {
     @Test
     public void testIndexSettingsSearch() {
 
-        var search = IndexSettingsSearch.of(
+        final IndexSettingsSearch search = IndexSettingsSearch.of(
             is -> is.slowlog(
                 s -> s.level("info")
                     .threshold(
@@ -335,7 +335,7 @@ public void testIndexSettingsSearch() {
             ).idle(id -> id.after(a -> a.time("5s")))
         );
 
-        var str = toJson(search);
+        final String str = toJson(search);
         assertEquals(
             "{\"idle\":{\"after\":\"5s\"},\"slowlog\":{\"level\":\"info\","
                 + "\"threshold\":{\"query\":{\"warn\":\"5000ms\",\"info\":\"1000ms\",\"debug\":\"500ms\","
@@ -344,7 +344,7 @@ public void testIndexSettingsSearch() {
             str
         );
 
-        var deserialized = fromJson(str, IndexSettingsSearch._DESERIALIZER);
+        final IndexSettingsSearch deserialized = fromJson(str, IndexSettingsSearch._DESERIALIZER);
         assertEquals(search.slowlog().level(), deserialized.slowlog().level());
         assertEquals(search.slowlog().threshold().query().debug().time(), deserialized.slowlog().threshold().query().debug().time());
         assertEquals(search.slowlog().threshold().query().info().time(), deserialized.slowlog().threshold().query().info().time());
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/aws/AwsSdk2BulkRequestIT.java b/java-client/src/test/java/org/opensearch/client/opensearch/integTest/aws/AwsSdk2BulkRequestIT.java
index 759909cddb..c49277182d 100644
--- a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/aws/AwsSdk2BulkRequestIT.java
+++ b/java-client/src/test/java/org/opensearch/client/opensearch/integTest/aws/AwsSdk2BulkRequestIT.java
@@ -9,7 +9,7 @@
 package org.opensearch.client.opensearch.integTest.aws;
 
 import java.util.ArrayList;
-import java.util.List;
+import java.util.Collections;
 import org.junit.Assert;
 import org.junit.Test;
 import org.opensearch.client.opensearch.OpenSearchClient;
@@ -43,7 +43,7 @@ public void testBulkRequest() throws Exception {
 
         Query query = Query.of(qb -> qb.match(mb -> mb.field("title").query(fv -> fv.stringValue("Document"))));
         final SearchRequest.Builder searchReq = new SearchRequest.Builder().allowPartialSearchResults(false)
-            .index(List.of(TEST_INDEX))
+            .index(Collections.singletonList(TEST_INDEX))
             .size(10)
             .source(sc -> sc.fetch(false))
             .ignoreThrottled(false)
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/aws/AwsSdk2SearchIT.java b/java-client/src/test/java/org/opensearch/client/opensearch/integTest/aws/AwsSdk2SearchIT.java
index 343c1f18d1..7ec5b1f654 100644
--- a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/aws/AwsSdk2SearchIT.java
+++ b/java-client/src/test/java/org/opensearch/client/opensearch/integTest/aws/AwsSdk2SearchIT.java
@@ -8,6 +8,7 @@
 
 package org.opensearch.client.opensearch.integTest.aws;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.CompletableFuture;
 import org.junit.Assert;
@@ -90,7 +91,7 @@ void testClientAsync(boolean async) throws Exception {
             CompletableFuture<SearchResponse<SimplePojo>> r1 = query(client, "NotPresent", null);
             CompletableFuture<SearchResponse<SimplePojo>> r2 = query(client, "Document", null);
             CompletableFuture<SearchResponse<SimplePojo>> r3 = query(client, "1", null);
-            return CompletableFuture.allOf(r1, r2, r3).thenApply(u2 -> List.of(r1.getNow(null), r2.getNow(null), r3.getNow(null)));
+            return CompletableFuture.allOf(r1, r2, r3).thenApply(u2 -> Arrays.asList(r1.getNow(null), r2.getNow(null), r3.getNow(null)));
         }).get();
 
         SearchResponse<SimplePojo> response = results.get(0);
@@ -114,7 +115,9 @@ private CompletableFuture<IndexResponse> addDoc(OpenSearchAsyncClient client, St
         try {
             return client.index(req.build());
         } catch (Exception e) {
-            return CompletableFuture.failedFuture(e);
+            final CompletableFuture<IndexResponse> failed = new CompletableFuture<>();
+            failed.completeExceptionally(e);
+            return failed;
         }
     }
 
@@ -124,7 +127,7 @@ public void testDoubleWrappedException() throws Exception {
         resetTestIndex(false);
         // attempt to create the same index a second time
         OpenSearchIndicesClient client = getIndexesClient(false, null, null);
-        var req = new CreateIndexRequest.Builder().index(TEST_INDEX);
+        final CreateIndexRequest.Builder req = new CreateIndexRequest.Builder().index(TEST_INDEX);
         Exception exception = Assert.assertThrows(OpenSearchException.class, () -> { client.create(req.build()); });
         // error message contains the actual error, not a generic [http_exception]
         Assert.assertTrue(exception.getMessage().contains("[resource_already_exists_exception]"));
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/aws/AwsSdk2TransportTestCase.java b/java-client/src/test/java/org/opensearch/client/opensearch/integTest/aws/AwsSdk2TransportTestCase.java
index a1ec172c41..79c4985b81 100644
--- a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/aws/AwsSdk2TransportTestCase.java
+++ b/java-client/src/test/java/org/opensearch/client/opensearch/integTest/aws/AwsSdk2TransportTestCase.java
@@ -12,7 +12,7 @@
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import java.io.IOException;
-import java.util.List;
+import java.util.Collections;
 import java.util.Objects;
 import java.util.concurrent.CompletableFuture;
 import javax.annotation.CheckForNull;
@@ -209,14 +209,14 @@ public void resetTestIndex(boolean async) throws Exception {
             }
         }
         if (indexExists) {
-            client.delete(b -> b.index(List.of(TEST_INDEX)));
+            client.delete(b -> b.index(Collections.singletonList(TEST_INDEX)));
         }
-        var req = new CreateIndexRequest.Builder().index(TEST_INDEX);
+        final CreateIndexRequest.Builder req = new CreateIndexRequest.Builder().index(TEST_INDEX);
         client.create(req.build());
     }
 
     protected SearchResponse<SimplePojo> query(OpenSearchClient client, String title, String text) throws Exception {
-        var query = Query.of(qb -> {
+        final Query query = Query.of(qb -> {
             if (title != null) {
                 qb.match(mb -> mb.field("title").query(vb -> vb.stringValue(title)));
             }
@@ -226,7 +226,7 @@ protected SearchResponse<SimplePojo> query(OpenSearchClient client, String title
             return qb;
         });
         final SearchRequest.Builder req = new SearchRequest.Builder().allowPartialSearchResults(false)
-            .index(List.of(TEST_INDEX))
+            .index(Collections.singletonList(TEST_INDEX))
             .size(10)
             .ignoreThrottled(false)
             .sort(
@@ -239,7 +239,7 @@ protected SearchResponse<SimplePojo> query(OpenSearchClient client, String title
     }
 
     protected CompletableFuture<SearchResponse<SimplePojo>> query(OpenSearchAsyncClient client, String title, String text) {
-        var query = Query.of(qb -> {
+        Query query = Query.of(qb -> {
             if (title != null) {
                 qb.match(mb -> mb.field("title").query(vb -> vb.stringValue(title)));
             }
@@ -249,7 +249,7 @@ protected CompletableFuture<SearchResponse<SimplePojo>> query(OpenSearchAsyncCli
             return qb;
         });
         final SearchRequest.Builder req = new SearchRequest.Builder().allowPartialSearchResults(false)
-            .index(List.of(TEST_INDEX))
+            .index(Collections.singletonList(TEST_INDEX))
             .size(10)
             .ignoreThrottled(false)
             .sort(
@@ -261,7 +261,9 @@ protected CompletableFuture<SearchResponse<SimplePojo>> query(OpenSearchAsyncCli
         try {
             return client.search(req.build(), SimplePojo.class);
         } catch (Exception e) {
-            return CompletableFuture.failedFuture(e);
+            final CompletableFuture<SearchResponse<SimplePojo>> failed = new CompletableFuture<>();
+            failed.completeExceptionally(e);
+            return failed;
         }
     }
 
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/model/EnumTest.java b/java-client/src/test/java/org/opensearch/client/opensearch/model/EnumTest.java
index f16f0795a8..adbe18465c 100644
--- a/java-client/src/test/java/org/opensearch/client/opensearch/model/EnumTest.java
+++ b/java-client/src/test/java/org/opensearch/client/opensearch/model/EnumTest.java
@@ -58,13 +58,13 @@ public void testEnumWithAliases() {
 
     @Test
     public void testEnumWithBooleanSupport() {
-        var booleanAsString = fromJson("\"true\"", DynamicMapping.class);
+        DynamicMapping booleanAsString = fromJson("\"true\"", DynamicMapping.class);
         assertEquals(booleanAsString, DynamicMapping.True);
 
-        var nonBooleanEnumValue = fromJson("\"runtime\"", DynamicMapping.class);
+        DynamicMapping nonBooleanEnumValue = fromJson("\"runtime\"", DynamicMapping.class);
         assertEquals(nonBooleanEnumValue, DynamicMapping.Runtime);
 
-        var booleanPrimitive = fromJson("false", DynamicMapping.class);
+        DynamicMapping booleanPrimitive = fromJson("false", DynamicMapping.class);
         assertEquals(booleanPrimitive, DynamicMapping.False);
     }
 }
diff --git a/java-client/src/test/java/org/opensearch/client/transport/httpclient5/ResponseExceptionTest.java b/java-client/src/test/java/org/opensearch/client/transport/httpclient5/ResponseExceptionTest.java
index 41de5ee77e..9f8084ca1f 100644
--- a/java-client/src/test/java/org/opensearch/client/transport/httpclient5/ResponseExceptionTest.java
+++ b/java-client/src/test/java/org/opensearch/client/transport/httpclient5/ResponseExceptionTest.java
@@ -15,7 +15,7 @@ public class ResponseExceptionTest {
 
     @Test
     public void testStatus() throws IOException {
-        final var response = this.buildResponseException(HttpStatus.SC_BAD_REQUEST);
+        final ResponseException response = this.buildResponseException(HttpStatus.SC_BAD_REQUEST);
         assertThat(response.status(), equalTo(HttpStatus.SC_BAD_REQUEST));
     }
 
diff --git a/java-client/src/test/java/org/opensearch/client/transport/httpclient5/internal/HeapBufferedAsyncEntityConsumerTest.java b/java-client/src/test/java/org/opensearch/client/transport/httpclient5/internal/HeapBufferedAsyncEntityConsumerTest.java
index 283a7acd8b..e1b042825d 100644
--- a/java-client/src/test/java/org/opensearch/client/transport/httpclient5/internal/HeapBufferedAsyncEntityConsumerTest.java
+++ b/java-client/src/test/java/org/opensearch/client/transport/httpclient5/internal/HeapBufferedAsyncEntityConsumerTest.java
@@ -36,39 +36,39 @@ public void tearDown() {
 
     @Test
     public void testConsumerAllocatesBufferLimit() throws IOException {
-        consumer.consume(randomByteBufferOfLength(1000).flip());
+        consumer.consume((ByteBuffer) randomByteBufferOfLength(1000).flip());
         assertThat(consumer.getBuffer().capacity(), equalTo(1000));
     }
 
     @Test
     public void testConsumerAllocatesEmptyBuffer() throws IOException {
-        consumer.consume(ByteBuffer.allocate(0).flip());
+        consumer.consume((ByteBuffer) ByteBuffer.allocate(0).flip());
         assertThat(consumer.getBuffer().capacity(), equalTo(0));
     }
 
     @Test
     public void testConsumerExpandsBufferLimits() throws IOException {
-        consumer.consume(randomByteBufferOfLength(1000).flip());
-        consumer.consume(randomByteBufferOfLength(2000).flip());
-        consumer.consume(randomByteBufferOfLength(3000).flip());
+        consumer.consume((ByteBuffer) randomByteBufferOfLength(1000).flip());
+        consumer.consume((ByteBuffer) randomByteBufferOfLength(2000).flip());
+        consumer.consume((ByteBuffer) randomByteBufferOfLength(3000).flip());
         assertThat(consumer.getBuffer().capacity(), equalTo(6000));
     }
 
     @Test
     public void testConsumerAllocatesLimit() throws IOException {
-        consumer.consume(randomByteBufferOfLength(BUFFER_LIMIT).flip());
+        consumer.consume((ByteBuffer) randomByteBufferOfLength(BUFFER_LIMIT).flip());
         assertThat(consumer.getBuffer().capacity(), equalTo(BUFFER_LIMIT));
     }
 
     @Test
     public void testConsumerFailsToAllocateOverLimit() throws IOException {
-        assertThrows(ContentTooLongException.class, () -> consumer.consume(randomByteBufferOfLength(BUFFER_LIMIT + 1).flip()));
+        assertThrows(ContentTooLongException.class, () -> consumer.consume((ByteBuffer) randomByteBufferOfLength(BUFFER_LIMIT + 1).flip()));
     }
 
     @Test
     public void testConsumerFailsToExpandOverLimit() throws IOException {
-        consumer.consume(randomByteBufferOfLength(BUFFER_LIMIT).flip());
-        assertThrows(ContentTooLongException.class, () -> consumer.consume(randomByteBufferOfLength(1).flip()));
+        consumer.consume((ByteBuffer) randomByteBufferOfLength(BUFFER_LIMIT).flip());
+        assertThrows(ContentTooLongException.class, () -> consumer.consume((ByteBuffer) randomByteBufferOfLength(1).flip()));
     }
 
     private static ByteBuffer randomByteBufferOfLength(int length) {
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractAggregationRequestIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractAggregationRequestIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractAggregationRequestIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractAggregationRequestIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractCatClientIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractCatClientIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractCatClientIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractCatClientIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractClusterClientIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractClusterClientIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractClusterClientIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractClusterClientIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractCrudIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractCrudIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractCrudIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractCrudIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractHighlightIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractHighlightIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractHighlightIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractHighlightIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractIndicesClientIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractIndicesClientIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractIndicesClientIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractIndicesClientIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractKnnIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractKnnIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractKnnIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractKnnIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractMultiSearchRequestIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractMultiSearchRequestIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractMultiSearchRequestIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractMultiSearchRequestIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractNodesIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractNodesIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractNodesIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractNodesIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractPingAndInfoIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractPingAndInfoIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractPingAndInfoIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractPingAndInfoIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractRequestIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractRequestIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractRequestIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractRequestIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractSearchRequestIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractSearchRequestIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractSearchRequestIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractSearchRequestIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractSearchTemplateRequestIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractSearchTemplateRequestIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/AbstractSearchTemplateRequestIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractSearchTemplateRequestIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/OpenSearchJavaClientTestCase.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/OpenSearchJavaClientTestCase.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/OpenSearchJavaClientTestCase.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/OpenSearchJavaClientTestCase.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/OpenSearchTransportSupport.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/OpenSearchTransportSupport.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/OpenSearchTransportSupport.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/OpenSearchTransportSupport.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/AggregationRequestIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/AggregationRequestIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/AggregationRequestIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/AggregationRequestIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/CatIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/CatIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/CatIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/CatIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/ClusterClientIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/ClusterClientIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/ClusterClientIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/ClusterClientIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/CrudIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/CrudIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/CrudIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/CrudIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/HighlightIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/HighlightIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/HighlightIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/HighlightIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/HttpClient5TransportSupport.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/HttpClient5TransportSupport.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/HttpClient5TransportSupport.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/HttpClient5TransportSupport.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/IndicesClientIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/IndicesClientIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/IndicesClientIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/IndicesClientIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/KnnIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/KnnIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/KnnIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/KnnIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/MultiSearchRequestIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/MultiSearchRequestIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/MultiSearchRequestIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/MultiSearchRequestIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/NodesIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/NodesIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/NodesIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/NodesIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/PingAndInfoIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/PingAndInfoIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/PingAndInfoIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/PingAndInfoIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/RequestIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/RequestIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/RequestIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/RequestIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/SearchRequestIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/SearchRequestIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/SearchRequestIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/SearchRequestIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/SearchTemplateRequestIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/SearchTemplateRequestIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/httpclient5/SearchTemplateRequestIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/httpclient5/SearchTemplateRequestIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/AggregationRequestIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/AggregationRequestIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/AggregationRequestIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/AggregationRequestIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/CatIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/CatIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/CatIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/CatIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/ClusterClientIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/ClusterClientIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/ClusterClientIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/ClusterClientIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/CrudIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/CrudIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/CrudIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/CrudIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/HighlightIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/HighlightIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/HighlightIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/HighlightIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/IndicesClientIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/IndicesClientIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/IndicesClientIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/IndicesClientIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/KnnIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/KnnIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/KnnIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/KnnIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/MultiSearchRequestIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/MultiSearchRequestIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/MultiSearchRequestIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/MultiSearchRequestIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/NodesIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/NodesIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/NodesIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/NodesIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/PingAndInfoIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/PingAndInfoIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/PingAndInfoIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/PingAndInfoIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/RequestIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/RequestIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/RequestIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/RequestIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/SearchRequestIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/SearchRequestIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/SearchRequestIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/SearchRequestIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/SearchTemplateRequestIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/SearchTemplateRequestIT.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/opensearch/integTest/restclient/SearchTemplateRequestIT.java
rename to java-client/src/test/java11/org/opensearch/client/opensearch/integTest/restclient/SearchTemplateRequestIT.java
diff --git a/java-client/src/test/java/org/opensearch/client/transport/RequestOptionsTest.java b/java-client/src/test/java11/org/opensearch/client/transport/RequestOptionsTest.java
similarity index 100%
rename from java-client/src/test/java/org/opensearch/client/transport/RequestOptionsTest.java
rename to java-client/src/test/java11/org/opensearch/client/transport/RequestOptionsTest.java