diff --git a/debian/changelog b/debian/changelog
index 60185d8..1ff8861 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+libsis-jhdf5-java (19.04.0+dfsg+git20201024.1.5c9ee4c-1) UNRELEASED; urgency=low
+
+  * New upstream snapshot.
+  * Drop patch declaring_final_variables.patch, present upstream.
+  * Drop patch closing_writer_in_tests.patch, present upstream.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Sat, 05 Mar 2022 03:12:30 -0000
+
 libsis-jhdf5-java (19.04.0+dfsg-5) unstable; urgency=medium
 
   * Raising Standards version to 4.6.0 (no change)
diff --git a/debian/patches/adapting_h5ar_script_to_debian.patch b/debian/patches/adapting_h5ar_script_to_debian.patch
index 5dee540..f429d60 100644
--- a/debian/patches/adapting_h5ar_script_to_debian.patch
+++ b/debian/patches/adapting_h5ar_script_to_debian.patch
@@ -3,8 +3,10 @@ Author: Pierre Gruet <pgt@debian.org>
 Last-Update: 2020-05-12
 Forwarded: not-needed
 
---- a/dist/bin/h5ar
-+++ b/dist/bin/h5ar
+Index: libsis-jhdf5-java/dist/bin/h5ar
+===================================================================
+--- libsis-jhdf5-java.orig/dist/bin/h5ar
++++ libsis-jhdf5-java/dist/bin/h5ar
 @@ -1,23 +1,3 @@
  #! /bin/bash
  
diff --git a/debian/patches/avoid_using_private_hdf5_header.patch b/debian/patches/avoid_using_private_hdf5_header.patch
index 8f4c9ff..e9801a1 100644
--- a/debian/patches/avoid_using_private_hdf5_header.patch
+++ b/debian/patches/avoid_using_private_hdf5_header.patch
@@ -5,8 +5,10 @@ Author: Pierre Gruet <pgt@debian.org>
 Last-Update: 2020-04-26
 Forwarded: not-needed
 
---- a/source/c/jni/h5jni.h
-+++ b/source/c/jni/h5jni.h
+Index: libsis-jhdf5-java/source/c/jni/h5jni.h
+===================================================================
+--- libsis-jhdf5-java.orig/source/c/jni/h5jni.h
++++ libsis-jhdf5-java/source/c/jni/h5jni.h
 @@ -20,7 +20,54 @@
  #include <jni.h>
  #include "H5version.h"
diff --git a/debian/patches/closing_writer_in_tests.patch b/debian/patches/closing_writer_in_tests.patch
deleted file mode 100644
index 4102370..0000000
--- a/debian/patches/closing_writer_in_tests.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Description: properly closing files in two tests
-Author: Pierre Gruet <pgt@debian.org>
-Forwarded: brinn@ethz.ch
-Last-Update: 2020-10-16
-
---- a/sourceTest/java/ch/systemsx/cisd/hdf5/io/HDF5DataSetRandomAccessFileTest.java
-+++ b/sourceTest/java/ch/systemsx/cisd/hdf5/io/HDF5DataSetRandomAccessFileTest.java
-@@ -465,6 +465,7 @@
-         {
-             assertEquals(i, referenceArray[i], arrayRead[referenceArray.length + i]);
-         }
-+        writer.close();
-         raFile.close();
-     }
- 
-@@ -504,6 +505,7 @@
-         {
-             assertEquals(i, referenceArray[i], arrayRead[referenceArray.length + i]);
-         }
-+        writer.close();
-         raFile.close();
-     }
- 
diff --git a/debian/patches/declaring_final_variables.patch b/debian/patches/declaring_final_variables.patch
deleted file mode 100644
index 4c00673..0000000
--- a/debian/patches/declaring_final_variables.patch
+++ /dev/null
@@ -1,396 +0,0 @@
-Description: Adding final qualifier for some variables used by an inner class
-Author: Pierre Gruet <pgt@debian.org>
-Last-Update: 2020-05-12
-Forwarded: brinn@ethz.ch
-
---- a/source/java/ch/systemsx/cisd/hdf5/HDF5BaseWriter.java
-+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5BaseWriter.java
-@@ -1038,7 +1038,7 @@
-      */
-     HDF5DataSet createDataSet(final String objectPath, final long storageDataTypeId,
-             final HDF5AbstractStorageFeatures features, final long[] dimensions,
--            final long[] chunkSizeOrNull, int elementLength)
-+            final long[] chunkSizeOrNull, final int elementLength)
-     {
-         final ICallableWithCleanUp<HDF5DataSet> openDataSetCallable =
-                 new ICallableWithCleanUp<HDF5DataSet>()
---- a/source/java/ch/systemsx/cisd/hdf5/HDF5IntWriter.java
-+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5IntWriter.java
-@@ -281,7 +281,7 @@
-     }
- 
-     @Override
--    public void createArray(String objectPath, HDF5DataSetTemplate template)
-+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         assert objectPath != null;
- 
-@@ -659,7 +659,7 @@
-     }
- 
-     @Override
--    public void writeMDArray(String objectPath, MDIntArray data, HDF5DataSetTemplate template)
-+    public void writeMDArray(final String objectPath, final MDIntArray data, final HDF5DataSetTemplate template)
-     {
-         assert data != null;
-         baseWriter.checkOpen();
-@@ -787,7 +787,7 @@
-     }
- 
-     @Override
--    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
-+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         baseWriter.checkOpen();
-         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
-@@ -824,7 +824,7 @@
-     }
- 
-     @Override
--    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
-+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         baseWriter.checkOpen();
-         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
---- a/source/java/ch/systemsx/cisd/hdf5/HDF5ShortWriter.java
-+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5ShortWriter.java
-@@ -281,7 +281,7 @@
-     }
- 
-     @Override
--    public void createArray(String objectPath, HDF5DataSetTemplate template)
-+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         assert objectPath != null;
- 
-@@ -659,7 +659,7 @@
-     }
- 
-     @Override
--    public void writeMDArray(String objectPath, MDShortArray data, HDF5DataSetTemplate template)
-+    public void writeMDArray(final String objectPath, final MDShortArray data, final HDF5DataSetTemplate template)
-     {
-         assert data != null;
-         baseWriter.checkOpen();
-@@ -787,7 +787,7 @@
-     }
- 
-     @Override
--    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
-+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         baseWriter.checkOpen();
-         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
-@@ -824,7 +824,7 @@
-     }
- 
-     @Override
--    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
-+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         baseWriter.checkOpen();
-         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
---- a/source/java/ch/systemsx/cisd/hdf5/HDF5ByteWriter.java
-+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5ByteWriter.java
-@@ -281,7 +281,7 @@
-     }
- 
-     @Override
--    public void createArray(String objectPath, HDF5DataSetTemplate template)
-+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         assert objectPath != null;
- 
-@@ -659,7 +659,7 @@
-     }
- 
-     @Override
--    public void writeMDArray(String objectPath, MDByteArray data, HDF5DataSetTemplate template)
-+    public void writeMDArray(final String objectPath, final MDByteArray data, final HDF5DataSetTemplate template)
-     {
-         assert data != null;
-         baseWriter.checkOpen();
-@@ -787,7 +787,7 @@
-     }
- 
-     @Override
--    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
-+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         baseWriter.checkOpen();
-         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
-@@ -824,7 +824,7 @@
-     }
- 
-     @Override
--    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
-+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         baseWriter.checkOpen();
-         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
---- a/source/java/ch/systemsx/cisd/hdf5/HDF5FloatWriter.java
-+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5FloatWriter.java
-@@ -280,7 +280,7 @@
-     }
- 
-     @Override
--    public void createArray(String objectPath, HDF5DataSetTemplate template)
-+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         assert objectPath != null;
- 
-@@ -658,7 +658,7 @@
-     }
- 
-     @Override
--    public void writeMDArray(String objectPath, MDFloatArray data, HDF5DataSetTemplate template)
-+    public void writeMDArray(final String objectPath, final MDFloatArray data, final HDF5DataSetTemplate template)
-     {
-         assert data != null;
-         baseWriter.checkOpen();
-@@ -786,7 +786,7 @@
-     }
- 
-     @Override
--    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
-+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         baseWriter.checkOpen();
-         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
-@@ -823,7 +823,7 @@
-     }
- 
-     @Override
--    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
-+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         baseWriter.checkOpen();
-         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
---- a/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedByteWriter.java
-+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedByteWriter.java
-@@ -280,7 +280,7 @@
-     }
- 
-     @Override
--    public void createArray(String objectPath, HDF5DataSetTemplate template)
-+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         assert objectPath != null;
- 
-@@ -658,7 +658,7 @@
-     }
- 
-     @Override
--    public void writeMDArray(String objectPath, MDByteArray data, HDF5DataSetTemplate template)
-+    public void writeMDArray(final String objectPath, final MDByteArray data, final HDF5DataSetTemplate template)
-     {
-         assert data != null;
-         baseWriter.checkOpen();
-@@ -786,7 +786,7 @@
-     }
- 
-     @Override
--    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
-+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         baseWriter.checkOpen();
-         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
-@@ -823,7 +823,7 @@
-     }
- 
-     @Override
--    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
-+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         baseWriter.checkOpen();
-         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
---- a/source/java/ch/systemsx/cisd/hdf5/HDF5DoubleWriter.java
-+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5DoubleWriter.java
-@@ -280,7 +280,7 @@
-     }
- 
-     @Override
--    public void createArray(String objectPath, HDF5DataSetTemplate template)
-+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         assert objectPath != null;
- 
-@@ -658,7 +658,7 @@
-     }
- 
-     @Override
--    public void writeMDArray(String objectPath, MDDoubleArray data, HDF5DataSetTemplate template)
-+    public void writeMDArray(final String objectPath, final MDDoubleArray data, final HDF5DataSetTemplate template)
-     {
-         assert data != null;
-         baseWriter.checkOpen();
-@@ -786,7 +786,7 @@
-     }
- 
-     @Override
--    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
-+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         baseWriter.checkOpen();
-         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
-@@ -823,7 +823,7 @@
-     }
- 
-     @Override
--    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
-+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         baseWriter.checkOpen();
-         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
---- a/source/java/ch/systemsx/cisd/hdf5/HDF5LongWriter.java
-+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5LongWriter.java
-@@ -281,7 +281,7 @@
-     }
- 
-     @Override
--    public void createArray(String objectPath, HDF5DataSetTemplate template)
-+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         assert objectPath != null;
- 
-@@ -659,7 +659,7 @@
-     }
- 
-     @Override
--    public void writeMDArray(String objectPath, MDLongArray data, HDF5DataSetTemplate template)
-+    public void writeMDArray(final String objectPath, final MDLongArray data, final HDF5DataSetTemplate template)
-     {
-         assert data != null;
-         baseWriter.checkOpen();
-@@ -787,7 +787,7 @@
-     }
- 
-     @Override
--    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
-+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         baseWriter.checkOpen();
-         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
-@@ -824,7 +824,7 @@
-     }
- 
-     @Override
--    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
-+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         baseWriter.checkOpen();
-         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
---- a/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedShortWriter.java
-+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedShortWriter.java
-@@ -280,7 +280,7 @@
-     }
- 
-     @Override
--    public void createArray(String objectPath, HDF5DataSetTemplate template)
-+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         assert objectPath != null;
- 
-@@ -658,7 +658,7 @@
-     }
- 
-     @Override
--    public void writeMDArray(String objectPath, MDShortArray data, HDF5DataSetTemplate template)
-+    public void writeMDArray(final String objectPath, final MDShortArray data, final HDF5DataSetTemplate template)
-     {
-         assert data != null;
-         baseWriter.checkOpen();
-@@ -786,7 +786,7 @@
-     }
- 
-     @Override
--    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
-+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         baseWriter.checkOpen();
-         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
-@@ -823,7 +823,7 @@
-     }
- 
-     @Override
--    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
-+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         baseWriter.checkOpen();
-         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
---- a/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedIntWriter.java
-+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedIntWriter.java
-@@ -280,7 +280,7 @@
-     }
- 
-     @Override
--    public void createArray(String objectPath, HDF5DataSetTemplate template)
-+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         assert objectPath != null;
- 
-@@ -658,7 +658,7 @@
-     }
- 
-     @Override
--    public void writeMDArray(String objectPath, MDIntArray data, HDF5DataSetTemplate template)
-+    public void writeMDArray(final String objectPath, final MDIntArray data, final HDF5DataSetTemplate template)
-     {
-         assert data != null;
-         baseWriter.checkOpen();
-@@ -786,7 +786,7 @@
-     }
- 
-     @Override
--    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
-+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         baseWriter.checkOpen();
-         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
-@@ -823,7 +823,7 @@
-     }
- 
-     @Override
--    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
-+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         baseWriter.checkOpen();
-         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
---- a/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedLongWriter.java
-+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedLongWriter.java
-@@ -280,7 +280,7 @@
-     }
- 
-     @Override
--    public void createArray(String objectPath, HDF5DataSetTemplate template)
-+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         assert objectPath != null;
- 
-@@ -658,7 +658,7 @@
-     }
- 
-     @Override
--    public void writeMDArray(String objectPath, MDLongArray data, HDF5DataSetTemplate template)
-+    public void writeMDArray(final String objectPath, final MDLongArray data, final HDF5DataSetTemplate template)
-     {
-         assert data != null;
-         baseWriter.checkOpen();
-@@ -786,7 +786,7 @@
-     }
- 
-     @Override
--    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
-+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         baseWriter.checkOpen();
-         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
-@@ -823,7 +823,7 @@
-     }
- 
-     @Override
--    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
-+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
-     {
-         baseWriter.checkOpen();
-         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
diff --git a/debian/patches/loading_jni_in_java_file.patch b/debian/patches/loading_jni_in_java_file.patch
index e19de7a..4bc54dd 100644
--- a/debian/patches/loading_jni_in_java_file.patch
+++ b/debian/patches/loading_jni_in_java_file.patch
@@ -5,9 +5,11 @@ Author: Pierre Gruet <pgt@debian.org>
 Last-Update: 2020-05-07
 Forwarded: not-needed
 
---- a/source/java/ch/systemsx/cisd/hdf5/io/HDF5DataSetRandomAccessFile.java
-+++ b/source/java/ch/systemsx/cisd/hdf5/io/HDF5DataSetRandomAccessFile.java
-@@ -95,6 +95,7 @@
+Index: libsis-jhdf5-java/source/java/ch/systemsx/cisd/hdf5/io/HDF5DataSetRandomAccessFile.java
+===================================================================
+--- libsis-jhdf5-java.orig/source/java/ch/systemsx/cisd/hdf5/io/HDF5DataSetRandomAccessFile.java
++++ libsis-jhdf5-java/source/java/ch/systemsx/cisd/hdf5/io/HDF5DataSetRandomAccessFile.java
+@@ -95,6 +95,7 @@ public class HDF5DataSetRandomAccessFile
      {
          this(createHDF5ReaderOrWriter(hdf5File, readOnly), dataSetPath, creationStorageFeature,
                  size, opaqueTagOrNull, true);
@@ -15,7 +17,7 @@ Forwarded: not-needed
      }
  
      private static IHDF5Reader createHDF5ReaderOrWriter(File hdf5File, boolean readOnly)
-@@ -127,6 +128,7 @@
+@@ -127,6 +128,7 @@ public class HDF5DataSetRandomAccessFile
              HDF5GenericStorageFeatures creationStorageFeature, int size, String opaqueTagOrNull,
              boolean closeReaderOnCloseFile) throws IOExceptionUnchecked
      {
@@ -23,9 +25,11 @@ Forwarded: not-needed
          this.closeReaderOnCloseFile = closeReaderOnCloseFile;
          final boolean readOnly = (reader instanceof IHDF5Writer) == false;
          try
---- a/source/java/ch/systemsx/cisd/hdf5/BuildAndEnvironmentInfo.java
-+++ b/source/java/ch/systemsx/cisd/hdf5/BuildAndEnvironmentInfo.java
-@@ -26,7 +26,7 @@
+Index: libsis-jhdf5-java/source/java/ch/systemsx/cisd/hdf5/BuildAndEnvironmentInfo.java
+===================================================================
+--- libsis-jhdf5-java.orig/source/java/ch/systemsx/cisd/hdf5/BuildAndEnvironmentInfo.java
++++ libsis-jhdf5-java/source/java/ch/systemsx/cisd/hdf5/BuildAndEnvironmentInfo.java
+@@ -26,7 +26,7 @@ import ch.systemsx.cisd.base.utilities.A
   */
  public class BuildAndEnvironmentInfo extends AbstractBuildAndEnvironmentInfo
  {
@@ -34,9 +38,11 @@ Forwarded: not-needed
      
      public final static BuildAndEnvironmentInfo INSTANCE = new BuildAndEnvironmentInfo();
      
---- a/source/java/hdf/hdf5lib/H5.java
-+++ b/source/java/hdf/hdf5lib/H5.java
-@@ -235,7 +235,7 @@
+Index: libsis-jhdf5-java/source/java/hdf/hdf5lib/H5.java
+===================================================================
+--- libsis-jhdf5-java.orig/source/java/hdf/hdf5lib/H5.java
++++ libsis-jhdf5-java/source/java/hdf/hdf5lib/H5.java
+@@ -235,7 +235,7 @@ public class H5 implements java.io.Seria
          {
              return;
          }
diff --git a/debian/patches/series b/debian/patches/series
index 7977f2c..c21dc00 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -3,6 +3,4 @@ use_jaxb.patch
 avoid_using_private_hdf5_header.patch
 using_h5util_definitions.patch
 loading_jni_in_java_file.patch
-declaring_final_variables.patch
 adapting_h5ar_script_to_debian.patch
-closing_writer_in_tests.patch
diff --git a/debian/patches/use_debian_packaged_libs.patch b/debian/patches/use_debian_packaged_libs.patch
index aed11cd..6d79597 100644
--- a/debian/patches/use_debian_packaged_libs.patch
+++ b/debian/patches/use_debian_packaged_libs.patch
@@ -3,8 +3,10 @@ Last-Update: Mon, 13 Aug 2018 14:30:28 +0200
 Description: Use Debian packaged jars
 Forwarded: not-needed
 
---- a/.classpath
-+++ b/.classpath
+Index: libsis-jhdf5-java/.classpath
+===================================================================
+--- libsis-jhdf5-java.orig/.classpath
++++ libsis-jhdf5-java/.classpath
 @@ -4,18 +4,18 @@
  	<classpathentry kind="src" path="sourceExamples/java"/>
  	<classpathentry kind="src" path="sourceTest/java"/>
@@ -36,8 +38,10 @@ Forwarded: not-needed
 +	<classpathentry kind="lib" path="/usr/share/java/jaxb-core.jar"/>
  	<classpathentry kind="output" path="targets/classes"/>
  </classpath>
---- a/build.gradle
-+++ b/build.gradle
+Index: libsis-jhdf5-java/build.gradle
+===================================================================
+--- libsis-jhdf5-java.orig/build.gradle
++++ libsis-jhdf5-java/build.gradle
 @@ -3,8 +3,8 @@ apply from: 'javaproject.gradle'
  group='sis'
  
@@ -49,8 +53,10 @@ Forwarded: not-needed
  }
  
  tasks.withType(Test) {
---- a/javaproject.gradle
-+++ b/javaproject.gradle
+Index: libsis-jhdf5-java/javaproject.gradle
+===================================================================
+--- libsis-jhdf5-java.orig/javaproject.gradle
++++ libsis-jhdf5-java/javaproject.gradle
 @@ -180,7 +180,7 @@ test {
  }
  
diff --git a/debian/patches/use_jaxb.patch b/debian/patches/use_jaxb.patch
index 04c6c78..a506ce4 100644
--- a/debian/patches/use_jaxb.patch
+++ b/debian/patches/use_jaxb.patch
@@ -11,8 +11,10 @@ Description: It isn't missing, it's hidden by default to prepare its removal in
  Java 11 will soon be the default (maybe next week for the GA release?),
  so I recommend aiming for a long term solution.
 
---- a/source/java/ch/systemsx/cisd/hdf5/hdf5lib/HDFHelper.java
-+++ b/source/java/ch/systemsx/cisd/hdf5/hdf5lib/HDFHelper.java
+Index: libsis-jhdf5-java/source/java/ch/systemsx/cisd/hdf5/hdf5lib/HDFHelper.java
+===================================================================
+--- libsis-jhdf5-java.orig/source/java/ch/systemsx/cisd/hdf5/hdf5lib/HDFHelper.java
++++ libsis-jhdf5-java/source/java/ch/systemsx/cisd/hdf5/hdf5lib/HDFHelper.java
 @@ -32,7 +32,7 @@ import static hdf.hdf5lib.HDF5Constants.
  import static hdf.hdf5lib.HDF5Constants.H5_INDEX_NAME;
  import static hdf.hdf5lib.HDF5Constants.H5_ITER_INC;
diff --git a/debian/patches/using_h5util_definitions.patch b/debian/patches/using_h5util_definitions.patch
index e638738..8d87cb4 100644
--- a/debian/patches/using_h5util_definitions.patch
+++ b/debian/patches/using_h5util_definitions.patch
@@ -8,8 +8,10 @@ Author: Pierre Gruet <pgt@debian.org>
 Last-Update: 2020-04-26
 Forwarded: brinn@ethz.ch
 
---- a/source/c/h5lHelperImp.c
-+++ b/source/c/h5lHelperImp.c
+Index: libsis-jhdf5-java/source/c/h5lHelperImp.c
+===================================================================
+--- libsis-jhdf5-java.orig/source/c/h5lHelperImp.c
++++ libsis-jhdf5-java/source/c/h5lHelperImp.c
 @@ -17,6 +17,7 @@
  #include "hdf5.h"
  #include "H5Ppublic.h"
@@ -18,9 +20,11 @@ Forwarded: brinn@ethz.ch
  
  #include <jni.h>
  #include <stdlib.h>
---- a/source/c/jni/h5util.h
-+++ b/source/c/jni/h5util.h
-@@ -41,6 +41,7 @@
+Index: libsis-jhdf5-java/source/c/jni/h5util.h
+===================================================================
+--- libsis-jhdf5-java.orig/source/c/jni/h5util.h
++++ libsis-jhdf5-java/source/c/jni/h5util.h
+@@ -41,6 +41,7 @@ extern void    h5str_resize (h5str_t *st
  extern char*   h5str_append (h5str_t *str, const char* cstr);
  extern size_t  h5str_vlsprintf(h5str_t *str, hid_t container, hid_t tid, hvl_t *buf, int expand_data);
  extern size_t  h5str_sprintf(h5str_t *str, hid_t container, hid_t tid, void *buf, int ptrlen, int expand_data);
diff --git a/source/c/centos7build.README b/source/c/centos7build.README
new file mode 100644
index 0000000..8531a8d
--- /dev/null
+++ b/source/c/centos7build.README
@@ -0,0 +1,19 @@
+1. Install OpenJDK 1.8:
+   # yum install java-1.8.0-openjdk-headless.x86_64 java-1.8.0-openjdk-devel.x86_64
+
+2. Install devtoolset-7 from Scientific Linux:
+   # yum install centos-release-scl
+   # yum install devtoolset-7
+
+4. As build-user, enable devtoolset-7
+   $ scl enable devtoolset-7 bash
+
+5. Build HDF5:
+   $ ./compile_hdf5_linux_amd64.sh
+
+6. Build JHDF5:
+   $ ./compile_linux_amd64.sh
+
+7. If the build runs successful, you will find the file build/libjhdf5.so
+
+8. Copy build/libjhdf5.so to the Linux workspace folder libs/native/jhdf5/amd64-Linux/libjhdf5.so
diff --git a/source/java/ch/systemsx/cisd/hdf5/HDF5BaseWriter.java b/source/java/ch/systemsx/cisd/hdf5/HDF5BaseWriter.java
index 3df40a9..57dbd9e 100644
--- a/source/java/ch/systemsx/cisd/hdf5/HDF5BaseWriter.java
+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5BaseWriter.java
@@ -1038,7 +1038,7 @@ final class HDF5BaseWriter extends HDF5BaseReader
      */
     HDF5DataSet createDataSet(final String objectPath, final long storageDataTypeId,
             final HDF5AbstractStorageFeatures features, final long[] dimensions,
-            final long[] chunkSizeOrNull, int elementLength)
+            final long[] chunkSizeOrNull, final int elementLength)
     {
         final ICallableWithCleanUp<HDF5DataSet> openDataSetCallable =
                 new ICallableWithCleanUp<HDF5DataSet>()
diff --git a/source/java/ch/systemsx/cisd/hdf5/HDF5ByteWriter.java b/source/java/ch/systemsx/cisd/hdf5/HDF5ByteWriter.java
index 770fea2..2e139cd 100644
--- a/source/java/ch/systemsx/cisd/hdf5/HDF5ByteWriter.java
+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5ByteWriter.java
@@ -281,7 +281,7 @@ class HDF5ByteWriter extends HDF5ByteReader implements IHDF5ByteWriter
     }
 
     @Override
-    public void createArray(String objectPath, HDF5DataSetTemplate template)
+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         assert objectPath != null;
 
@@ -659,7 +659,7 @@ class HDF5ByteWriter extends HDF5ByteReader implements IHDF5ByteWriter
     }
 
     @Override
-    public void writeMDArray(String objectPath, MDByteArray data, HDF5DataSetTemplate template)
+    public void writeMDArray(final String objectPath, final MDByteArray data, final HDF5DataSetTemplate template)
     {
         assert data != null;
         baseWriter.checkOpen();
@@ -787,7 +787,7 @@ class HDF5ByteWriter extends HDF5ByteReader implements IHDF5ByteWriter
     }
 
     @Override
-    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
@@ -824,7 +824,7 @@ class HDF5ByteWriter extends HDF5ByteReader implements IHDF5ByteWriter
     }
 
     @Override
-    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
diff --git a/source/java/ch/systemsx/cisd/hdf5/HDF5DoubleWriter.java b/source/java/ch/systemsx/cisd/hdf5/HDF5DoubleWriter.java
index 2b28279..ac985e1 100644
--- a/source/java/ch/systemsx/cisd/hdf5/HDF5DoubleWriter.java
+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5DoubleWriter.java
@@ -280,7 +280,7 @@ class HDF5DoubleWriter extends HDF5DoubleReader implements IHDF5DoubleWriter
     }
 
     @Override
-    public void createArray(String objectPath, HDF5DataSetTemplate template)
+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         assert objectPath != null;
 
@@ -658,7 +658,7 @@ class HDF5DoubleWriter extends HDF5DoubleReader implements IHDF5DoubleWriter
     }
 
     @Override
-    public void writeMDArray(String objectPath, MDDoubleArray data, HDF5DataSetTemplate template)
+    public void writeMDArray(final String objectPath, final MDDoubleArray data, final HDF5DataSetTemplate template)
     {
         assert data != null;
         baseWriter.checkOpen();
@@ -786,7 +786,7 @@ class HDF5DoubleWriter extends HDF5DoubleReader implements IHDF5DoubleWriter
     }
 
     @Override
-    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
@@ -823,7 +823,7 @@ class HDF5DoubleWriter extends HDF5DoubleReader implements IHDF5DoubleWriter
     }
 
     @Override
-    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
diff --git a/source/java/ch/systemsx/cisd/hdf5/HDF5FloatWriter.java b/source/java/ch/systemsx/cisd/hdf5/HDF5FloatWriter.java
index d6011fc..017db73 100644
--- a/source/java/ch/systemsx/cisd/hdf5/HDF5FloatWriter.java
+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5FloatWriter.java
@@ -280,7 +280,7 @@ class HDF5FloatWriter extends HDF5FloatReader implements IHDF5FloatWriter
     }
 
     @Override
-    public void createArray(String objectPath, HDF5DataSetTemplate template)
+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         assert objectPath != null;
 
@@ -658,7 +658,7 @@ class HDF5FloatWriter extends HDF5FloatReader implements IHDF5FloatWriter
     }
 
     @Override
-    public void writeMDArray(String objectPath, MDFloatArray data, HDF5DataSetTemplate template)
+    public void writeMDArray(final String objectPath, final MDFloatArray data, final HDF5DataSetTemplate template)
     {
         assert data != null;
         baseWriter.checkOpen();
@@ -786,7 +786,7 @@ class HDF5FloatWriter extends HDF5FloatReader implements IHDF5FloatWriter
     }
 
     @Override
-    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
@@ -823,7 +823,7 @@ class HDF5FloatWriter extends HDF5FloatReader implements IHDF5FloatWriter
     }
 
     @Override
-    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
diff --git a/source/java/ch/systemsx/cisd/hdf5/HDF5IntWriter.java b/source/java/ch/systemsx/cisd/hdf5/HDF5IntWriter.java
index f3d2162..5798c41 100644
--- a/source/java/ch/systemsx/cisd/hdf5/HDF5IntWriter.java
+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5IntWriter.java
@@ -281,7 +281,7 @@ class HDF5IntWriter extends HDF5IntReader implements IHDF5IntWriter
     }
 
     @Override
-    public void createArray(String objectPath, HDF5DataSetTemplate template)
+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         assert objectPath != null;
 
@@ -659,7 +659,7 @@ class HDF5IntWriter extends HDF5IntReader implements IHDF5IntWriter
     }
 
     @Override
-    public void writeMDArray(String objectPath, MDIntArray data, HDF5DataSetTemplate template)
+    public void writeMDArray(final String objectPath, final MDIntArray data, final HDF5DataSetTemplate template)
     {
         assert data != null;
         baseWriter.checkOpen();
@@ -787,7 +787,7 @@ class HDF5IntWriter extends HDF5IntReader implements IHDF5IntWriter
     }
 
     @Override
-    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
@@ -824,7 +824,7 @@ class HDF5IntWriter extends HDF5IntReader implements IHDF5IntWriter
     }
 
     @Override
-    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
diff --git a/source/java/ch/systemsx/cisd/hdf5/HDF5LongWriter.java b/source/java/ch/systemsx/cisd/hdf5/HDF5LongWriter.java
index e6a4b96..8862329 100644
--- a/source/java/ch/systemsx/cisd/hdf5/HDF5LongWriter.java
+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5LongWriter.java
@@ -281,7 +281,7 @@ class HDF5LongWriter extends HDF5LongReader implements IHDF5LongWriter
     }
 
     @Override
-    public void createArray(String objectPath, HDF5DataSetTemplate template)
+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         assert objectPath != null;
 
@@ -659,7 +659,7 @@ class HDF5LongWriter extends HDF5LongReader implements IHDF5LongWriter
     }
 
     @Override
-    public void writeMDArray(String objectPath, MDLongArray data, HDF5DataSetTemplate template)
+    public void writeMDArray(final String objectPath, final MDLongArray data, final HDF5DataSetTemplate template)
     {
         assert data != null;
         baseWriter.checkOpen();
@@ -787,7 +787,7 @@ class HDF5LongWriter extends HDF5LongReader implements IHDF5LongWriter
     }
 
     @Override
-    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
@@ -824,7 +824,7 @@ class HDF5LongWriter extends HDF5LongReader implements IHDF5LongWriter
     }
 
     @Override
-    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
diff --git a/source/java/ch/systemsx/cisd/hdf5/HDF5ShortWriter.java b/source/java/ch/systemsx/cisd/hdf5/HDF5ShortWriter.java
index 51ab905..071d7c6 100644
--- a/source/java/ch/systemsx/cisd/hdf5/HDF5ShortWriter.java
+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5ShortWriter.java
@@ -281,7 +281,7 @@ class HDF5ShortWriter extends HDF5ShortReader implements IHDF5ShortWriter
     }
 
     @Override
-    public void createArray(String objectPath, HDF5DataSetTemplate template)
+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         assert objectPath != null;
 
@@ -659,7 +659,7 @@ class HDF5ShortWriter extends HDF5ShortReader implements IHDF5ShortWriter
     }
 
     @Override
-    public void writeMDArray(String objectPath, MDShortArray data, HDF5DataSetTemplate template)
+    public void writeMDArray(final String objectPath, final MDShortArray data, final HDF5DataSetTemplate template)
     {
         assert data != null;
         baseWriter.checkOpen();
@@ -787,7 +787,7 @@ class HDF5ShortWriter extends HDF5ShortReader implements IHDF5ShortWriter
     }
 
     @Override
-    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
@@ -824,7 +824,7 @@ class HDF5ShortWriter extends HDF5ShortReader implements IHDF5ShortWriter
     }
 
     @Override
-    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
diff --git a/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedByteWriter.java b/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedByteWriter.java
index b05f15a..1aa40d2 100644
--- a/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedByteWriter.java
+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedByteWriter.java
@@ -280,7 +280,7 @@ class HDF5UnsignedByteWriter extends HDF5UnsignedByteReader implements IHDF5Byte
     }
 
     @Override
-    public void createArray(String objectPath, HDF5DataSetTemplate template)
+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         assert objectPath != null;
 
@@ -658,7 +658,7 @@ class HDF5UnsignedByteWriter extends HDF5UnsignedByteReader implements IHDF5Byte
     }
 
     @Override
-    public void writeMDArray(String objectPath, MDByteArray data, HDF5DataSetTemplate template)
+    public void writeMDArray(final String objectPath, final MDByteArray data, final HDF5DataSetTemplate template)
     {
         assert data != null;
         baseWriter.checkOpen();
@@ -786,7 +786,7 @@ class HDF5UnsignedByteWriter extends HDF5UnsignedByteReader implements IHDF5Byte
     }
 
     @Override
-    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
@@ -823,7 +823,7 @@ class HDF5UnsignedByteWriter extends HDF5UnsignedByteReader implements IHDF5Byte
     }
 
     @Override
-    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
diff --git a/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedIntWriter.java b/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedIntWriter.java
index 30b99de..ce93f2f 100644
--- a/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedIntWriter.java
+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedIntWriter.java
@@ -280,7 +280,7 @@ class HDF5UnsignedIntWriter extends HDF5UnsignedIntReader implements IHDF5IntWri
     }
 
     @Override
-    public void createArray(String objectPath, HDF5DataSetTemplate template)
+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         assert objectPath != null;
 
@@ -658,7 +658,7 @@ class HDF5UnsignedIntWriter extends HDF5UnsignedIntReader implements IHDF5IntWri
     }
 
     @Override
-    public void writeMDArray(String objectPath, MDIntArray data, HDF5DataSetTemplate template)
+    public void writeMDArray(final String objectPath, final MDIntArray data, final HDF5DataSetTemplate template)
     {
         assert data != null;
         baseWriter.checkOpen();
@@ -786,7 +786,7 @@ class HDF5UnsignedIntWriter extends HDF5UnsignedIntReader implements IHDF5IntWri
     }
 
     @Override
-    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
@@ -823,7 +823,7 @@ class HDF5UnsignedIntWriter extends HDF5UnsignedIntReader implements IHDF5IntWri
     }
 
     @Override
-    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
diff --git a/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedLongWriter.java b/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedLongWriter.java
index b38aed9..f83fbdd 100644
--- a/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedLongWriter.java
+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedLongWriter.java
@@ -280,7 +280,7 @@ class HDF5UnsignedLongWriter extends HDF5UnsignedLongReader implements IHDF5Long
     }
 
     @Override
-    public void createArray(String objectPath, HDF5DataSetTemplate template)
+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         assert objectPath != null;
 
@@ -658,7 +658,7 @@ class HDF5UnsignedLongWriter extends HDF5UnsignedLongReader implements IHDF5Long
     }
 
     @Override
-    public void writeMDArray(String objectPath, MDLongArray data, HDF5DataSetTemplate template)
+    public void writeMDArray(final String objectPath, final MDLongArray data, final HDF5DataSetTemplate template)
     {
         assert data != null;
         baseWriter.checkOpen();
@@ -786,7 +786,7 @@ class HDF5UnsignedLongWriter extends HDF5UnsignedLongReader implements IHDF5Long
     }
 
     @Override
-    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
@@ -823,7 +823,7 @@ class HDF5UnsignedLongWriter extends HDF5UnsignedLongReader implements IHDF5Long
     }
 
     @Override
-    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
diff --git a/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedShortWriter.java b/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedShortWriter.java
index 918d420..bd83ceb 100644
--- a/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedShortWriter.java
+++ b/source/java/ch/systemsx/cisd/hdf5/HDF5UnsignedShortWriter.java
@@ -280,7 +280,7 @@ class HDF5UnsignedShortWriter extends HDF5UnsignedShortReader implements IHDF5Sh
     }
 
     @Override
-    public void createArray(String objectPath, HDF5DataSetTemplate template)
+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         assert objectPath != null;
 
@@ -658,7 +658,7 @@ class HDF5UnsignedShortWriter extends HDF5UnsignedShortReader implements IHDF5Sh
     }
 
     @Override
-    public void writeMDArray(String objectPath, MDShortArray data, HDF5DataSetTemplate template)
+    public void writeMDArray(final String objectPath, final MDShortArray data, final HDF5DataSetTemplate template)
     {
         assert data != null;
         baseWriter.checkOpen();
@@ -786,7 +786,7 @@ class HDF5UnsignedShortWriter extends HDF5UnsignedShortReader implements IHDF5Sh
     }
 
     @Override
-    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
@@ -823,7 +823,7 @@ class HDF5UnsignedShortWriter extends HDF5UnsignedShortReader implements IHDF5Sh
     }
 
     @Override
-    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
diff --git a/sourceTest/java/ch/systemsx/cisd/hdf5/io/HDF5DataSetRandomAccessFileTest.java b/sourceTest/java/ch/systemsx/cisd/hdf5/io/HDF5DataSetRandomAccessFileTest.java
index 5807f8b..be31491 100644
--- a/sourceTest/java/ch/systemsx/cisd/hdf5/io/HDF5DataSetRandomAccessFileTest.java
+++ b/sourceTest/java/ch/systemsx/cisd/hdf5/io/HDF5DataSetRandomAccessFileTest.java
@@ -465,6 +465,7 @@ public class HDF5DataSetRandomAccessFileTest
         {
             assertEquals(i, referenceArray[i], arrayRead[referenceArray.length + i]);
         }
+        writer.close();
         raFile.close();
     }
 
@@ -504,6 +505,7 @@ public class HDF5DataSetRandomAccessFileTest
         {
             assertEquals(i, referenceArray[i], arrayRead[referenceArray.length + i]);
         }
+        writer.close();
         raFile.close();
     }
 
diff --git a/sourceTest/java/ch/systemsx/cisd/hdf5/tools/HDF5PrimitiveWriter.java.templ b/sourceTest/java/ch/systemsx/cisd/hdf5/tools/HDF5PrimitiveWriter.java.templ
index 8104136..d784c89 100644
--- a/sourceTest/java/ch/systemsx/cisd/hdf5/tools/HDF5PrimitiveWriter.java.templ
+++ b/sourceTest/java/ch/systemsx/cisd/hdf5/tools/HDF5PrimitiveWriter.java.templ
@@ -280,7 +280,7 @@ class HDF5__Name__Writer extends HDF5__Name__Reader implements IHDF5__Name__Writ
     }
 
     @Override
-    public void createArray(String objectPath, HDF5DataSetTemplate template)
+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         assert objectPath != null;
 
@@ -658,7 +658,7 @@ class HDF5__Name__Writer extends HDF5__Name__Reader implements IHDF5__Name__Writ
     }
 
     @Override
-    public void writeMDArray(String objectPath, MD__Name__Array data, HDF5DataSetTemplate template)
+    public void writeMDArray(final String objectPath, final MD__Name__Array data, final HDF5DataSetTemplate template)
     {
         assert data != null;
         baseWriter.checkOpen();
@@ -786,7 +786,7 @@ class HDF5__Name__Writer extends HDF5__Name__Reader implements IHDF5__Name__Writ
     }
 
     @Override
-    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
@@ -823,7 +823,7 @@ class HDF5__Name__Writer extends HDF5__Name__Reader implements IHDF5__Name__Writ
     }
 
     @Override
-    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()
diff --git a/sourceTest/java/ch/systemsx/cisd/hdf5/tools/HDF5UnsignedPrimitiveWriter.java.templ b/sourceTest/java/ch/systemsx/cisd/hdf5/tools/HDF5UnsignedPrimitiveWriter.java.templ
index b860857..23089c2 100644
--- a/sourceTest/java/ch/systemsx/cisd/hdf5/tools/HDF5UnsignedPrimitiveWriter.java.templ
+++ b/sourceTest/java/ch/systemsx/cisd/hdf5/tools/HDF5UnsignedPrimitiveWriter.java.templ
@@ -280,7 +280,7 @@ class HDF5Unsigned__Name__Writer extends HDF5Unsigned__Name__Reader implements I
     }
 
     @Override
-    public void createArray(String objectPath, HDF5DataSetTemplate template)
+    public void createArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         assert objectPath != null;
 
@@ -658,7 +658,7 @@ class HDF5Unsigned__Name__Writer extends HDF5Unsigned__Name__Reader implements I
     }
 
     @Override
-    public void writeMDArray(String objectPath, MD__Name__Array data, HDF5DataSetTemplate template)
+    public void writeMDArray(final String objectPath, final MD__Name__Array data, final HDF5DataSetTemplate template)
     {
         assert data != null;
         baseWriter.checkOpen();
@@ -786,7 +786,7 @@ class HDF5Unsigned__Name__Writer extends HDF5Unsigned__Name__Reader implements I
     }
 
     @Override
-    public void createMDArray(String objectPath, HDF5DataSetTemplate template)
+    public void createMDArray(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<Void> createRunnable = new ICallableWithCleanUp<Void>()
@@ -823,7 +823,7 @@ class HDF5Unsigned__Name__Writer extends HDF5Unsigned__Name__Reader implements I
     }
 
     @Override
-    public HDF5DataSet createMDArrayAndOpen(String objectPath, HDF5DataSetTemplate template)
+    public HDF5DataSet createMDArrayAndOpen(final String objectPath, final HDF5DataSetTemplate template)
     {
         baseWriter.checkOpen();
         final ICallableWithCleanUp<HDF5DataSet> createRunnable = new ICallableWithCleanUp<HDF5DataSet>()