diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index e7d914e..7cdae48 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -37,6 +37,7 @@
     [OAK-4675] - SNFE thrown while testing FileStore.cleanup() running concurrently with writes
     [OAK-4676] - Index definition on nt:base with analyzed property incorrectly matches query with different property
     [OAK-4679] - Backport OAK-4119, OAK-4101, OAK-4087 and OAK-4344
+    [OAK-4790] - Compilation error with JDK 6 in FileIOUtils
 
 
 Improvement
@@ -73,7 +74,7 @@
     [OAK-3211] - Document External Identity Management
     [OAK-4364] - Initial Benchmarks for oak-auth-external
     [OAK-4743] - Update Oak 1.2 and Oak 1.4 to Jackrabbit 2.12.4
-
+    [OAK-4791] - Enable animal sniffer plugin
 
 Test
 
diff --git a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/FileIOUtils.java b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/FileIOUtils.java
index d55d5e0..d430da1 100644
--- a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/FileIOUtils.java
+++ b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/FileIOUtils.java
@@ -34,7 +34,6 @@
 import static com.google.common.collect.Sets.newHashSet;
 import static com.google.common.io.Closeables.close;
 import static com.google.common.io.Files.newWriter;
-import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.jackrabbit.oak.commons.sort.EscapeUtils.escapeLineBreak;
 import static org.apache.jackrabbit.oak.commons.sort.EscapeUtils.unescapeLineBreaks;
 
@@ -76,7 +75,7 @@
      */
     public static int writeStrings(Iterator<String> iterator, File f, boolean escape)
         throws IOException {
-        BufferedWriter writer =  newWriter(f, UTF_8);
+        BufferedWriter writer =  newWriter(f, Charsets.UTF_8);
         boolean threw = true;
 
         int count = 0;
diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreTest.java
index 467b6f7..fe8133a 100644
--- a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreTest.java
+++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreTest.java
@@ -83,7 +83,7 @@
                 assertTrue("document with " + id + " not created", success);
                 removeMe.add(id);
             }
-            System.out.println(removeMe);
+
             List<QueryCondition> conditions = new ArrayList<QueryCondition>();
             List<NodeDocument> result = rds.query(Collection.NODES, NodeDocument.MIN_ID_VALUE, NodeDocument.MAX_ID_VALUE,
                     Arrays.asList("_:/%", "__:/%", "___:/%"), conditions, 10000);
diff --git a/oak-parent/pom.xml b/oak-parent/pom.xml
index ad19c60..ca5c937 100644
--- a/oak-parent/pom.xml
+++ b/oak-parent/pom.xml
@@ -60,7 +60,8 @@
     <logback.version>1.1.0</logback.version>
     <h2.version>1.4.190</h2.version>
     <findbugs.version>3.0.0</findbugs.version>
-
+    <java.version.signature>java16</java.version.signature>
+    
    <!-- specifies on which fixture to run the integration testing tests. 
       override in profiles or provide from command line to change behaviour. Provide 
       more fixtures space separated. See org.apache.jackrabbit.oak.jcr.FixturesHelper#AVAILABLE_FIXTURES 
@@ -97,6 +98,18 @@
           </configuration>
         </plugin>
         <plugin>
+          <groupId>org.codehaus.mojo</groupId>
+          <artifactId>animal-sniffer-maven-plugin</artifactId>
+          <version>1.15</version>
+          <configuration>
+            <signature>
+              <groupId>org.codehaus.mojo.signature</groupId>
+              <artifactId>${java.version.signature}</artifactId>
+              <version>1.0</version>
+            </signature>
+          </configuration>
+        </plugin>
+        <plugin>
           <artifactId>maven-javadoc-plugin</artifactId>
           <configuration>
             <source>1.6</source>
@@ -333,6 +346,19 @@
           </execution>
         </executions>
       </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>animal-sniffer-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>animal-sniffer</id>
+            <phase>compile</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
 
