diff --git a/log4j-server/src/test/java/org/apache/logging/log4j/server/SslXmlSocketServerTest.java b/log4j-server/src/test/java/org/apache/logging/log4j/server/SslXmlSocketServerTest.java
index 1a51244..1a4acb4 100644
--- a/log4j-server/src/test/java/org/apache/logging/log4j/server/SslXmlSocketServerTest.java
+++ b/log4j-server/src/test/java/org/apache/logging/log4j/server/SslXmlSocketServerTest.java
@@ -70,7 +70,7 @@
 
     @BeforeClass
     public static void setupClass() throws Exception {
-        (LoggerContext.getContext(false)).reconfigure();
+        LoggerContext.getContext(false).reconfigure();
         initServerSocketFactory();
         // Use a large buffer just to test the code, the UDP test uses a tiny buffer
         server = new SecureTcpSocketServer<>(PORT_NUM, new XmlInputStreamLogEventBridge(1024 * 100,
diff --git a/log4j-server/src/test/java/org/apache/logging/log4j/server/TcpJsonSocketServerTest.java b/log4j-server/src/test/java/org/apache/logging/log4j/server/TcpJsonSocketServerTest.java
index f12c908..63470dd 100644
--- a/log4j-server/src/test/java/org/apache/logging/log4j/server/TcpJsonSocketServerTest.java
+++ b/log4j-server/src/test/java/org/apache/logging/log4j/server/TcpJsonSocketServerTest.java
@@ -31,7 +31,7 @@
 
     @BeforeClass
     public static void setupClass() throws Exception {
-        (LoggerContext.getContext(false)).reconfigure();
+        LoggerContext.getContext(false).reconfigure();
         server = TcpSocketServer.createJsonSocketServer(PORT_NUM);
         thread = server.startNewThread();
     }
diff --git a/log4j-server/src/test/java/org/apache/logging/log4j/server/TcpSerializedSocketServerTest.java b/log4j-server/src/test/java/org/apache/logging/log4j/server/TcpSerializedSocketServerTest.java
index 275af20..7b0a3c1 100644
--- a/log4j-server/src/test/java/org/apache/logging/log4j/server/TcpSerializedSocketServerTest.java
+++ b/log4j-server/src/test/java/org/apache/logging/log4j/server/TcpSerializedSocketServerTest.java
@@ -32,7 +32,7 @@
 
     @BeforeClass
     public static void setupClass() throws Exception {
-        (LoggerContext.getContext(false)).reconfigure();
+        LoggerContext.getContext(false).reconfigure();
         server = TcpSocketServer.createSerializedSocketServer(PORT_NUM);
         thread = server.startNewThread();
     }
diff --git a/log4j-server/src/test/java/org/apache/logging/log4j/server/TcpXmlSocketServerTest.java b/log4j-server/src/test/java/org/apache/logging/log4j/server/TcpXmlSocketServerTest.java
index 2b2cfd7..6a0ad13 100644
--- a/log4j-server/src/test/java/org/apache/logging/log4j/server/TcpXmlSocketServerTest.java
+++ b/log4j-server/src/test/java/org/apache/logging/log4j/server/TcpXmlSocketServerTest.java
@@ -32,7 +32,7 @@
 
     @BeforeClass
     public static void setupClass() throws Exception {
-        (LoggerContext.getContext(false)).reconfigure();
+        LoggerContext.getContext(false).reconfigure();
         // Use a large buffer just to test the code, the UDP test uses a tiny buffer
         server = new TcpSocketServer<>(PORT_NUM, new XmlInputStreamLogEventBridge(1024 * 100,
                 Charset.defaultCharset()));
diff --git a/log4j-server/src/test/java/org/apache/logging/log4j/server/UdpJsonSocketServerTest.java b/log4j-server/src/test/java/org/apache/logging/log4j/server/UdpJsonSocketServerTest.java
index 7bd36f9..e6b6d93 100644
--- a/log4j-server/src/test/java/org/apache/logging/log4j/server/UdpJsonSocketServerTest.java
+++ b/log4j-server/src/test/java/org/apache/logging/log4j/server/UdpJsonSocketServerTest.java
@@ -31,7 +31,7 @@
 
     @BeforeClass
     public static void setupClass() throws Exception {
-        (LoggerContext.getContext(false)).reconfigure();
+        LoggerContext.getContext(false).reconfigure();
         server = UdpSocketServer.createJsonSocketServer(PORT_NUM);
         thread = server.startNewThread();
     }
diff --git a/log4j-server/src/test/java/org/apache/logging/log4j/server/UdpSerializedSocketServerTest.java b/log4j-server/src/test/java/org/apache/logging/log4j/server/UdpSerializedSocketServerTest.java
index 05b8a52..be826c9 100644
--- a/log4j-server/src/test/java/org/apache/logging/log4j/server/UdpSerializedSocketServerTest.java
+++ b/log4j-server/src/test/java/org/apache/logging/log4j/server/UdpSerializedSocketServerTest.java
@@ -31,7 +31,7 @@
 
     @BeforeClass
     public static void setupClass() throws Exception {
-        (LoggerContext.getContext(false)).reconfigure();
+        LoggerContext.getContext(false).reconfigure();
         server = UdpSocketServer.createSerializedSocketServer(PORT_NUM);
         thread = server.startNewThread();
     }
diff --git a/log4j-server/src/test/java/org/apache/logging/log4j/server/UdpXmlSocketServerTest.java b/log4j-server/src/test/java/org/apache/logging/log4j/server/UdpXmlSocketServerTest.java
index 0299312..9cbb07f 100644
--- a/log4j-server/src/test/java/org/apache/logging/log4j/server/UdpXmlSocketServerTest.java
+++ b/log4j-server/src/test/java/org/apache/logging/log4j/server/UdpXmlSocketServerTest.java
@@ -32,7 +32,7 @@
 
     @BeforeClass
     public static void setupClass() throws Exception {
-        (LoggerContext.getContext(false)).reconfigure();
+        LoggerContext.getContext(false).reconfigure();
         // Use a tiny buffer just to test the code, the TCP test uses a large buffer
         server = new UdpSocketServer<>(PORT_NUM, new XmlInputStreamLogEventBridge(100,
                 Charset.defaultCharset()));
