diff --git a/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeImpl.java b/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeImpl.java
index 2553ad4..e9f8e90 100644
--- a/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeImpl.java
+++ b/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeImpl.java
@@ -657,12 +657,10 @@
         {
             return find( key, startNode.right, path );
         }
-        else if ( c < 0 )
+        else
         {
             return find( key, startNode.left, path );
         }
-
-        return null;
     }
 
 
diff --git a/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMapImpl.java b/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMapImpl.java
index 6993a3c..ea86d30 100644
--- a/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMapImpl.java
+++ b/core-avl/src/main/java/org/apache/directory/server/core/avltree/AvlTreeMapImpl.java
@@ -858,12 +858,10 @@
         {
             return find( key, startNode.right, path );
         }
-        else if ( c < 0 )
+        else
         {
             return find( key, startNode.left, path );
         }
-
-        return null;
     }
 
 
diff --git a/core-shared/src/main/java/org/apache/directory/server/core/shared/partition/DefaultPartitionNexus.java b/core-shared/src/main/java/org/apache/directory/server/core/shared/partition/DefaultPartitionNexus.java
index 9f40bf5..fe9f210 100644
--- a/core-shared/src/main/java/org/apache/directory/server/core/shared/partition/DefaultPartitionNexus.java
+++ b/core-shared/src/main/java/org/apache/directory/server/core/shared/partition/DefaultPartitionNexus.java
@@ -20,6 +20,7 @@
 package org.apache.directory.server.core.shared.partition;
 
 
+import java.io.InputStream;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -163,9 +164,9 @@
 
         Properties props = new Properties();
 
-        try
+        try ( InputStream inputStream = getClass().getResourceAsStream( "version.properties" ) )
         {
-            props.load( getClass().getResourceAsStream( "version.properties" ) );
+            props.load( inputStream );
         }
         catch ( IOException e )
         {
diff --git a/interceptors/changelog/src/main/java/org/apache/directory/server/core/changelog/MemoryChangeLogStore.java b/interceptors/changelog/src/main/java/org/apache/directory/server/core/changelog/MemoryChangeLogStore.java
index 77a0e76..796c8df 100644
--- a/interceptors/changelog/src/main/java/org/apache/directory/server/core/changelog/MemoryChangeLogStore.java
+++ b/interceptors/changelog/src/main/java/org/apache/directory/server/core/changelog/MemoryChangeLogStore.java
@@ -165,7 +165,7 @@
             try ( BufferedReader reader = Files.newBufferedReader( revFile.toPath(), StandardCharsets.UTF_8 ) )
             {
                 String line = reader.readLine();
-                currentRevision = Long.valueOf( line );
+                currentRevision = Long.parseLong( line );
             }
         }
     }
