From 5ceaf920eccbf5176065b0deeb27b124b821db76 Mon Sep 17 00:00:00 2001
From: Dana Robinson <43805+derobins@users.noreply.github.com>
Date: Tue, 5 Jul 2022 16:55:18 -0700
Subject: VFD SWMR: Warning fixes and minor cleanup (#1847)

* Normalization with develop

* Moves remaining datatype code changes over from develop

* Cleanup in examples files

* Warning cleanup in VFD SWMR code

* Committing clang-format changes

* Warning cleanup

* Warning reduction

* More warning fixes

* Committing clang-format changes

* Even more warning reduction in the VFD SWMR tests

* More warning fixes in the VFD SWMR tests

* Even more VFD SWMR test warning fixes

* Last warning fixes in VFD SWMR

* Committing clang-format changes

* Minor things missed from develop

* Warning fixes from GitHub build failures

* Committing clang-format changes

* Fix for warning due to weird bit shift type promotion

* Yet another attempt at fixing the integral promotion warning

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
---
 .github/workflows/main.yml                 |   67 +-
 .github/workflows/pr-check.yml             |   67 +-
 config/cmake/H5pubconf.h.in                |    4 -
 config/cmake_ext_mod/ConfigureChecks.cmake |   49 -
 config/cmake_ext_mod/HDFTests.c            |   32 -
 configure.ac                               |   32 +-
 doxygen/dox/ReferenceManual.dox            |   21 +-
 doxygen/dox/high_level/extension.dox       |  657 +++
 doxygen/dox/high_level/high_level.dox      |   29 +
 doxygen/examples/H5DO_examples.c           |  220 +
 doxygen/examples/H5LDget_dset_elmts.c      |  143 +
 doxygen/examples/H5LT_examples.c           |   27 +
 doxygen/examples/H5TBAget_fill.c           |   43 +
 examples/credel.c                          |   45 +-
 examples/gaussians.c                       |   28 -
 fortran/test/tH5O_F03.F90                  |    1 -
 hl/src/H5DOpublic.h                        |  199 +
 hl/src/H5DSpublic.h                        |  362 +-
 hl/src/H5IMpublic.h                        |  293 ++
 hl/src/H5LDpublic.h                        |  141 +
 hl/src/H5LTpublic.h                        | 1398 +++++-
 hl/src/H5PTpublic.h                        |  416 ++
 hl/src/H5TBpublic.h                        |  539 +++
 src/H5Dint.c                               |    4 +-
 src/H5FD.c                                 |   40 +-
 src/H5FDint.c                              |   18 +
 src/H5FDvfd_swmr.c                         |    4 +-
 src/H5Fint.c                               |    7 +-
 src/H5Gname.c                              |    5 +-
 src/H5Gnode.c                              |    2 +
 src/H5Gobj.c                               |    8 +-
 src/H5Gtraverse.c                          |    5 +-
 src/H5HFcache.c                            |    5 +-
 src/H5Idbg.c                               |    2 +-
 src/H5Iint.c                               |   13 +-
 src/H5Lint.c                               |   10 +-
 src/H5Ocache.c                             |   18 +-
 src/H5Opline.c                             |   16 +-
 src/H5Pdcpl.c                              |  144 +-
 src/H5Pfapl.c                              |    7 +-
 src/H5Ppublic.h                            |    3 +
 src/H5SM.c                                 |    2 +-
 src/H5Shyper.c                             |    2 +-
 src/H5T.c                                  |   43 +-
 src/H5Tconv.c                              |   32 +-
 src/H5Tnative.c                            |  362 +-
 src/H5Tpkg.h                               |   37 +-
 src/H5Tref.c                               |   13 +-
 src/H5Tvlen.c                              |   16 +-
 src/H5detect.c                             |  687 +--
 test/cache.c                               | 6768 +++++++++++-----------------
 test/chunk_info.c                          |   96 +-
 test/objcopy_ref.c                         |    2 +
 test/page_buffer.c                         |   45 +-
 test/test_swmr.sh.in                       |   42 +-
 test/vfd_swmr.c                            |   39 +-
 test/vfd_swmr_attrdset_writer.c            |   99 +-
 test/vfd_swmr_bigset_writer.c              |  389 +-
 test/vfd_swmr_dsetchks_writer.c            |  107 +-
 test/vfd_swmr_dsetops_writer.c             |  102 +-
 test/vfd_swmr_gfail_writer.c               |  179 +-
 test/vfd_swmr_gperf_writer.c               |  197 +-
 test/vfd_swmr_group_writer.c               |  196 +-
 test/vfd_swmr_indep_rw_writer.c            |  194 +-
 test/vfd_swmr_sparse_writer.c              |    2 -
 test/vfd_swmr_vlstr_reader.c               |   99 +-
 test/vfd_swmr_vlstr_writer.c               |  146 +-
 test/vfd_swmr_zoo_writer.c                 |   73 +-
 testpar/t_prop.c                           |   12 +-
 tools/src/h5perf/perf.c                    |   13 +-
 tools/src/h5perf/pio_engine.c              |   11 +-
 tools/src/h5perf/sio_engine.c              |    2 +-
 72 files changed, 9070 insertions(+), 6061 deletions(-)
 create mode 100644 doxygen/dox/high_level/extension.dox
 create mode 100644 doxygen/dox/high_level/high_level.dox
 create mode 100644 doxygen/examples/H5DO_examples.c
 create mode 100644 doxygen/examples/H5LDget_dset_elmts.c
 create mode 100644 doxygen/examples/H5LT_examples.c
 create mode 100644 doxygen/examples/H5TBAget_fill.c

diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 3558460..93fdcaf 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -6,7 +6,8 @@ on:
   push:
     branches: [ develop, hdf5_1_12, hdf5_1_10, hdf5_1_8, feature/vfd_swmr]
     paths-ignore:
-    - '.github/**'
+    - '.github/CODEOWNERS'
+    - '.github/FUNDING.yml'
     - 'doc/**'
     - 'release_docs/**'
     - 'ACKNOWLEDGEMENTS'
@@ -20,7 +21,7 @@ jobs:
     strategy:
 #      fail-fast: false
       matrix:
-        name: ["Windows Latest MSVC", "Ubuntu Latest GCC", "Ubuntu Debug GCC", "macOS Latest Clang", "Ubuntu Autotools GCC", "Windows TS MSVC", "Ubuntu TS GCC", "TS Debug GCC", "macOS TS Clang", "TS Autotools GCC"]
+        name: ["Windows Latest MSVC", "Ubuntu Latest GCC", "Ubuntu Debug GCC", "macOS Latest Clang", "Ubuntu Autotools GCC", "Ubuntu Debug Autotools GCC", "-Werror Ubuntu Debug Autotools GCC", "Windows TS MSVC", "Ubuntu TS GCC", "TS Debug GCC", "macOS TS Clang", "TS Autotools GCC"]
         include:
           - name: "Windows Latest MSVC"
             artifact: "Windows-MSVC.tar.xz"
@@ -34,6 +35,7 @@ jobs:
             hl: ON
             parallel: OFF
             generator: "-G \"Visual Studio 17 2022\" -A x64"
+            flags: ""
           - name: "Ubuntu Latest GCC"
             artifact: "Linux.tar.xz"
             os: ubuntu-latest
@@ -46,6 +48,7 @@ jobs:
             parallel: OFF
             toolchain: "config/toolchain/GCC.cmake"
             generator: "-G Ninja"
+            flags: ""
           - name: "macOS Latest Clang"
             artifact: "macOS.tar.xz"
             os: macos-latest
@@ -58,6 +61,7 @@ jobs:
             parallel: OFF
             toolchain: "config/toolchain/clang.cmake"
             generator: "-G Ninja"
+            flags: ""
           - name: "Ubuntu Debug GCC"
             artifact: "LinuxDBG.tar.xz"
             os: ubuntu-latest
@@ -70,10 +74,24 @@ jobs:
             parallel: OFF
             toolchain: "config/toolchain/GCC.cmake"
             generator: "-G Ninja"
+            flags: ""
           - name: "Ubuntu Autotools GCC"
             artifact: "LinuxA.tar.xz"
             os: ubuntu-latest
-            build_type: "Release"
+            build_type: "production"
+            cpp: enable
+            fortran: enable
+            java: enable
+            ts: disable
+            hl: enable
+            parallel: disable
+            toolchain: ""
+            generator: "autogen"
+            flags: ""
+          - name: "Ubuntu Debug Autotools GCC"
+            artifact: "LinuxA.tar.xz"
+            os: ubuntu-latest
+            build_type: "debug"
             cpp: enable
             fortran: enable
             java: enable
@@ -82,6 +100,21 @@ jobs:
             parallel: disable
             toolchain: ""
             generator: "autogen"
+            flags: ""
+          # Build that ensures no new warnings sneak into the library.
+          - name: "-Werror Ubuntu Debug Autotools GCC"
+            artifact: "LinuxA.tar.xz"
+            os: ubuntu-latest
+            build_type: "debug"
+            cpp: disable
+            fortran: disable
+            java: disable
+            ts: disable
+            hl: enable
+            parallel: disable
+            toolchain: ""
+            generator: "autogen"
+            flags: "CFLAGS=-Werror"
 #  Threadsafe runs
           - name: "Windows TS MSVC"
             artifact: "Windows-MSVCTS.tar.xz"
@@ -95,6 +128,7 @@ jobs:
             hl: OFF
             parallel: OFF
             generator: "-G \"Visual Studio 16 2019\" -A x64"
+            flags: ""
           - name: "Ubuntu TS GCC"
             artifact: "LinuxTS.tar.xz"
             os: ubuntu-latest
@@ -107,6 +141,7 @@ jobs:
             parallel: OFF
             toolchain: "config/toolchain/GCC.cmake"
             generator: "-G Ninja"
+            flags: ""
           - name: "macOS TS Clang"
             artifact: "macOSTS.tar.xz"
             os: macos-latest
@@ -119,6 +154,7 @@ jobs:
             parallel: OFF
             toolchain: "config/toolchain/clang.cmake"
             generator: "-G Ninja"
+            flags: ""
           - name: "TS Debug GCC"
             artifact: "LinuxTSDBG.tar.xz"
             os: ubuntu-latest
@@ -131,10 +167,11 @@ jobs:
             parallel: OFF
             toolchain: "config/toolchain/GCC.cmake"
             generator: "-G Ninja"
+            flags: ""
           - name: "TS Autotools GCC"
             artifact: "LinuxATS.tar.xz"
             os: ubuntu-latest
-            build_type: "Release"
+            build_type: "production"
             cpp: disable
             fortran: disable
             java: disable
@@ -143,15 +180,7 @@ jobs:
             parallel: disable
             toolchain: ""
             generator: "autogen"
-#          - name: "Ubuntu Parallel GCC"
-#            artifact: "LinuxPar.tar.xz"
-#            os: ubuntu-latest
-#            build_type: "Release"
-#            cpp: OFF
-#            fortran: OFF
-#            parallel: ON
-#            toolchain: "config/toolchain/GCC.cmake"
-#            generator: "-G Ninja"
+            flags: ""
 
     name: ${{ matrix.name }}
     # The type of runner that the job will run on
@@ -164,7 +193,11 @@ jobs:
       run: sudo apt-get install ninja-build
       if: matrix.os == 'ubuntu-latest'
     - name: Install Autotools Dependencies (Linux)
-      run: sudo apt-get install automake autoconf libtool libtool-bin
+      run: |
+           sudo apt update
+           sudo apt install automake autoconf libtool libtool-bin
+           sudo apt install gcc-11 g++-11 gfortran-11
+           sudo apt install openmpi-bin openmpi-common
       if: matrix.generator == 'autogen'
     - name: Install Dependencies (Windows)
       run: choco install ninja
@@ -189,8 +222,12 @@ jobs:
         sh ./autogen.sh
         mkdir "${{ runner.workspace }}/build"
         cd "${{ runner.workspace }}/build"
-        $GITHUB_WORKSPACE/configure --enable-shared --${{ matrix.ts }}-threadsafe --${{ matrix.hl }}-hl --${{ matrix.parallel }}-parallel --${{ matrix.cpp }}-cxx --${{ matrix.fortran }}-fortran --${{ matrix.java }}-java
+        ${{ matrix.flags }} $GITHUB_WORKSPACE/configure --enable-build-mode=${{ matrix.build_type }} --enable-shared --${{ matrix.ts }}-threadsafe --${{ matrix.hl }}-hl --${{ matrix.parallel }}-parallel --${{ matrix.cpp }}-cxx --${{ matrix.fortran }}-fortran --${{ matrix.java }}-java
       shell: bash
+      env:
+        CC:   gcc-11
+        CXX:  g++-11
+        FC:   gfortran-11
 
     - name: Configure
       if: matrix.generator != 'autogen'
diff --git a/.github/workflows/pr-check.yml b/.github/workflows/pr-check.yml
index 65e0ffd..dc3367c 100644
--- a/.github/workflows/pr-check.yml
+++ b/.github/workflows/pr-check.yml
@@ -5,7 +5,8 @@ on:
   pull_request:
     branches: [ develop, hdf5_1_12, hdf5_1_10, hdf5_1_8, feature/vfd_swmr ]
     paths-ignore:
-    - '.github/**'
+    - '.github/CODEOWNERS'
+    - '.github/FUNDING.yml'
     - 'doc/**'
     - 'release_docs/**'
     - 'ACKNOWLEDGEMENTS'
@@ -19,7 +20,7 @@ jobs:
     strategy:
 #      fail-fast: false
       matrix:
-        name: ["Windows Latest MSVC", "Ubuntu Latest GCC", "Ubuntu Debug GCC", "macOS Latest Clang", "Ubuntu Autotools GCC", "Windows TS MSVC", "Ubuntu TS GCC", "TS Debug GCC", "macOS TS Clang", "TS Autotools GCC"]
+        name: ["Windows Latest MSVC", "Ubuntu Latest GCC", "Ubuntu Debug GCC", "macOS Latest Clang", "Ubuntu Autotools GCC", "Ubuntu Debug Autotools GCC", "-Werror Ubuntu Debug Autotools GCC", "Windows TS MSVC", "Ubuntu TS GCC", "TS Debug GCC", "macOS TS Clang", "TS Autotools GCC"]
         include:
           - name: "Windows Latest MSVC"
             artifact: "Windows-MSVC.tar.xz"
@@ -33,6 +34,7 @@ jobs:
             hl: ON
             parallel: OFF
             generator: "-G \"Visual Studio 17 2022\" -A x64"
+            flags: ""
           - name: "Ubuntu Latest GCC"
             artifact: "Linux.tar.xz"
             os: ubuntu-latest
@@ -45,6 +47,7 @@ jobs:
             parallel: OFF
             toolchain: "config/toolchain/GCC.cmake"
             generator: "-G Ninja"
+            flags: ""
           - name: "macOS Latest Clang"
             artifact: "macOS.tar.xz"
             os: macos-latest
@@ -57,6 +60,7 @@ jobs:
             parallel: OFF
             toolchain: "config/toolchain/clang.cmake"
             generator: "-G Ninja"
+            flags: ""
           - name: "Ubuntu Debug GCC"
             artifact: "LinuxDBG.tar.xz"
             os: ubuntu-latest
@@ -69,10 +73,24 @@ jobs:
             parallel: OFF
             toolchain: "config/toolchain/GCC.cmake"
             generator: "-G Ninja"
+            flags: ""
           - name: "Ubuntu Autotools GCC"
             artifact: "LinuxA.tar.xz"
             os: ubuntu-latest
-            build_type: "Release"
+            build_type: "production"
+            cpp: enable
+            fortran: enable
+            java: enable
+            ts: disable
+            hl: enable
+            parallel: disable
+            toolchain: ""
+            generator: "autogen"
+            flags: ""
+          - name: "Ubuntu Debug Autotools GCC"
+            artifact: "LinuxA.tar.xz"
+            os: ubuntu-latest
+            build_type: "debug"
             cpp: enable
             fortran: enable
             java: enable
@@ -81,6 +99,21 @@ jobs:
             parallel: disable
             toolchain: ""
             generator: "autogen"
+            flags: ""
+          # Build that ensures no new warnings sneak into the library.
+          - name: "-Werror Ubuntu Debug Autotools GCC"
+            artifact: "LinuxDBG.tar.xz"
+            os: ubuntu-latest
+            build_type: "debug"
+            cpp: disable
+            fortran: disable
+            java: disable
+            ts: disable
+            hl: enable
+            parallel: disable
+            toolchain: ""
+            generator: "autogen"
+            flags: "CFLAGS=-Werror"
 #  Threadsafe runs
           - name: "Windows TS MSVC"
             artifact: "Windows-MSVCTS.tar.xz"
@@ -94,6 +127,7 @@ jobs:
             hl: OFF
             parallel: OFF
             generator: "-G \"Visual Studio 16 2019\" -A x64"
+            flags: ""
           - name: "Ubuntu TS GCC"
             artifact: "LinuxTS.tar.xz"
             os: ubuntu-latest
@@ -106,6 +140,7 @@ jobs:
             parallel: OFF
             toolchain: "config/toolchain/GCC.cmake"
             generator: "-G Ninja"
+            flags: ""
           - name: "macOS TS Clang"
             artifact: "macOSTS.tar.xz"
             os: macos-latest
@@ -118,6 +153,7 @@ jobs:
             parallel: OFF
             toolchain: "config/toolchain/clang.cmake"
             generator: "-G Ninja"
+            flags: ""
           - name: "TS Debug GCC"
             artifact: "LinuxTSDBG.tar.xz"
             os: ubuntu-latest
@@ -130,10 +166,11 @@ jobs:
             parallel: OFF
             toolchain: "config/toolchain/GCC.cmake"
             generator: "-G Ninja"
+            flags: ""
           - name: "TS Autotools GCC"
             artifact: "LinuxATS.tar.xz"
             os: ubuntu-latest
-            build_type: "Release"
+            build_type: "production"
             cpp: disable
             fortran: disable
             java: disable
@@ -142,15 +179,7 @@ jobs:
             parallel: disable
             toolchain: ""
             generator: "autogen"
-#          - name: "Ubuntu Parallel GCC"
-#            artifact: "LinuxPar.tar.xz"
-#            os: ubuntu-latest
-#            build_type: "Release"
-#            cpp: OFF
-#            fortran: OFF
-#            parallel: ON
-#            toolchain: "config/toolchain/GCC.cmake"
-#            generator: "-G Ninja"
+            flags: ""
 
     name: ${{ matrix.name }}
     # The type of runner that the job will run on
@@ -163,7 +192,11 @@ jobs:
       run: sudo apt-get install ninja-build
       if: matrix.os == 'ubuntu-latest'
     - name: Install Autotools Dependencies (Linux)
-      run: sudo apt-get install automake autoconf libtool libtool-bin
+      run: |
+           sudo apt update
+           sudo apt install automake autoconf libtool libtool-bin
+           sudo apt install gcc-11 g++-11 gfortran-11
+           sudo apt install openmpi-bin openmpi-common
       if: matrix.generator == 'autogen'
     - name: Install Dependencies (Windows)
       run: choco install ninja
@@ -188,8 +221,12 @@ jobs:
         sh ./autogen.sh
         mkdir "${{ runner.workspace }}/build"
         cd "${{ runner.workspace }}/build"
-        $GITHUB_WORKSPACE/configure --enable-shared --${{ matrix.ts }}-threadsafe --${{ matrix.hl }}-hl --${{ matrix.parallel }}-parallel --${{ matrix.cpp }}-cxx --${{ matrix.fortran }}-fortran --${{ matrix.java }}-java
+        ${{ matrix.flags }} $GITHUB_WORKSPACE/configure --enable-build-mode=${{ matrix.build_type }} --enable-shared --${{ matrix.ts }}-threadsafe --${{ matrix.hl }}-hl --${{ matrix.parallel }}-parallel --${{ matrix.cpp }}-cxx --${{ matrix.fortran }}-fortran --${{ matrix.java }}-java
       shell: bash
+      env:
+        CC:   gcc-11
+        CXX:  g++-11
+        FC:   gfortran-11
 
     - name: Configure
       if: matrix.generator != 'autogen'
diff --git a/config/cmake/H5pubconf.h.in b/config/cmake/H5pubconf.h.in
index cb751ac..f322810 100644
--- a/config/cmake/H5pubconf.h.in
+++ b/config/cmake/H5pubconf.h.in
@@ -98,10 +98,6 @@
 /* Define if the __attribute__(()) extension is present */
 #cmakedefine H5_HAVE_ATTRIBUTE @H5_HAVE_ATTRIBUTE@
 
-/* Define if the compiler understands C99 designated initialization of structs
-   and unions */
-#cmakedefine H5_HAVE_C99_DESIGNATED_INITIALIZER @H5_HAVE_C99_DESIGNATED_INITIALIZER@
-
 /* Define to 1 if you have the `clock_gettime' function. */
 #cmakedefine H5_HAVE_CLOCK_GETTIME @H5_HAVE_CLOCK_GETTIME@
 
diff --git a/config/cmake_ext_mod/ConfigureChecks.cmake b/config/cmake_ext_mod/ConfigureChecks.cmake
index f260167..8fe329f 100644
--- a/config/cmake_ext_mod/ConfigureChecks.cmake
+++ b/config/cmake_ext_mod/ConfigureChecks.cmake
@@ -495,7 +495,6 @@ endif ()
 if (MINGW OR NOT WINDOWS)
   foreach (other_test
       HAVE_ATTRIBUTE
-      HAVE_C99_DESIGNATED_INITIALIZER
       SYSTEM_SCOPE_THREADS
       HAVE_SOCKLEN_T
   )
@@ -565,54 +564,6 @@ if (WINDOWS)
   endif ()
 endif ()
 
-#-----------------------------------------------------------------------------
-# Check how to print a Long Long integer
-#-----------------------------------------------------------------------------
-if (NOT ${HDF_PREFIX}_PRINTF_LL_WIDTH OR ${HDF_PREFIX}_PRINTF_LL_WIDTH MATCHES "unknown")
-  set (PRINT_LL_FOUND 0)
-  if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0")
-    message (VERBOSE "Checking for appropriate format for 64 bit long:")
-  endif ()
-  set (CURRENT_TEST_DEFINITIONS "-DPRINTF_LL_WIDTH")
-  if (${HDF_PREFIX}_SIZEOF_LONG_LONG)
-    set (CURRENT_TEST_DEFINITIONS "${CURRENT_TEST_DEFINITIONS} -DHAVE_LONG_LONG")
-  endif ()
-  TRY_RUN (${HDF_PREFIX}_PRINTF_LL_TEST_RUN   ${HDF_PREFIX}_PRINTF_LL_TEST_COMPILE
-      ${CMAKE_BINARY_DIR}
-      ${HDF_RESOURCES_EXT_DIR}/HDFTests.c
-      COMPILE_DEFINITIONS "${CURRENT_TEST_DEFINITIONS}"
-      RUN_OUTPUT_VARIABLE OUTPUT
-  )
-  if (${HDF_PREFIX}_PRINTF_LL_TEST_COMPILE)
-    if (${HDF_PREFIX}_PRINTF_LL_TEST_RUN MATCHES 0)
-      string(REGEX REPLACE ".*PRINTF_LL_WIDTH=\\[(.*)\\].*" "\\1" ${HDF_PREFIX}_PRINTF_LL "${OUTPUT}")
-      set (${HDF_PREFIX}_PRINTF_LL_WIDTH "\"${${HDF_PREFIX}_PRINTF_LL}\"" CACHE INTERNAL "Width for printf for type `long long' or `__int64', us. `ll")
-      set (PRINT_LL_FOUND 1)
-    else ()
-      if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0")
-        message (VERBOSE "Width test failed with result: ${${HDF_PREFIX}_PRINTF_LL_TEST_RUN}")
-      endif ()
-    endif ()
-  else ()
-    file (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log
-        "Test ${HDF_PREFIX}_PRINTF_LL_WIDTH failed\n"
-    )
-  endif ()
-
-  if (PRINT_LL_FOUND)
-    if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0")
-      message (VERBOSE "Checking for appropriate format for 64 bit long: found ${${HDF_PREFIX}_PRINTF_LL_WIDTH}")
-    endif ()
-  else ()
-    if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0")
-      message (VERBOSE "Checking for appropriate format for 64 bit long: not found")
-    endif ()
-    set (${HDF_PREFIX}_PRINTF_LL_WIDTH "\"unknown\"" CACHE INTERNAL
-        "Width for printf for type `long long' or `__int64', us. `ll"
-    )
-  endif ()
-endif ()
-
 # ----------------------------------------------------------------------
 # Set the flag to indicate that the machine can handle converting
 # denormalized floating-point values.
diff --git a/config/cmake_ext_mod/HDFTests.c b/config/cmake_ext_mod/HDFTests.c
index 16686ba..66b9bf6 100644
--- a/config/cmake_ext_mod/HDFTests.c
+++ b/config/cmake_ext_mod/HDFTests.c
@@ -11,38 +11,6 @@
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 #define SIMPLE_TEST(x) int main(){ x; return 0; }
 
-#ifdef HAVE_C99_DESIGNATED_INITIALIZER
-
-#ifdef FC_DUMMY_MAIN
-#ifndef FC_DUMMY_MAIN_EQ_F77
-#  ifdef __cplusplus
-extern "C"
-#  endif
-int FC_DUMMY_MAIN()
-{ return 1;}
-#endif
-#endif
-int
-main ()
-{
-
-  typedef struct
-  {
-    int x;
-    union
-    {
-      int i;
-      double d;
-    }u;
-  }di_struct_t;
-  di_struct_t x =
-  { 0,
-    { .d = 0.0}};
-  ;
-  return 0;
-}
-
-#endif
 
 #ifdef HAVE_ATTRIBUTE
 
diff --git a/configure.ac b/configure.ac
index bc2ab41..7c5849a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -160,6 +160,8 @@ AM_JNIFLAGS="${AM_JNIFLAGS}"
 AM_JAVACFLAGS="${AM_JAVACFLAGS}"
 AM_JAVAFLAGS="${AM_JAVAFLAGS}"
 AM_LDFLAGS="${AM_LDFLAGS}"
+
+## Flags passed in by the user
 CFLAGS="${CFLAGS}"
 CXXFLAGS="${CXXFLAGS}"
 FCFLAGS="${FCFLAGS}"
@@ -181,6 +183,14 @@ saved_user_JAVAFLAGS="$JAVAFLAGS"
 saved_user_LDFLAGS="$LDFLAGS"
 saved_user_CPPFLAGS="$CPPFLAGS"
 
+## Strip out -Werror from CFLAGS since that can cause checks to fail when
+## compiling the test program fails due to warnings
+CFLAGS="`echo $CFLAGS | sed -e 's/-Werror//g'`"
+CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Werror//g'`"
+FCFLAGS="`echo $FCFLAGS | sed -e 's/-Werror//g'`"
+JAVACFLAGS="`echo $JAVACFLAGS | sed -e 's/-Werror//g'`"
+CPPFLAGS="`echo $CPPFLAGS | sed -e 's/-Werror//g'`"
+
 ## Support F9X variable to define Fortran compiler if FC variable is
 ## not used.  This should be deprecated in the future.
 if test "x" = "x$FC"; then
@@ -782,7 +792,7 @@ HDF_CXX=no
 ## AC_PROG_CXX defines some macros that Automake 1.9.x uses and will
 ## miss even if c++ is not enabled.
 AC_PROG_CXX
-AC_PROG_CXXCPP    ## this is checked for when AC_HEADER_STDC is done
+AC_PROG_CXXCPP
 
 AC_MSG_CHECKING([if c++ interface enabled])
 
@@ -907,7 +917,7 @@ esac
 
 ## ----------------------------------------------------------------------
 ## Check which archiving tool to use. This needs to be done before
-## the AM_PROG_LIBTOOL macro.
+## the LT_INIT macro.
 ##
 if test -z "$AR"; then
   AC_CHECK_PROGS([AR], [ar xar], [:], [$PATH])
@@ -1326,7 +1336,8 @@ esac
 ## Windows
 case "`uname`" in
   MINGW*)
-    AC_HAVE_LIBRARY([ws2_32])
+    # The Winsock library
+    AC_CHECK_LIB([ws2_32], [GetUserName])
     ;;
 esac
 
@@ -2100,21 +2111,6 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[int __attribute__((unused)) x]])],
                  AC_MSG_RESULT([yes])],
                [AC_MSG_RESULT([no])])
 
-AC_MSG_CHECKING([for C99 designated initialization support])
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
-                typedef struct {
-                    int x;
-                    union {
-                        int i;
-                        double d;
-                    } u;
-                } di_struct_t;
-                di_struct_t x = {0, { .d = 0.0}}; ]])],
-               [AC_DEFINE([HAVE_C99_DESIGNATED_INITIALIZER], [1],
-                         [Define if the compiler understands C99 designated initialization of structs and unions])
-                 AC_MSG_RESULT([yes])],
-               [AC_MSG_RESULT([no])])
-
 ## ----------------------------------------------------------------------
 ## Remove old ways of determining debug/production build.
 ## These were used in 1.8.x and earlier. We should probably keep these checks
diff --git a/doxygen/dox/ReferenceManual.dox b/doxygen/dox/ReferenceManual.dox
index 4ce36e8..bc5a544 100644
--- a/doxygen/dox/ReferenceManual.dox
+++ b/doxygen/dox/ReferenceManual.dox
@@ -33,19 +33,26 @@ The functions provided by the HDF5 C-API are grouped into the following
 \li Functions with \ref ASYNC "asynchronous variants"
 \li \ref api-compat-macros
 \li <a href="./deprecated.html">Deprecated functions</a>
-\li High-level Extensions
+\li \ref high_level
     <ul>
-    <li><a href="https://portal.hdfgroup.org/display/HDF5/Lite">\Bold{HDF5 Lite} (H5LT)</a></li>
-    <li><a href="https://portal.hdfgroup.org/display/HDF5/Images">\Bold{HDF5 Image} (H5IM)</a></li>
-    <li><a href="https://portal.hdfgroup.org/display/HDF5/Tables">\Bold{HDF5 Table} (H5TB)</a></li>
-    <li><a href="https://portal.hdfgroup.org/display/HDF5/Packet+Tables">\Bold{HDF5 Packet Table} (H5TB)</a></li>
-    <li><a href="https://portal.hdfgroup.org/display/HDF5/Dimension+Scales">\Bold{HDF5 Dimension Scale} (H5DS)</a></li>
+    <li>\ref H5LT "Lite (H5LT, H5LD)"
+    <li>\ref H5IM "Images (H5IM)"
+    <li>\ref H5TB "Table (H5TB)"
+    <li>\ref H5PT "Packet Table (H5PT)"
+    <li>\ref H5DS "Dimension Scale (H5DS)"
+    <li>\ref H5DO "Optimizations (H5DO)"
+    <li>\ref H5LR "Extensions (H5LR, H5LT)"
     </ul>
 </td></tr>
 <tr><td colspan="3" style="border: none;">
-\ref H5 \ref H5A \ref H5D \ref H5E \ref H5ES \ref H5F \ref H5G \ref H5I \ref H5L
+\a Core \a library: \ref H5 \ref H5A \ref H5D \ref H5E \ref H5ES \ref H5F \ref H5G \ref H5I \ref H5L
 \ref H5M \ref H5O \ref H5P \ref H5PL \ref H5R \ref H5S \ref H5T \ref H5VL \ref H5Z
 </td></tr>
+
+<tr><td colspan="3" style="border: none;">
+\a High-level \a library: \ref H5LT \ref H5IM \ref H5TB \ref H5PT \ref H5DS \ref H5DO \ref H5LR
+</td></tr>
+
 </table>
 
 </td></tr>
diff --git a/doxygen/dox/high_level/extension.dox b/doxygen/dox/high_level/extension.dox
new file mode 100644
index 0000000..1481bdd
--- /dev/null
+++ b/doxygen/dox/high_level/extension.dox
@@ -0,0 +1,657 @@
+/** \defgroup H5LR Extensions
+ *
+ * <em>Working with region references, hyperslab selections, 
+ * and bit-fields (H5LR, H5LT)</em>
+ *
+ * The following reference manual entries describe high-level HDF5 C and Fortran APIs 
+ * for working with region references, hyperslab selections, and bit-fields. 
+ * These functions were created as part of a project supporting 
+ * NPP/NPOESS Data Production and Exploitation (
+ * <a href="https://support.hdfgroup.org/projects/jpss/documentation">
+ * project </a>, 
+ * <a href="https://gamma.hdfgroup.org/ftp/pub/outgoing/NPOESS/source">
+ * software </a>). 
+ * While they were written to facilitate access to NPP, NPOESS, and JPSS 
+ * data in the HDF5 format, these functions may be useful to anyone working 
+ * with region references, hyperslab selections, or bit-fields.
+ *
+ * Note that these functions are not part of the standard HDF5 distribution; 
+ * the 
+ * <a href="https://gamma.hdfgroup.org/ftp/pub/outgoing/NPOESS/source">
+ * software </a> 
+ * must be separately downloaded and installed.
+ *
+ * A comprehensive guide to this library, 
+ * <a href="https://support.hdfgroup.org/projects/jpss/documentation/HL/UG/NPOESS_HL-UG.pdf"> 
+ * <em>User Guide to the HDF5 High-level Library for Handling Region References and Hyperslab Selections</em></a>
+ * is available at 
+ * https://support.hdfgroup.org/projects/jpss/documentation/HL/UG/NPOESS_HL-UG.pdf.
+ *
+ * - \ref H5LRcopy_reference
+ *        \n Copies data from the specified dataset to a new location and 
+ *        creates a reference to it.
+ * - \ref H5LRcopy_region
+ *        \n  Copies data from a referenced region to a region in a 
+ *        destination dataset.
+ * - \ref H5LRcreate_ref_to_all
+ *        \n  Creates a dataset with the region references to the data in all 
+ *        datasets located under a specified group in a file or creates a 
+ *        dataset with object references to all objects (groups or datasets) 
+ *        located under a specified group in a file.
+ * - \ref H5LRcreate_region_references
+ *        \n Creates an array of region references using an array of paths to 
+ *        datasets and an array of corresponding hyperslab descriptions.
+ * - \ref H5LRget_region_info
+ *        \n Retrieves information about the data a region reference points to.
+ * - \ref H5LRmake_dataset
+ *        \n Creates and writes a dataset containing a list of 
+ *        region references.
+ * - \ref H5LRread_region
+ *        \n  Retrieves raw data pointed to by a region reference to 
+ *        an application buffer.
+ * - \ref H5LTcopy_region
+ *        \n Copies data from a specified region in a source dataset 
+ *        to a specified region in a destination dataset.
+ * - \ref H5LTread_bitfield_value
+ *        \n Retrieves the values of quality flags for each element 
+ *        to the application provided buffer.
+ * - \ref H5LTread_region
+ *        \n Reads selected data to an application buffer.
+ * .
+ */
+
+/*-------------------------------------------------------------------------
+ *
+ * Make dataset functions
+ *
+ *-------------------------------------------------------------------------
+ */
+
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5LR
+ *
+ * \brief Creates and writes a dataset containing a list of region references.
+ *
+ * \fgdta_loc_id
+ * \param[in] path          Path to the dataset being created
+ * \param[in] type_id       Datatype of the dataset
+ * \param[in] buf_size      Size of the \p loc_id_ref and \p buf arrays
+ * \param[in] loc_id_ref    Array of object identifiers; each identifier 
+ *                          describes to which HDF5 file the corresponding 
+ *                          region reference belongs to
+ * \param[in] buf           Array of region references
+ *
+ * \return \herr_t
+ *
+ * \details Given an array of size \p buf_size of region references \p buf, 
+ *          the function will create a dataset with path \p path, at location 
+ *          specified by \p loc_id and of a datatype specified by \p type_id, 
+ *          and will write data associated with each region reference in the order 
+ *          corresponding to the order of the region references in the buffer. 
+ *          It is assumed that all referenced hyperslabs have the same dimensionality, 
+ *          and only the size of the slowest changing dimension may differ. 
+ *          Each reference in the \p buf array belongs to the file identified 
+ *          by the corresponding object identifiers in the array \p loc_id_ref.
+ *
+ *          If \p path does not exist in \p loc_id then the function will 
+ *          create the path specified by \p path automatically.
+ *
+ * \version 1.1 Fortran wrapper introduced in this release.
+ *
+ * \since 1.0
+ *
+ */
+H5_HLRDLL herr_t H5LRmake_dataset(hid_t loc_id,
+				 const char *path, 
+				 hid_t type_id, const size_t buf_size,
+				 const hid_t *loc_id_ref,
+				 const hdset_reg_ref_t *buf);
+
+/*-------------------------------------------------------------------------
+ *
+ * Make and manipulate dataset region references functions
+ *
+ *-------------------------------------------------------------------------
+ */
+
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5LR
+ *
+ * \brief Creates an array of region references using an array of paths to 
+ *        datasets and an array of corresponding hyperslab descriptions.
+ *
+ * \param[in] obj_id        File identifier for the HDF5 file containing
+ *                          the referenced regions or an object identifier
+ *                          for any object in that file
+ * \param[in] num_elem      Number of elements in the \p path and 
+ *                          \p buf arrays
+ * \param[in] path          Array of pointers to strings, which contain 
+ *                          the paths to the target datasets for the 
+ *                          region references
+ * \param[in] block_coord   Array of hyperslab coordinate
+ * \param[out] buf          Buffer for returning an array of region 
+ *                          references
+ *
+ * \return \herr_t
+ *
+ * \note    **Motivation:**
+ * \note    H5LRcreate_region_references() is useful when creating 
+ *          large numbers of similar region references.
+ *
+ * \details H5LRcreate_region_references() creates a list of region references 
+ *          given an array of paths to datasets and another array listing the 
+ *          corner coordinates of the corresponding hyperslabs.
+ *
+ *          \p path parameter is an array of pointers to strings.
+ *
+ *          \p num_elem specifies the number of region references to be created, 
+ *          thus specifying the size of the \p path and \p _buf arrays.
+ *
+ *          Buffer \p block_coord has size 2*rank and is the coordinates of the 
+ *          starting point following by the coordinates of the ending point of 
+ *          the hyperslab, repeated \p num_elem times for each hyperslab. 
+ *          For example, creating two region references to two hyperslabs, 
+ *          one with a rectangular hyperslab region starting at element (2,2) 
+ *          to element (5,4) and the second rectangular region starting at 
+ *          element (7,7) to element (9,10), results in \p block_coord 
+ *          being {2,2,5,4, 7,7,9,10}.
+ *
+ *          The rank of the hyperslab will be the same as the rank of the 
+ *          target dataset. H5LRcreate_region_references() will retrieve 
+ *          the rank for each dataset and will use those values to interpret 
+ *          the values in the buffer. Please note that rank may vary from one 
+ *          dataset to another.
+ *
+ * \version 1.1 Fortran wrapper introduced in this release.
+ *
+ * \since 1.0
+ *
+ */
+H5_HLRDLL herr_t H5LRcreate_region_references(hid_t obj_id,
+					     size_t num_elem,
+					     const char **path,
+					     const hsize_t *block_coord,
+					     hdset_reg_ref_t *buf);
+
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5LR
+ *
+ * \brief Copies data from the specified dataset to a new location and 
+ *        creates a reference to it.
+ *
+ * \param[in] obj_id        Identifier of any object in a file an 
+ *                          HDF5 reference belongs to
+ * \param[in] ref           Reference to the datasets region
+ * \param[in] file          Name of the destination file 
+ * \param[in] path          Full path to the destination dataset
+ * \param[in] block_coord   Hyperslab coordinates in the destination 
+ *                          dataset
+ * \param[out] ref_new      Region reference to the new location of 
+ *                          data
+ *
+ * \return \herr_t
+ *
+ * \details Given a data set pointed to by a region reference, the function 
+ *          H5LRcopy_reference() will copy the hyperslab data referenced by 
+ *          a datasets region reference into existing dataset specified by 
+ *          its path \p path in the file with the name \p file, and to location 
+ *          specified by the hyperslab coordinates \p block_coord. It will 
+ *          create the region reference \p ref_new to point to the new location. 
+ *          The number of elements in the old and newly specified regions has 
+ *          to be the same.
+ *
+ *          Buffer \p block_coord has size 2*rank and is the coordinates of 
+ *          the starting point following by the coordinates of the ending 
+ *          point of the hyperslab. For example, to extract a rectangular 
+ *          hyperslab region starting at element (2,2) to element (5,4) 
+ *          then \p block_coord would be {2, 2, 5, 4}.
+ *
+ * \version 1.1 Fortran wrapper introduced in this release.
+ *
+ * \since 1.0
+ *
+ */
+H5_HLRDLL herr_t H5LRcopy_reference(hid_t obj_id, hdset_reg_ref_t *ref, const char *file,
+				    const char *path, const hsize_t *block_coord, 
+				    hdset_reg_ref_t *ref_new);
+
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5LR
+ *
+ * \brief Copies data from a referenced region to a region in a 
+ *        destination dataset.
+ *
+ * \param[in] obj_id        Identifier of any object in a file 
+ *                          dataset region reference belongs to
+ * \param[in] ref           Dataset region reference
+ * \param[in] file          Name of the destination file 
+ * \param[in] path          Full path to the destination dataset
+ * \param[in] block_coord   Hyperslab coordinates in the destination 
+ *                          dataset
+ *
+ * \return \herr_t
+ *
+ * \details Given a dataset region reference \p ref in a source file 
+ *          specified by an identifier of any object in that file 
+ *          \p obj_id, the function will write data to the existing 
+ *          dataset \p path in file \p file to the simple hyperslab 
+ *          specified by \p block_coord.
+ *
+ *          Buffer \p block_coord has size 2*rank and is the coordinates 
+ *          of the starting point following by the coordinates of the 
+ *          ending point of the hyperslab. For example, to specify a 
+ *          rectangular hyperslab destination region starting at element 
+ *          (2,2) to element (5,4) then \p block_coord would be {2, 2, 5, 4}.
+ *
+ *          If \p path does not exist in the destination file (as may be 
+ *          the case when writing to a new file) then the dataset will be 
+ *          copied directly to the \p path and \p block_coord will be 
+ *          disregarded.
+ *
+ * \version 1.1 Fortran wrapper introduced in this release.
+ *
+ * \since 1.0
+ *
+ */
+H5_HLRDLL herr_t H5LRcopy_region(hid_t obj_id,
+				hdset_reg_ref_t *ref,
+				const char *file,
+				const char *path,
+				const hsize_t *block_coord);
+
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5LR
+ *
+ * \brief Creates a dataset with the region references to the data 
+ *        in all datasets located under a specified group in a file 
+ *        or creates a dataset with object references to all objects 
+ *        (groups or datasets) located under a specified group in a file.
+ *
+ * \fg_loc_id
+ * \param[in] group_path    Absolute or relative path to the group 
+ *                          at which traversal starts
+ * \param[in] ds_path       Absolute or relative path to the dataset 
+ *                          with region references to be created
+ * \param[in] index_type    Index_type; 
+ *                          see valid values below in description
+ * \param[in] order         Order in which index is traversed; 
+ *                          see valid values below in description
+ * \param[in] ref_type      Reference type;
+ *                          see valid values below in description
+ *
+ * \return \herr_t
+ *
+ * \details H5LRcreate_ref_to_all() creates a dataset with the 
+ *          region references to the data in all datasets located 
+ *          under a specified group in a file or creates a dataset with 
+ *          object references to all objects (groups or datasets) located 
+ *          under a specified group in a file.
+ *
+ *          Given a dataset path \p ds_path in a file specified by the 
+ *          \p loc_id identifier, the function H5LRcreate_ref_to_all() 
+ *          will create a contiguous one-dimensional dataset with the 
+ *          region references or object references depending on the value 
+ *          of the \p ref_type parameter. When \p ref_type is 
+ *          #H5R_DATASET_REGION, each region reference points to all data 
+ *          in a dataset encountered by an internally called H5Lvisit() 
+ *          routine, which starts at the group specified by the \p loc_id 
+ *          and \p group_path parameters. In a like manner, when
+ *          \p ref_type is #H5R_OBJECT, each object reference points to 
+ *          an object (a group or a dataset) encountered by H5Lvisit().
+ *
+ *          If \p ds_path does not exist in \p loc_id then the function 
+ *          will create the path specified by \p ds_path automatically.
+ *
+ *          \p index_type specifies the index to be used. 
+ *          Valid values include the following:
+ *          - #H5_INDEX_NAME        Alphanumeric index on name
+ *          - #H5_INDEX_CRT_ORDER   Index on creation order
+ *          .
+ *
+ *          \p order specifies the order in which objects are to be 
+ *          inspected along the index specified in \p index_type. 
+ *          Valid values include the following:
+ *          - #H5_ITER_INC      Increasing order
+ *          - #H5_ITER_DEC      Decreasing order
+ *          - #H5_ITER_NATIVE   Fastest available order
+ *          .
+ *
+ *          For more detailed information on these two parameters, 
+ *          see H5Lvisit().
+ *
+ *          \p ref_type specifies the type of the reference to be used. 
+ *          Valid values include the following:
+ *          - #H5R_DATASET_REGION   Dataset region reference
+ *          - #H5R_OBJECT           Object reference
+ *          .
+ *
+ * \version 1.1 Fortran wrapper introduced in this release.
+ *
+ * \since 1.0
+ *
+ */
+H5_HLRDLL herr_t H5LRcreate_ref_to_all(hid_t loc_id, const char *group_path,
+					 const char *ds_path, H5_index_t index_type, H5_iter_order_t order, H5R_type_t ref_type);
+
+/*-------------------------------------------------------------------------
+ *
+ * Read dataset functions
+ *
+ *-------------------------------------------------------------------------
+ */
+
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5LR
+ *
+ * \brief Retrieves raw data pointed to by a region reference 
+ *        to an application buffer.
+ *
+ * \param[in] obj_id        File identifier for the HDF5 file containing
+ *                          the dataset with the referenced region or an
+ *                          object identifier for any object in that file
+ * \param[in] ref           Region reference specifying data to be read
+ *                          in
+ * \param[in] mem_type      Memory datatype of data read from referenced 
+ *                          region into the application buffer
+ * \param[in,out] numelem   Number of elements to be read into buffer 
+ *                          \p buf
+ * \param[out] buf          Buffer in which data is returned to the 
+ *                          application
+ *
+ * \return \herr_t
+ *
+ * \details H5LRread_region() reads data pointed to by the region 
+ *          reference \p ref into the buffer \p buf.
+ *
+ *          \p numelem specifies the number of elements to be read 
+ *          into \p buf. When the size of the reference region is unknown, 
+ *          H5LRread_region() can be called with \p buf set to NULL; 
+ *          the number of elements in the referenced region will be returned 
+ *          in \p numelem.
+ *
+ *          The buffer buf must be big enough to hold \p numelem elements 
+ *          of type \p mem_type. For example, if data is read from the referenced 
+ *          region into an integer buffer, \p mem_type should be #H5T_NATIVE_INT 
+ *          and the buffer must be at least \c sizeof(int) * \p numelem  bytes 
+ *          in size. This buffer must be allocated by the application.
+ *
+ * \version 1.1 Fortran wrapper introduced in this release.
+ *
+ * \since 1.0
+ *
+ */
+H5_HLRDLL herr_t H5LRread_region(hid_t obj_id,
+				const hdset_reg_ref_t *ref, 
+				hid_t mem_type,
+				size_t *numelem,
+				void *buf );
+
+/*-------------------------------------------------------------------------
+ *
+ * Query dataset functions
+ *
+ *-------------------------------------------------------------------------
+ */
+
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5LR
+ *
+ * \brief Retrieves information about the data a region reference 
+ *        points to.
+ *
+ * \param[in] obj_id        Identifier of any object in an HDF5 file 
+ *                          the region reference belongs to.
+ * \param[in] ref           Region reference to query
+ * \param[in,out] len       Size of the buffer to store \p path in. 
+ *                          NOTE: if \p *path is not NULL then \p *len 
+ *                          must be the appropriate length
+ * \param[out] path         Full path that a region reference points to
+ * \param[out] rank         The number of dimensions of the dataset
+ *                          dimensions of the dataset pointed by 
+ *                          region reference.
+ * \param[out] dtype        Datatype of the dataset pointed by the 
+ *                          region reference.
+ * \param[out] sel_type     Type of the selection (point or hyperslab)
+ * \param[in,out] numelem   Number of coordinate blocks or 
+ *                          selected elements.
+ * \param[out] buf          Buffer containing description of the region 
+ *                          pointed by region reference
+ *
+ * \return \herr_t
+ *
+ * \details H5LRget_region_info() queries information about the data 
+ *          pointed by a region reference \p ref. It returns one of the 
+ *          absolute paths to a dataset, length of the path, dataset’s rank 
+ *          and datatype, description of the referenced region and type of 
+ *          the referenced region. Any output argument can be NULL if that 
+ *          argument does not need to be returned.
+ *
+ *          The parameter \p obj_id is an identifier for any object in the 
+ *          HDF5 file containing the referenced object. For example, it can 
+ *          be an identifier of a dataset the region reference belongs to 
+ *          or an identifier of an HDF5 file the dataset with region references 
+ *          is stored in.
+ *
+ *          The parameter \p ref is a region reference to query.
+ *
+ *          The parameter \p path is a pointer to application allocated
+ *          buffer of size \p len+1 to return an absolute path to a dataset
+ *          the region reference points to.
+ *
+ *          The parameter \p len is a length of absolute path string plus 
+ *          the \0 string terminator. If path parameter is NULL, actual 
+ *          length of the path (+1 for \0 string terminator) is returned to 
+ *          application and can be used to allocate buffer path of an 
+ *          appropriate length \p len.
+ *
+ *          The parameter \p sel_type describes the type of the selected
+ *          region. Possible values can be #H5S_SEL_POINTS for point 
+ *          selection and #H5S_SEL_HYPERSLABS for hyperslab selection.
+ *
+ *          The parameter \p numelem describes how many elements will be 
+ *          placed in the buffer \p buf. The number should be interpreted 
+ *          using the value of \p sel_type.
+ *
+ *          If value of \p sel_type is #H5S_SEL_HYPERSLABS, the parameter 
+ *          \p buf contains \p numelem blocks of the coordinates for each 
+ *          simple hyperslab of the referenced region. Each block has 
+ *          length \c 2*\p rank and is organized as follows: <"start" coordinate>, 
+ *          immediately followed by <"opposite" corner coordinate>. 
+ *          The total size of the buffer to hold the description of the 
+ *          region will be \c 2*\p rank*\p numelem. If region reference 
+ *          points to a contiguous sub-array, then the value of \p numelem 
+ *          is 1 and the block contains coordinates of the upper left and 
+ *          lower right corners of the sub-array (or simple hyperslab).
+ *
+ *          If value of \p sel_type is #H5S_SEL_POINTS, the parameter \p buf 
+ *          contains \p numelem blocks of the coordinates for each selected 
+ *          point of the referenced region. Each block has length \p rank 
+ *          and contains coordinates of the element. The total size of the 
+ *          buffer to hold the description of the region will be 
+ *          \p rank* \p numelem.
+ *
+ *
+ * \version 1.1 Fortran wrapper introduced in this release.
+ *
+ * \since 1.0
+ *
+ */
+H5_HLRDLL herr_t H5LRget_region_info(hid_t obj_id,
+				    const hdset_reg_ref_t *ref,  
+				    size_t *len, 
+				    char *path,
+				    int *rank,
+				    hid_t *dtype,
+				    H5S_sel_type *sel_type,
+				    size_t *numelem,
+				    hsize_t *buf );
+
+
+
+/*-------------------------------------------------------------------------
+ *
+ * Make dataset functions
+ *
+ *-------------------------------------------------------------------------
+ */
+
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5LR
+ *
+ * \brief Copies data from a specified region in a source dataset 
+ *        to a specified region in a destination dataset
+ *
+ * \param[in] file_src          Name of the source file
+ * \param[in] path_src          Full path to the source dataset
+ * \param[in] block_coord_src   Hyperslab coordinates in the 
+ *                              source dataset
+ * \param[in] file_dest         Name of the destination file
+ * \param[in] path_dest         Full path to the destination dataset
+ * \param[in] block_coord_dset  Hyperslab coordinates in the 
+ *                              destination dataset
+ *
+ * \return \herr_t
+ *
+ * \details Given a path to a dataset \p path_src in a file with the 
+ *          name \p file_src, and description of a simple hyperslab of 
+ *          the source \p block_coord_src, the function will write data 
+ *          to the dataset \p path_dest in file \p file_dest to the 
+ *          simple hyperslab specified by \p block_coord_dset. 
+ *          The arrays \p block_coord_src and \p block_coord_dset have 
+ *          a length of 2*rank and are the coordinates of the starting 
+ *          point following by the coordinates of the ending point of the 
+ *          hyperslab. For example, to specify a rectangular hyperslab 
+ *          destination region starting at element (2,2) to element (5,4) 
+ *          then \p block_coord_dset would be {2, 2, 5, 4}.
+ *
+ *          If \p path_dest does not exist in the destination file 
+ *          (as may be the case when writing to a new file) then the 
+ *          dataset will be copied directly to the \p path_dest and 
+ *          \p block_coord_dset will be disregarded.
+ *
+ * \version 1.1 Fortran wrapper introduced in this release.
+ *
+ * \since 1.0
+ *
+ */
+H5_HLRDLL herr_t H5LTcopy_region(const char *file_src,
+				const char *path_src,
+				const hsize_t *block_coord_src,
+				const char *file_dest,
+				const char *path_dest,
+				const hsize_t *block_coord_dset);
+
+/*-------------------------------------------------------------------------
+ *
+ * Read dataset functions
+ *
+ *-------------------------------------------------------------------------
+ */
+
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5LR
+ *
+ * \brief Reads selected data to an application buffer.
+ *
+ * \param[in] file          Name of file
+ * \param[in] path          Full path to a dataset
+ * \param[in] block_coord   Hyperslab coordinates
+ * \param[in] mem_type      Memory datatype, describing the buffer 
+ *                          the referenced data will be read into
+ * \param[out] buf          Buffer containing data from the 
+ *                          referenced region
+ *
+ * \return \herr_t
+ *
+ * \details H5LTread_region() reads data from a region described by 
+ *          the hyperslab coordinates in \p block_coord, located in 
+ *          the dataset specified by its absolute path \p path in a 
+ *          file specified by its name \p file. Data is read into a 
+ *          buffer \p buf of the datatype that corresponds to the 
+ *          HDF5 datatype specified by \p mem_type.
+ *
+ *          Buffer \p block_coord has size 2*rank and is the coordinates 
+ *          of the starting point following by the coordinates of the 
+ *          ending point of the hyperslab. For example, to extract a 
+ *          rectangular hyperslab region starting at element (2,2) to 
+ *          element (5,4) then \p block_coord would be {2, 2, 5, 4}.
+ *
+ *          Buffer \p buf should be big enough to hold selected elements 
+ *          of the type that corresponds to the \p mem_type
+ *
+ * \version 1.1 Fortran wrapper introduced in this release.
+ *
+ * \since 1.0
+ *
+ */
+H5_HLRDLL herr_t  H5LTread_region(const char *file,
+				 const char *path,
+				 const hsize_t *block_coord,
+				 hid_t mem_type,
+				 void *buf );
+
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5LR
+ *
+ * \brief Retrieves the values of quality flags for each element 
+ *        to the application provided buffer.
+ *
+ * \param[in] dset_id   Identifier of the dataset with bit-field values
+ * \param[in] num_values    Number of the values to be extracted
+ * \param[in] offset        Array of staring bits to be extracted from 
+ *                          the element; valid values: 0 (zero) through 7
+ * \param[in] lengths       Array of the number of bits to be extracted 
+ *                          for each value
+ * \param[in] space         Dataspace identifier, describing the elements 
+ *                          to be read from the dataset with bit-field 
+ *                          values
+ * \param[out] buf          Buffer to read the values in
+ *
+ * \return \herr_t
+ *
+ * \details H5LTread_bitfield_value() reads selected elements from a 
+ *          dataset specified by its identifier \p dset_id, and unpacks 
+ *          the bit-field values to a buffer \p buf.
+ *
+ *          The parameter \p space is a space identifier that indicates 
+ *          which elements of the dataset should be read.
+ *
+ *          The parameter \p offset is an array of length \p num_values; 
+ *          the i<sup>th</sup> element of the array holds the value of the
+ *          starting bit of the i<sup>th</sup> bit-field value. 
+ *          Valid values are: 0 (zero) through 7.
+ *
+ *          The parameter \p lengths is an array of length \p num_values; 
+ *          the i<sup>th</sup> element of the array holds the number of 
+ *          bits to be extracted for the i<sup>th</sup> bit-field value. 
+ *          Extracted bits will be interpreted as a base-2 integer value. 
+ *          Each value will be converted to the base-10 integer value and 
+ *          stored in the application buffer. 
+ *
+ *          Buffer \p buf is allocated by the application and should be big 
+ *          enough to hold \c num_sel_elem * \p num_values elements of the 
+ *          specified type, where \c num_sel_elem is a number of the elements 
+ *          to be read from the dataset. Data in the buffer is organized 
+ *          as \p num_values values for the first element, followed by the 
+ *          \p num_values values for the second element, ... , followed by 
+ *          the \p num_values values for the 
+ *          \c num_selected_elem<sup>th</sup> element.
+ *
+ * \version 1.1 Fortran wrapper introduced in this release.
+ *
+ * \since 1.0
+ *
+ */
+H5_HLRDLL herr_t H5LTread_bitfield_value(hid_t dset_id, int num_values, const unsigned *offset,
+					const unsigned *lengths, hid_t space, int *buf);
+
diff --git a/doxygen/dox/high_level/high_level.dox b/doxygen/dox/high_level/high_level.dox
new file mode 100644
index 0000000..c53d298
--- /dev/null
+++ b/doxygen/dox/high_level/high_level.dox
@@ -0,0 +1,29 @@
+/** \page high_level High-level library
+ * The high-level HDF5 library includes several sets of convenience and standard-use APIs to 
+ * facilitate common HDF5 operations.
+ *
+ * <ul>
+ * <li>\ref H5LT "Lite (H5LT, H5LD)"
+ * \n
+ * Functions to simplify creating and manipulating datasets, attributes and other features
+ * <li>\ref H5IM "Image (H5IM)"
+ * \n
+ * Creating and manipulating HDF5 datasets intended to be interpreted as images
+ * <li>\ref H5TB "Table (H5TB)"
+ * \n
+ * Creating and manipulating HDF5 datasets intended to be interpreted as tables
+ * <li>\ref H5PT "Packet Table (H5PT)"
+ * \n
+ * Creating and manipulating HDF5 datasets to support append- and read-only operations on table data
+ * <li>\ref H5DS "Dimension Scale (H5DS)"
+ * \n
+ * Creating and manipulating HDF5 datasets that are associated with the dimension of another HDF5 dataset
+ * <li>\ref H5DO "Optimizations (H5DO)"
+ * \n
+ * Bypassing default HDF5 behavior in order to optimize for specific use cases
+ * <li>\ref H5LR "Extensions (H5LR, H5LT)"
+ * \n
+ * Working with region references, hyperslab selections, and bit-fields
+ * </ul>
+ * 
+ */
diff --git a/doxygen/examples/H5DO_examples.c b/doxygen/examples/H5DO_examples.c
new file mode 100644
index 0000000..7a33c6b
--- /dev/null
+++ b/doxygen/examples/H5DO_examples.c
@@ -0,0 +1,220 @@
+/* -*- c-file-style: "stroustrup" -*- */
+
+//! <!-- [H5DOwrite] -->
+
+#include <zlib.h>
+#include <math.h>
+#define DEFLATE_SIZE_ADJUST(s) (ceil(((double)(s)) * 1.001) + 12)
+                :
+                :
+size_t       buf_size = CHUNK_NX*CHUNK_NY*sizeof(int);
+                const Bytef *z_src = (const Bytef *)(direct_buf);
+                Bytef *      z_dst; /* Destination buffer            */
+                uLongf       z_dst_nbytes = (uLongf)DEFLATE_SIZE_ADJUST(buf_size);
+                uLong        z_src_nbytes = (uLong)buf_size;
+                int          aggression   = 9; /* Compression aggression setting */
+                uint32_t     filter_mask  = 0;
+                size_t       buf_size     = CHUNK_NX * CHUNK_NY * sizeof(int);
+
+                /* Create the data space */
+                if ((dataspace = H5Screate_simple(RANK, dims, maxdims)) < 0)
+                    goto error;
+
+                /* Create a new file */
+                if ((file = H5Fcreate(FILE_NAME5, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+                    goto error;
+
+                /* Modify dataset creation properties, i.e. enable chunking and compression */
+                if ((cparms = H5Pcreate(H5P_DATASET_CREATE)) < 0)
+                    goto error;
+
+                if ((status = H5Pset_chunk(cparms, RANK, chunk_dims)) < 0)
+                    goto error;
+
+                if ((status = H5Pset_deflate(cparms, aggression)) < 0)
+                    goto error;
+
+                /* Create a new dataset within the file using cparms creation properties */
+                if ((dset_id = H5Dcreate2(file, DATASETNAME, H5T_NATIVE_INT, dataspace, H5P_DEFAULT, cparms,
+                                          H5P_DEFAULT)) < 0)
+                    goto error;
+
+                /* Initialize data for one chunk */
+                for (i = n = 0; i < CHUNK_NX; i++)
+                    for (j = 0; j < CHUNK_NY; j++)
+                        direct_buf[i][j] = n++;
+
+                /* Allocate output (compressed) buffer */
+                outbuf = malloc(z_dst_nbytes);
+                z_dst  = (Bytef *)outbuf;
+
+                /* Perform compression from the source to the destination buffer */
+                ret = compress2(z_dst, &z_dst_nbytes, z_src, z_src_nbytes, aggression);
+
+                /* Check for various zlib errors */
+                if (Z_BUF_ERROR == ret) {
+                    fprintf(stderr, "overflow");
+                    goto error;
+                }
+                else if (Z_MEM_ERROR == ret) {
+                    fprintf(stderr, "deflate memory error");
+                    goto error;
+                }
+                else if (Z_OK != ret) {
+                    fprintf(stderr, "other deflate error");
+                    goto error;
+                }
+
+                /* Write the compressed chunk data repeatedly to cover all the
+                 *  * chunks in the dataset, using the direct write function.     */
+                for (i = 0; i < NX / CHUNK_NX; i++) {
+                    for (j = 0; j < NY / CHUNK_NY; j++) {
+                        status =
+                            H5DOwrite_chunk(dset_id, H5P_DEFAULT, filter_mask, offset, z_dst_nbytes, outbuf);
+                        offset[1] += CHUNK_NY;
+                    }
+                    offset[0] += CHUNK_NX;
+                    offset[1] = 0;
+                }
+
+                /* Overwrite the first chunk with uncompressed data.  Set the filter mask to
+                 *  * indicate the compression filter is skipped */
+                filter_mask = 0x00000001;
+                offset[0] = offset[1] = 0;
+                if (H5DOwrite_chunk(dset_id, H5P_DEFAULT, filter_mask, offset, buf_size, direct_buf) < 0)
+                    goto error;
+
+                /* Read the entire dataset back for data verification converting ints to longs */
+                if (H5Dread(dataset, H5T_NATIVE_LONG, H5S_ALL, H5S_ALL, H5P_DEFAULT, outbuf_long) < 0)
+                    goto error;
+
+                /* Data verification here */
+            :
+            :
+
+            //! <!-- [H5DOwrite] -->
+
+            //! <!-- [H5DOread] -->
+
+#include <zlib.h>
+#include <math.h>
+#define DEFLATE_SIZE_ADJUST(s) (ceil(((double)(s)) * 1.001) + 12)
+                :
+                :
+size_t       buf_size = CHUNK_NX*CHUNK_NY*sizeof(int);
+            const Bytef *z_src = (const Bytef *)(direct_buf);
+            Bytef *      z_dst; /* Destination buffer            */
+            uLongf       z_dst_nbytes = (uLongf)DEFLATE_SIZE_ADJUST(buf_size);
+            uLong        z_src_nbytes = (uLong)buf_size;
+            int          aggression   = 9; /* Compression aggression setting */
+            uint32_t     filter_mask  = 0;
+            size_t       buf_size     = CHUNK_NX * CHUNK_NY * sizeof(int);
+            /* For H5DOread_chunk() */
+            void *       readbuf = NULL;                   /* Buffer for reading data */
+            const Bytef *pt_readbuf;                       /* Point to the buffer for data read */
+            hsize_t      read_chunk_nbytes;                /* Size of chunk on disk */
+            int          read_dst_buf[CHUNK_NX][CHUNK_NY]; /* Buffer to hold un-compressed data */
+
+            /* Create the data space */
+            if ((dataspace = H5Screate_simple(RANK, dims, maxdims)) < 0)
+                goto error;
+
+            /* Create a new file */
+            if ((file = H5Fcreate(FILE_NAME5, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+                goto error;
+
+            /* Modify dataset creation properties, i.e. enable chunking and compression */
+            if ((cparms = H5Pcreate(H5P_DATASET_CREATE)) < 0)
+                goto error;
+
+            if ((status = H5Pset_chunk(cparms, RANK, chunk_dims)) < 0)
+                goto error;
+
+            if ((status = H5Pset_deflate(cparms, aggression)) < 0)
+                goto error;
+
+            /* Create a new dataset within the file using cparms creation properties */
+            if ((dset_id = H5Dcreate2(file, DATASETNAME, H5T_NATIVE_INT, dataspace, H5P_DEFAULT, cparms,
+                                      H5P_DEFAULT)) < 0)
+                goto error;
+
+            /* Initialize data for one chunk */
+            for (i = n = 0; i < CHUNK_NX; i++)
+                for (j = 0; j < CHUNK_NY; j++)
+                    direct_buf[i][j] = n++;
+
+            /* Allocate output (compressed) buffer */
+            outbuf = malloc(z_dst_nbytes);
+            z_dst  = (Bytef *)outbuf;
+
+            /* Perform compression from the source to the destination buffer */
+            ret = compress2(z_dst, &z_dst_nbytes, z_src, z_src_nbytes, aggression);
+
+            /* Check for various zlib errors */
+            if (Z_BUF_ERROR == ret) {
+                fprintf(stderr, "overflow");
+                goto error;
+            }
+            else if (Z_MEM_ERROR == ret) {
+                fprintf(stderr, "deflate memory error");
+                goto error;
+            }
+            else if (Z_OK != ret) {
+                fprintf(stderr, "other deflate error");
+                goto error;
+            }
+
+            /* Write the compressed chunk data repeatedly to cover all the
+             *  * chunks in the dataset, using the direct write function.     */
+            for (i = 0; i < NX / CHUNK_NX; i++) {
+                for (j = 0; j < NY / CHUNK_NY; j++) {
+                    status = H5DOwrite_chunk(dset_id, H5P_DEFAULT, filter_mask, offset, z_dst_nbytes, outbuf);
+                    offset[1] += CHUNK_NY;
+                }
+                offset[0] += CHUNK_NX;
+                offset[1] = 0;
+            }
+
+            if (H5Fflush(dataset, H5F_SCOPE_LOCAL) < 0)
+                goto error;
+
+            if (H5Dclose(dataset) < 0)
+                goto error;
+
+            if ((dataset = H5Dopen2(file, DATASETNAME1, H5P_DEFAULT)) < 0)
+                goto error;
+
+            offset[0] = CHUNK_NX;
+            offset[1] = CHUNK_NY;
+
+            /* Get the size of the compressed chunk */
+            ret = H5Dget_chunk_storage_size(dataset, offset, &read_chunk_nbytes);
+
+            readbuf    = HDmalloc(read_chunk_nbytes);
+            pt_readbuf = (const Bytef *)readbuf;
+
+            /* Use H5DOread_chunk() to read the chunk back */
+            if ((status = H5DOread_chunk(dataset, H5P_DEFAULT, offset, &read_filter_mask, readbuf)) < 0)
+                goto error;
+
+            ret =
+                uncompress((Bytef *)read_dst_buf, (uLongf *)&buf_size, pt_readbuf, (uLong)read_chunk_nbytes);
+
+            /* Check for various zlib errors */
+            if (Z_BUF_ERROR == ret) {
+                fprintf(stderr, "error: not enough room in output buffer");
+                goto error;
+            }
+            else if (Z_MEM_ERROR == ret) {
+                fprintf(stderr, "error: not enough memory");
+                goto error;
+            }
+            else if (Z_OK != ret) {
+                fprintf(stderr, "error: corrupted input data");
+                goto error;
+            }
+
+            /* Data verification here */
+            :
+            :
+//! <!-- [H5DOread] -->
diff --git a/doxygen/examples/H5LDget_dset_elmts.c b/doxygen/examples/H5LDget_dset_elmts.c
new file mode 100644
index 0000000..e23299a
--- /dev/null
+++ b/doxygen/examples/H5LDget_dset_elmts.c
@@ -0,0 +1,143 @@
+/* -*- c-file-style: "stroustrup" -*- */
+
+//! <!-- [first_declare] -->
+
+DATASET "DSET1" {DATATYPE H5T_STD_I32LE DATASPACE SIMPLE{(4, 13) / (60, 100)} : : }
+
+//! <!-- [first_declare] -->
+
+//! <!-- [first_reading] -->
+
+/* open the HDF5 file */
+fid = H5Fopen(FILE, H5F_ACC_RDWR, H5P_DEFAULT);
+
+/* open the dataset */
+did = H5Dopen2(fid, "DSET1", H5P_DEFAULT);
+        :
+        :
+    /* define hsize_t dims[2]; */
+    /* define hsize_t new_dims[2]; */
+    /* get the dataset's current dimension sizes */
+    H5LDget_dset_dims(did, dims);
+
+        /* extend the dataset by 2 */
+        new_dims[0] = dims[0] + 2;
+        new_dims[1] = dims[1] + 2;
+        H5Dset_extent(did, new_dims)
+
+            /* write data to the extended dataset */
+            : :
+            /* get the size of the dataset's data type */
+            type_size = H5LDget_dset_type_size(did, NULL);
+        :
+        :
+    /* allocate buffer for storing selected data elements from the dataset */
+    /* calculate # of selected elements from dims & new_dims */
+    /* buffer size = type_size * number of selected elements */
+        :
+        :
+    /* read the selected elements from the dataset into buf */
+    H5LDget_dset_elmts(did, dims, new_dims, NULL, buf);
+        :
+        :
+    H5Dclose(did);
+        H5Fclose(fid);
+
+        //! <!-- [first_reading] -->
+
+        //! <!-- [first_output] -->
+
+    data for elements (0, 13), (0, 14) 
+    data for elements (1, 13), (1, 14) 
+    data for elements (2, 13), (2, 14) 
+    data for elements (3, 13), (3, 14)
+    data for elements (4, 0), (4, 1), (4, 2)......................(4, 13), (4, 14)
+    data for elements (5, 0), (5, 1), (5, 2)......................(5, 13), (5, 14)
+
+//! <!-- [first_output] -->
+
+
+//! <!-- [second_declare] -->
+
+    DATASET "DSET2" {
+    DATATYPE  H5T_COMPOUND {
+        H5T_STD_I32LE "a";
+    H5T_STD_I32LE "b";
+    H5T_ARRAY
+    {
+        [4] H5T_STD_I32LE
+    }
+    "c";
+    H5T_STD_I32LE "d";
+    H5T_STD_I32LE "e";
+    H5T_COMPOUND
+    {
+        H5T_STD_I32LE "a";
+        H5T_STD_I32LE "b";
+        H5T_ARRAY
+        {
+            [4] H5T_STD_I32LE
+        }
+        "c";
+        H5T_STD_I32LE "d";
+        H5T_STD_I32LE "e";
+    }
+    "s2";
+    }
+    DATASPACE SIMPLE
+    {
+        (5) / (5)
+    }
+    ::
+    }
+
+    //! <!-- [second_declare] -->
+
+    //! <!-- [second_reading] -->
+
+    /* open the HDF5 file */
+    fid = H5Fopen(FILE, H5F_ACC_RDWR, H5P_DEFAULT);
+
+    /* open the dataset */
+    did = H5Dopen2(fid, "DSET2", H5P_DEFAULT);
+
+    /* define hsize_t dims[1]; */
+    /* define hsize_t new_dims[1]; */
+        :
+        :
+    /* get the dataset's current dimension size */
+    H5LDget_dset_dims(did, dims);
+
+        /* extend the dataset by 2 */
+        new_dims[0] = dims[0] + 2;
+        H5Dset_extent(did, new_dims);
+        :
+        :
+    /* write data to the extended part of the dataset */
+        :
+        :
+    /* #define fields "d,s2.c" */
+    /* get the size of the dataset's data type for the selected fields */
+    type_size = H5LDget_dset_type_size(did, fields);
+        :
+        :
+    /* allocate buffer for storing selected data elements from the dataset */
+    /* calculate # of selected elements from dims & new_dims */
+    /* buffer size = type_size * number of selected elements */
+        :        
+        :
+    /* read the selected elements from the dataset into buf */
+    H5LD_get_dset_elmts(did, dims, new_dims, fields, buf);
+        :
+        :
+    H5Dclose(did);
+        H5Fclose(fid);
+
+        //! <!-- [second_reading] -->
+
+        //! <!-- [second_output] -->
+
+    Data for element (5): integer value for "d", 4 integer values for array "s2.c"
+    Data for element (6): integer value for "d", 4 integer values for array "s2.c"
+
+//! <!-- [second_output] -->
diff --git a/doxygen/examples/H5LT_examples.c b/doxygen/examples/H5LT_examples.c
new file mode 100644
index 0000000..5ed4c29
--- /dev/null
+++ b/doxygen/examples/H5LT_examples.c
@@ -0,0 +1,27 @@
+/* -*- c-file-style: "stroustrup" -*- */
+
+//! <!-- [get_attribute_info] -->
+
+H5T_class_t type_class;
+size_t      type_size;
+hsize_t     dims[0];
+... status = H5LTget_attribute_info(file_id, "/", STRNAME, dims, &type_class, &type_size);
+if (type_class == H5T_STRING) {
+    printf("Attribute is a string.\n");
+    printf("String size: %i\n", type_size);
+
+    //! <!-- [get_attribute_info] -->
+
+    //! <!-- [enum] -->
+
+    “H5T_ENUM
+    {
+        H5T_NATIVE_INT;
+        “Bob” 0;
+        “Elena” 1;
+        “Quincey” 2;
+        “Frank” 3;
+    }
+    ”
+
+//! <!-- [enum] -->
diff --git a/doxygen/examples/H5TBAget_fill.c b/doxygen/examples/H5TBAget_fill.c
new file mode 100644
index 0000000..15eae8b
--- /dev/null
+++ b/doxygen/examples/H5TBAget_fill.c
@@ -0,0 +1,43 @@
+unsigned char tmp_fill_buf[40];
+...
+
+    file_id = H5Fopen(FILENAME, H5F_ACC_RDWR, H5P_DEFAULT);
+dataset_id  = H5Dopen(file_id, TABLE_NAME, H5P_DEFAULT);
+datatype_id = H5Dget_type(dataset_id);
+
+status = H5TBget_table_info(file_id, TABLE_NAME, &nfields, &nrecords);
+
+hasfill = H5TBAget_fill(file_id, TABLE_NAME, dataset_id, tmp_fill_buf);
+
+for (i = 0; i < nfields; i++) {
+    member_type_id     = H5Tget_member_type(datatype_id, (unsigned)i);
+    native_mem_type_id = H5Tget_native_type(member_type_id, H5T_DIR_ASCEND);
+    member_offset      = H5Tget_member_offset(datatype_id, (unsigned)i);
+    printf("member_offset: %i\n", member_offset);
+    memb_class = H5Tget_class(member_type_id);
+    switch (memb_class) {
+        case H5T_INTEGER:
+            /* convert unsigned char array to integer */
+            break;
+        case H5T_FLOAT:
+            /* convert unsigned char array to double or float */
+
+            if (H5Tequal(native_mem_type_id, H5T_NATIVE_DOUBLE)) {
+            }
+            else if (H5Tequal(native_mem_type_id, H5T_NATIVE_FLOAT)) {
+                f.i = tmp_fill_buf[member_offset] | (tmp_fill_buf[member_offset + 1] << 8) |
+                      (tmp_fill_buf[member_offset + 2] << 16) | (tmp_fill_buf[member_offset + 3] << 24);
+                printf("Field %i  Fill Value:  %lf\n", i, f.f);
+            }
+            break;
+
+        case H5T_STRING:
+            /* convert unsigned char array to string */
+            strsize = H5Tget_size(member_type_id);
+
+            printf("Field %i  Fill Value: ", i);
+            for (j = 0; j < strsize; j++)
+                printf("%c", tmp_fill_buf[member_offset + j]);
+            printf("\n");
+            break;
+    }
diff --git a/examples/credel.c b/examples/credel.c
index 92ea662..46cfbb8 100644
--- a/examples/credel.c
+++ b/examples/credel.c
@@ -255,11 +255,11 @@ delete_dataset(state_t *s, const int64_t didx)
 
     if (s->verbose > 0)
         fprintf(stderr, "Deleted dataset %s\n", dname);
-#if 1
+
     const hid_t ds = s->dataset[didx % ndatasets];
     if (H5Dclose(ds) < 0)
         errx(EXIT_FAILURE, "H5Dclose failed");
-#endif
+
     s->dataset[didx % ndatasets] = H5I_INVALID_HID;
     s->stats.datasets.deleted++;
 }
@@ -300,22 +300,8 @@ create_dataset(state_t *s, const int64_t didx)
 static void
 create_and_write_dataset(state_t *s, const int64_t didx)
 {
-#if 0
-	const int64_t gidx = didx / 2;
-	const int ngroups = __arraycount(s->group);
-	const hid_t g = s->group[gidx % ngroups];
-
-	if (H5Odisable_mdc_flushes(g) < 0)
-		err(EXIT_FAILURE, "H5Odisable_mdc_flushes failed");
-#endif
-
     create_dataset(s, didx);
     write_dataset(s, didx);
-
-#if 0
-	if (H5Oenable_mdc_flushes(g) < 0)
-		err(EXIT_FAILURE, "H5Oenable_mdc_flushes failed");
-#endif
 }
 
 static void
@@ -369,12 +355,9 @@ main(int argc, char **argv)
         errx(EXIT_FAILURE, "%s.%d H5Pcreate failed", __func__, __LINE__);
     }
 
-    config.version  = H5F__CURR_VFD_SWMR_CONFIG_VERSION;
-    config.tick_len = 4;
-    config.max_lag  = 5;
-#if 0 /* raw-data flushing is not implemented */
-	config.flush_raw_data = true;
-#endif
+    config.version           = H5F__CURR_VFD_SWMR_CONFIG_VERSION;
+    config.tick_len          = 4;
+    config.max_lag           = 5;
     config.writer            = true;
     config.md_pages_reserved = 128;
     strlcpy(config.md_file_path, "./my_md_file", sizeof(config.md_file_path));
@@ -399,6 +382,7 @@ main(int argc, char **argv)
     s->file = H5Fcreate(s->output_file, H5F_ACC_TRUNC, fcpl, fapl);
 
     H5Pclose(fapl);
+    H5Pclose(fcpl);
 
     if (s->file < 0)
         errx(EXIT_FAILURE, "H5Fcreate failed");
@@ -441,23 +425,6 @@ main(int argc, char **argv)
         H5Fvfd_swmr_end_tick(s->file);
         (void)sigsuspend(&mask);
     }
-#if 0
-	fprintf(stderr, "Interrupted.  Cleaning up.\n");
-
-	int j;
-	for (--i, j = 0; j < 4; j++, --i) {
-		if (i % 2 == 1) {
-			delete_dataset(s, i - 1);
-			delete_dataset(s, i);
-			delete_group(s, i / 2);
-		}
-	}
-
-	for (j = 0; j < 4; j++) {
-		assert(s->dataset[j] == H5I_INVALID_HID);
-		assert(s->group[j / 2] == H5I_INVALID_HID);
-	}
-#endif
 
     if (s->print_stats)
         print_stats(&s->stats);
diff --git a/examples/gaussians.c b/examples/gaussians.c
index f67ea2f..7517949 100644
--- a/examples/gaussians.c
+++ b/examples/gaussians.c
@@ -202,25 +202,6 @@ matrix_read(state_t *s, int *framenop, float mat[ROWS][COLS])
             *framenop = frameno + 2;
     }
 
-#if 0
-	if (!s->constantrate && (lead < -2 || 2 < lead)) {
-		int gain = 31250 / 4;
-		const struct timespec prior_integral = s->update_integral;
-		struct timespec current_interval;
-		if (lead > 0)
-			gain *= 2;
-		struct timespec adjustment = (struct timespec){.tv_sec = 0,
-			.tv_nsec = gain * MAX(MIN(4, lead), -4)};
-		/* XXX clamp it XXX */
-		timespecadd(&s->update_integral,
-		    &adjustment, &s->update_integral);
-		timespecadd(&s->update_integral,
-		    &s->update_interval, &current_interval);
-		if (timespeccmp(&current_interval, &s->min_interval, <=))
-			s->update_integral = prior_integral;
-	}
-#endif
-
     if (frameno >= dims[0]) {
         int i, j;
         for (i = 0; i < ROWS; i++) {
@@ -565,11 +546,6 @@ matrix_open(state_t *s, bool rw)
     config.writer            = rw;
     config.md_pages_reserved = 128;
 
-#if 0 /* raw-data flushing is not implemented; default open-tries is ok */
-	config.flush_raw_data = true;
-	config.md_open_tries = 1;
-#endif
-
     strlcpy(config.md_file_path, "./my_md_file", sizeof(config.md_file_path));
 
     /* Enable page buffering */
@@ -688,10 +664,6 @@ main(int argc, char **argv)
             case READ:
             case STANDALONE:
                 matrix_draw(w, mat);
-#if 0
-			wmove(topw, ROWS + 3, 0);
-			waddstr(topw, "\"Don't cross the streams.\"");
-#endif
                 break;
             case WRITE:
                 matrix_write(&s, frameno, mat);
diff --git a/fortran/test/tH5O_F03.F90 b/fortran/test/tH5O_F03.F90
index 2f9bcad..e8f7c96 100644
--- a/fortran/test/tH5O_F03.F90
+++ b/fortran/test/tH5O_F03.F90
@@ -209,7 +209,6 @@ CONTAINS
     ! Since the name is generated in C and passed to a Fortran string, it
     ! will be NULL terminated, so we need to find the end of the string.
 
-    len = 1
     DO len = 1, 180
        IF(name(len) .EQ. C_NULL_CHAR) EXIT
     ENDDO
diff --git a/hl/src/H5DOpublic.h b/hl/src/H5DOpublic.h
index 88616a3..99358b3 100644
--- a/hl/src/H5DOpublic.h
+++ b/hl/src/H5DOpublic.h
@@ -18,6 +18,29 @@
 extern "C" {
 #endif
 
+/**\defgroup H5DO Optimizations
+ *
+ * <em>Bypassing default HDF5 behavior in order to optimize for specific
+ * use cases (H5DO)</em>
+ *
+ * HDF5 functions described is this section are implemented in the HDF5 High-level
+ * library as optimized functions. These functions generally require careful setup
+ * and testing as they enable an application to bypass portions of the HDF5
+ * library’s I/O pipeline for performance purposes.
+ *
+ * These functions are distributed in the standard HDF5 distribution and are
+ * available any time the HDF5 High-level library is available.
+ *
+ * - \ref H5DOappend
+ *    \n Appends data to a dataset along a specified dimension.
+ * - \ref H5DOread_chunk
+ *   \n Reads a raw data chunk directly from a dataset in a file into a buffer (DEPRECATED)
+ * - \ref H5DOwrite_chunk
+ *   \n  Writes a raw data chunk from a buffer directly to a dataset in a file (DEPRECATED)
+ * .
+ *
+ */
+
 /*-------------------------------------------------------------------------
  *
  * "Optimized dataset" routines.
@@ -25,6 +48,48 @@ extern "C" {
  *-------------------------------------------------------------------------
  */
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5DO
+ *
+ * \brief Appends data to a dataset along a specified dimension.
+ *
+ * \param[in] dset_id   Dataset identifier
+ * \param[in] dxpl_id   Dataset transfer property list identifier
+ * \param[in] axis      Dataset Dimension (0-based) for the append
+ * \param[in] extension Number of elements to append for the
+ *                      axis-th dimension
+ * \param[in] memtype   The memory datatype identifier
+ * \param[in] buf       Buffer with data for the append
+ *
+ * \return \herr_t
+ *
+ * \details The H5DOappend() routine extends a dataset by \p extension
+ *          number of elements along a dimension specified by a
+ *          dimension \p axis and writes \p buf of elements to the
+ *          dataset. Dimension \p axis is 0-based. Elements’ type
+ *          is described by \p memtype.
+ *
+ *          This routine combines calling H5Dset_extent(),
+ *          H5Sselect_hyperslab(), and H5Dwrite() into a single routine
+ *          that simplifies application development for the common case
+ *          of appending elements to an existing dataset.
+ *
+ *          For a multi-dimensional dataset, appending to one dimension
+ *          will write a contiguous hyperslab over the other dimensions.
+ *          For example, if a 3-D dataset has dimension sizes (3, 5, 8),
+ *          extending the 0th dimension (currently of size 3) by 3 will
+ *          append 3*5*8 = 120 elements (which must be pointed to by the
+ *          \p buffer parameter) to the dataset, making its final
+ *          dimension sizes (6, 5, 8).
+ *
+ *          If a dataset has more than one unlimited dimension, any of
+ *          those dimensions may be appended to, although only along
+ *          one dimension per call to H5DOappend().
+ *
+ * \since   1.10.0
+ *
+ */
 H5_HLDLL herr_t H5DOappend(hid_t dset_id, hid_t dxpl_id, unsigned axis, size_t extension, hid_t memtype,
                            const void *buf);
 
@@ -35,8 +100,142 @@ H5_HLDLL herr_t H5DOappend(hid_t dset_id, hid_t dxpl_id, unsigned axis, size_t e
 #ifndef H5_NO_DEPRECATED_SYMBOLS
 
 /* Compatibility wrappers for functionality moved to H5D */
+
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5DO
+ *
+ * \brief Writes a raw data chunk from a buffer directly to a dataset in a file.
+ *
+ * \param[in] dset_id       Identifier for the dataset to write to
+ * \param[in] dxpl_id       Transfer property list identifier for
+ *                          this I/O operation
+ * \param[in] filters       Mask for identifying the filters in use
+ * \param[in] offset        Logical position of the chunk’s first element
+ *                          in the dataspace
+ * \param[in] data_size     Size of the actual data to be written in bytes
+ * \param[in] buf           Buffer containing data to be written to the chunk
+ *
+ * \return \herr_t
+ *
+ * \deprecated This function was deprecated in favor of the function
+ *             H5Dwrite_chunk() of HDF5-1.10.3.
+ *             The functionality of H5DOwrite_chunk() was moved
+ *             to H5Dwrite_chunk().
+ * \deprecated For compatibility, this API call has been left as a stub which
+ *             simply calls H5Dwrite_chunk(). New code should use H5Dwrite_chunk().
+ *
+ * \details The H5DOwrite_chunk() writes a raw data chunk as specified by its
+ *          logical \p offset in a chunked dataset \p dset_id from the application
+ *          memory buffer \p buf to the dataset in the file. Typically, the data
+ *          in \p buf is preprocessed in memory by a custom transformation, such as
+ *          compression. The chunk will bypass the library’s internal data
+ *          transfer pipeline, including filters, and will be written directly to the file.
+ *
+ *          \p dxpl_id is a data transfer property list identifier.
+ *
+ *          \p filters is a mask providing a record of which filters are used
+ *          with the chunk. The default value of the mask is zero (\c 0),
+ *          indicating that all enabled filters are applied. A filter is skipped
+ *          if the bit corresponding to the filter’s position in the pipeline
+ *          (<tt>0 ≤ position < 32</tt>) is turned on. This mask is saved
+ *          with the chunk in the file.
+ *
+ *          \p offset is an array specifying the logical position of the first
+ *          element of the chunk in the dataset’s dataspace. The length of the
+ *          offset array must equal the number of dimensions, or rank, of the
+ *          dataspace. The values in \p offset must not exceed the dimension limits
+ *          and must specify a point that falls on a dataset chunk boundary.
+ *
+ *          \p data_size is the size in bytes of the chunk, representing the number of
+ *          bytes to be read from the buffer \p buf. If the data chunk has been
+ *          precompressed, \p data_size should be the size of the compressed data.
+ *
+ *          \p buf is the memory buffer containing data to be written to the chunk in the file.
+ *
+ * \attention   Exercise caution when using H5DOread_chunk() and H5DOwrite_chunk(),
+ *              as they read and write data chunks directly in a file.
+ *              H5DOwrite_chunk() bypasses hyperslab selection, the conversion of data
+ *              from one datatype to another, and the filter pipeline to write the chunk.
+ *              Developers should have experience with these processes before
+ *              using this function. Please see
+ *              <a href="https://portal.hdfgroup.org/display/HDF5/Using+the+Direct+Chunk+Write+Function">
+ *              Using the Direct Chunk Write Function</a>
+ *              for more information.
+ *
+ * \note    H5DOread_chunk() and H5DOwrite_chunk() are not
+ *          supported under parallel and do not support variable length types.
+ *
+ * \par Example
+ * The following code illustrates the use of H5DOwrite_chunk to write
+ * an entire dataset, chunk by chunk:
+ * \snippet H5DO_examples.c H5DOwrite
+ *
+ * \version 1.10.3  Function deprecated in favor of H5Dwrite_chunk.
+ *
+ * \since   1.8.11
+ */
 H5_HLDLL herr_t H5DOwrite_chunk(hid_t dset_id, hid_t dxpl_id, uint32_t filters, const hsize_t *offset,
                                 size_t data_size, const void *buf);
+
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5DO
+ *
+ * \brief Reads a raw data chunk directly from a dataset in a file into a buffer.
+ *
+ * \param[in] dset_id           Identifier for the dataset to be read
+ * \param[in] dxpl_id           Transfer property list identifier for
+ *                              this I/O operation
+ * \param[in] offset            Logical position of the chunk’s first
+                                element in the dataspace
+ * \param[in,out] filters       Mask for identifying the filters used
+ *                              with the chunk
+ * \param[in] buf               Buffer containing the chunk read from
+ *                              the dataset
+ *
+ * \return \herr_t
+ *
+ * \deprecated This function was deprecated in favor of the function
+ *             H5Dread_chunk() as of HDF5-1.10.3.
+ *             In HDF5 1.10.3, the functionality of H5DOread_chunk()
+ *             was moved to H5Dread_chunk().
+ * \deprecated For compatibility, this API call has been left as a stub which
+ *             simply calls H5Dread_chunk().  New code should use H5Dread_chunk().
+ *
+ * \details The H5DOread_chunk() reads a raw data chunk as specified
+ *          by its logical \p offset in a chunked dataset \p dset_id
+ *          from the dataset in the file into the application memory
+ *          buffer \p buf. The data in \p buf is read directly from the file
+ *          bypassing the library’s internal data transfer pipeline,
+ *          including filters.
+ *
+ *          \p dxpl_id is a data transfer property list identifier.
+ *
+ *          The mask \p filters indicates which filters are used with the
+ *          chunk when written. A zero value indicates that all enabled filters
+ *          are applied on the chunk. A filter is skipped if the bit corresponding
+ *          to the filter’s position in the pipeline
+ *          (<tt>0 ≤ position < 32</tt>) is turned on.
+ *
+ *          \p offset is an array specifying the logical position of the first
+ *          element of the chunk in the dataset’s dataspace. The length of the
+ *          offset array must equal the number of dimensions, or rank, of the
+ *          dataspace. The values in \p offset must not exceed the dimension
+ *          limits and must specify a point that falls on a dataset chunk boundary.
+ *
+ *          \p buf is the memory buffer containing the chunk read from the dataset
+ *          in the file.
+ *
+ * \par Example
+ * The following code illustrates the use of H5DOread_chunk()
+ * to read a chunk from a dataset:
+ * \snippet H5DO_examples.c H5DOread
+ *
+ * \version 1.10.3  Function deprecated in favor of H5Dread_chunk.
+ *
+ * \since   1.10.2, 1.8.19
+ */
 H5_HLDLL herr_t H5DOread_chunk(hid_t dset_id, hid_t dxpl_id, const hsize_t *offset, uint32_t *filters /*out*/,
                                void *buf /*out*/);
 
diff --git a/hl/src/H5DSpublic.h b/hl/src/H5DSpublic.h
index 979a173..1dd0781 100644
--- a/hl/src/H5DSpublic.h
+++ b/hl/src/H5DSpublic.h
@@ -19,33 +19,393 @@
 #define REFERENCE_LIST        "REFERENCE_LIST"
 #define DIMENSION_LABELS      "DIMENSION_LABELS"
 
+/**
+ * \brief Prototype for H5DSiterate_scales() operator
+ *
+ */
+//! <!-- [H5DS_iterate_t_snip] -->
 typedef herr_t (*H5DS_iterate_t)(hid_t dset, unsigned dim, hid_t scale, void *visitor_data);
+//! <!-- [H5DS_iterate_t_snip] -->
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+/**\defgroup H5DS Dimension Scales
+ *
+ * <em>Creating and manipulating HDF5 datasets that are associated with
+ * the dimension of another HDF5 dataset (H5DS)</em>
+ *
+ * \note \Bold{Programming hints:}
+ * \note To use any of these functions or subroutines,
+ *       you must first include the relevant include file (C) or
+ *       module (Fortran) in your application.
+ * \note The following line includes the HDF5 Dimension Scale package,
+ *       H5DS, in C applications:
+ *       \code #include "hdf5_hl.h" \endcode
+ * \note This line includes the H5DS module in Fortran applications:
+ *       \code use h5ds \endcode
+ *
+ * - \ref H5DSwith_new_ref
+ *   \n Determines if new references are used with dimension scales.
+ * - \ref H5DSattach_scale
+ *   \n Attach dimension scale dsid to dimension idx of dataset did.
+ * - \ref H5DSdetach_scale
+ *   \n Detach dimension scale dsid from the dimension idx of Dataset did.
+ * - \ref H5DSget_label
+ *   \n Read the label for dimension idx of did into buffer label.
+ * - \ref H5DSget_num_scales
+ *   \n Determines how many Dimension Scales are attached
+ *      to dimension idx of did.
+ * - \ref H5DSget_scale_name
+ *   \n Retrieves name of scale did into buffer name.
+ * - \ref H5DSis_attached
+ *   \n Report if dimension scale dsid is currently attached
+ *      to dimension idx of dataset did.
+ * - \ref H5DSis_scale
+ *   \n Determines whether dset is a Dimension Scale.
+ * - \ref H5DSiterate_scales
+ *   \n Iterates the operation visitor through the scales
+ *      attached to dimension dim.
+ * - \ref H5DSset_label
+ *   \n Set label for the dimension idx of did to the value label.
+ * - \ref H5DSset_scale
+ *   \n Convert dataset dsid to a dimension scale,
+ *      with optional name, dimname.
+ * .
+ *
+ */
+
+/* THIS IS A NEW ROUTINE NOT ON OLD PORTAL */
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5DS
+ *
+ * \brief Determines if new references are used with dimension scales.
+ *
+ * \param[in] obj_id        Object identifier
+ * \param[out] with_new_ref New references are used or not
+ *
+ * \return \herr_t
+ *
+ * \details H5DSwith_new_ref() takes any object identifier and checks
+ *          if new references are used for dimension scales. Currently,
+ *          new references are used when non-native VOL connector is
+ *          used or when H5_DIMENSION_SCALES_WITH_NEW_REF is set up
+ *          via configure option.
+ *
+ */
 H5_HLDLL herr_t H5DSwith_new_ref(hid_t obj_id, hbool_t *with_new_ref);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5DS
+ *
+ * \brief Attach dimension scale \p dsid to dimension \p idx of
+ *        dataset did.
+ *
+ * \param[in] did   The dataset
+ * \param[in] dsid  The scale to be attached
+ * \param[in] idx   The dimension of \p did that \p dsid is associated with
+ *
+ * \return \herr_t
+ *
+ * \details Define Dimension Scale \p dsid to be associated with
+ *          dimension \p idx of dataset \p did.
+ *
+ *          Entries are created in the #DIMENSION_LIST and
+ *          #REFERENCE_LIST attributes, as defined in section 4.2 of
+ *          <a href="https://support.hdfgroup.org/HDF5/doc/HL/H5DS_Spec.pdf">
+ *          HDF5 Dimension Scale Specification</a>.
+ *
+ *          Fails if:
+ *          - Bad arguments
+ *          - If \p dsid is not a Dimension Scale
+ *          - If \p did is a Dimension Scale
+ *            (A Dimension Scale cannot have scales.)
+ *
+ * \note The Dimension Scale \p dsid can be attached to the
+ *       same dimension more than once, which has no effect.
+ */
 H5_HLDLL herr_t H5DSattach_scale(hid_t did, hid_t dsid, unsigned int idx);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5DS
+ *
+ * \brief Detach dimension scale \p dsid from the dimension \p idx of dataset \p did.
+ *
+ * \param[in] did   The dataset
+ * \param[in] dsid  The scale to be detached
+ * \param[in] idx   The dimension of \p did to detach
+ *
+ * \return \herr_t
+ *
+ * \details If possible, deletes association of Dimension Scale \p dsid with
+ *          dimension \p idx of dataset \p did. This deletes the entries in the
+ *          #DIMENSION_LIST and #REFERENCE_LIST attributes,
+ *          as defined in section 4.2 of
+ *          <a href="https://support.hdfgroup.org/HDF5/doc/HL/H5DS_Spec.pdf">
+ *          HDF5 Dimension Scale Specification</a>.
+ *
+ *          Fails if:
+ *          - Bad arguments
+ *          - The dataset \p did or \p dsid do not exist
+ *          - The \p dsid is not a Dimension Scale
+ *          - \p dsid is not attached to \p did
+ *          .
+ *
+ * \note A scale may be associated with more than dimension of the
+ *       same dataset. If so, the detach operation only deletes one
+ *       of the associations, for \p did.
+ *
+ */
 H5_HLDLL herr_t H5DSdetach_scale(hid_t did, hid_t dsid, unsigned int idx);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5DS
+ *
+ * \brief Convert dataset \p dsid to a dimension scale,
+ *        with optional name, \p dimname.
+ *
+ * \param[in] dsid      The dataset to be made a Dimemsion Scale
+ * \param[in] dimname   The dimension name (optional), NULL if the
+ *                      dimension has no name.
+ *
+ * \return \herr_t
+ *
+ * \details The dataset \p dsid is converted to a Dimension Scale dataset,
+ *          as defined above. Creates the CLASS attribute, set to the value
+ *          "DIMENSION_SCALE" and an empty #REFERENCE_LIST attribute,
+ *          as described in
+ *          <a href="https://support.hdfgroup.org/HDF5/doc/HL/H5DS_Spec.pdf">
+ *          HDF5 Dimension Scale Specification</a>.
+ *          (PDF, see section 4.2).
+ *
+ *          If \p dimname is specified, then an attribute called NAME
+ *          is created, with the value \p dimname.
+ *
+ *          Fails if:
+ *          - Bad arguments
+ *          - If \p dsid is already a scale
+ *          - If \p dsid is a dataset which already has dimension scales
+ *          .
+ *
+ *          If the dataset was created with the Table, Image, or Palette interface [9],
+ *          it is not recommended to convert to a Dimension Scale.
+ *          (These Datasets will have a CLASS Table, Image, or Palette.)
+ *
+ * \todo what is [9] after Palette interface?
+ */
 H5_HLDLL herr_t H5DSset_scale(hid_t dsid, const char *dimname);
 
-H5_HLDLL int H5DSget_num_scales(hid_t did, unsigned int dim);
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5DS
+ *
+ * \brief Determines how many Dimension Scales are attached
+ *        to dimension \p idx of \p did.
+ *
+ * \param[in] did   The dataset to query
+ * \param[in] idx   The dimension of \p did to query
+ *
+ * \return Returns the number of Dimension Scales associated
+ *         with \p did, if successful, otherwise returns a
+ *         negative value.
+ *
+ * \details H5DSget_num_scales() determines how many Dimension
+ *          Scales are attached to dimension \p idx of
+ *          dataset \p did.
+ *
+ */
+H5_HLDLL int H5DSget_num_scales(hid_t did, unsigned int idx);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5DS
+ *
+ * \brief Set label for the dimension \p idx of \p did
+ *        to the value \p label.
+ *
+ * \param[in] did   The dataset
+ * \param[in] idx   The dimension
+ * \param[in] label The label
+ *
+ * \return  \herr_t
+ *
+ * \details Sets the #DIMENSION_LABELS for dimension \p idx of
+ *          dataset \p did. If the dimension had a label,
+ *          the new value replaces the old.
+ *
+ *          Fails if:
+ *          - Bad arguments
+ *          .
+ */
 H5_HLDLL herr_t H5DSset_label(hid_t did, unsigned int idx, const char *label);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5DS
+ *
+ * \brief Read the label for dimension \p idx of \p did into buffer \p label.
+ *
+ * \param[in] did       The dataset
+ * \param[in] idx       The dimension
+ * \param[out] label    The label
+ * \param[in] size      The length of the label buffer
+ *
+ * \return  Upon success, size of label or zero if no label found.
+ *          Negative if fail.
+ *
+ * \details Returns the value of the #DIMENSION_LABELS for
+ *          dimension \p idx of dataset \p did, if set.
+ *          Up to \p size characters of the name are copied into
+ *          the buffer \p label.  If the label is longer than
+ *          \p size, it will be truncated to fit.  The parameter
+ *          \p size is set to the size of the returned \p label.
+ *
+ *          If \p did has no label, the return value of
+ *          \p label is NULL.
+ *
+ *          Fails if:
+ *          - Bad arguments
+ *          .
+ */
 H5_HLDLL ssize_t H5DSget_label(hid_t did, unsigned int idx, char *label, size_t size);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5DS
+ *
+ * \brief Retrieves name of scale \p did into buffer \p name.
+ *
+ * \param[in] did       Dimension scale identifier
+ * \param[out] name     Buffer to contain the returned name
+ * \param[in] size      Size in bytes, of the \p name buffer
+ *
+ * \return  Upon success, the length of the scale name or zero if no name found.
+ *          Negative if fail.
+ *
+ * \details H5DSget_scale_name() retrieves the name attribute
+ *          for scale \p did.
+ *
+ *          Up to \p size characters of the scale name are returned
+ *          in \p name; additional characters, if any, are not returned
+ *          to the user application.
+ *
+ *          If the length of the name, which determines the required value of
+ *          \p size, is unknown, a preliminary H5DSget_scale_name() call can
+ *          be made by setting \p name to NULL. The return value of this call
+ *          will be the size of the scale name; that value plus one (1) can then
+ *          be assigned to \p size for a second H5DSget_scale_name() call,
+ *          which will retrieve the actual name.  (The value passed in with the
+ *          parameter \p size must be one greater than size in bytes of the actual
+ *          name in order to accommodate the null terminator;
+ *          if \p size is set to the exact size of the name, the last byte
+ *          passed back will contain the null terminator and the last character
+ *          will be missing from the name passed back to the calling application.)
+ */
 H5_HLDLL ssize_t H5DSget_scale_name(hid_t did, char *name, size_t size);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5DS
+ *
+ * \brief Determines whether \p did is a Dimension Scale.
+ *
+ * \param[in] did   The dataset to query
+ *
+ * \return  \htri_t
+ *
+ * \details H5DSis_scale() determines if \p did is a Dimension Scale,
+ *          i.e., has class="DIMENSION_SCALE").
+ *
+ */
 H5_HLDLL htri_t H5DSis_scale(hid_t did);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5DS
+ *
+ * \brief Iterates the operation visitor through the scales
+ *        attached to dimension \p dim.
+ *
+ * \param[in]       did             The dataset
+ * \param[in]       dim             The dimension of dataset \p did
+ * \param[in,out]   idx             Input the index to start iterating,
+ *                                  output the next index to visit.
+ *                                  If NULL, start at the first position.
+ * \param[in]       visitor         The visitor function
+ * \param[in]       visitor_data    Arbitrary data to pass to the
+ *                                  visitor function
+ *
+ * \return  Returns the return value of the last operator if it was
+ *          non-zero, or zero if all scales were processed.
+ *
+ * \details H5DSiterate_scales() iterates over the scales attached to
+ *          dimension \p dim of dataset \p did. For each scale in the
+ *          list, the \p visitor_data and some additional information,
+ *          specified below, are passed to the \p visitor function.
+ *          The iteration begins with the \p idx object in the
+ *          group and the next element to be processed by the operator
+ *          is returned in \p idx. If \p idx is NULL, then the
+ *          iterator starts at the first group member; since no
+ *          stopping point is returned in this case,
+ *          the iterator cannot be restarted if one of the calls
+ *          to its operator returns non-zero.
+ *
+ *          The prototype for \ref H5DS_iterate_t is:
+ *          \snippet this H5DS_iterate_t_snip
+ *
+ *          The operation receives the Dimension Scale dataset
+ *          identifier, \p scale, and the pointer to the operator
+ *          data passed in to H5DSiterate_scales(), \p visitor_data.
+ *
+ *          The return values from an operator are:
+ *
+ *          - Zero causes the iterator to continue, returning zero
+ *            when all group members have been processed.
+ *          - Positive causes the iterator to immediately return that
+ *            positive value, indicating short-circuit success.
+ *            The iterator can be restarted at the next group member.
+ *          - Negative causes the iterator to immediately return
+ *            that value, indicating failure. The iterator can be
+ *            restarted at the next group member.
+ *          .
+ *
+ *          H5DSiterate_scales() assumes that the scales of the
+ *          dimension identified by \p dim remain unchanged through
+ *          the iteration. If the membership changes during the iteration,
+ *          the function's behavior is undefined.
+ */
 H5_HLDLL herr_t H5DSiterate_scales(hid_t did, unsigned int dim, int *idx, H5DS_iterate_t visitor,
                                    void *visitor_data);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5DS
+ *
+ * \brief Report if dimension scale \p dsid is currently attached to
+ *        dimension \p idx of dataset \p did.
+ *
+ * \param[in] did   The dataset
+ * \param[in] dsid  The scale to be attached
+ * \param[in] idx   The dimension of \p did that \p dsid is associated with
+ *
+ * \return  \htri_t
+ *
+ * \details Report if dimension scale \p dsid is currently attached to
+ *          dimension \p idx of dataset \p did.
+ *
+ *          Fails if:
+ *          - Bad arguments
+ *          - If \p dsid is not a Dimension Scale
+ *          - The \p dsid is not a Dimension Scale
+ *          - If \p did is a Dimension Scale (A Dimension Scale cannot have scales.)
+ *          .
+ *
+ */
 H5_HLDLL htri_t H5DSis_attached(hid_t did, hid_t dsid, unsigned int idx);
 
 #ifdef __cplusplus
diff --git a/hl/src/H5IMpublic.h b/hl/src/H5IMpublic.h
index 2843942..2129509 100644
--- a/hl/src/H5IMpublic.h
+++ b/hl/src/H5IMpublic.h
@@ -18,33 +18,326 @@
 extern "C" {
 #endif
 
+/**\defgroup H5IM Images
+ *
+ * <em>Creating and manipulating HDF5 datasets intended to be
+ * interpreted as images (H5IM)</em>
+ *
+ * The specification for the Images API is presented in another
+ * document: \ref IMG
+ * This version of the API is primarily concerned with two dimensional raster
+ * data similar to HDF4 Raster Images.
+ * The HDF5 Images API uses the \ref H5LT HDF5 API.
+ *
+ * \note \Bold{Programming hints:}
+ * \note To use any of these functions or subroutines,
+ *       you must first include the relevant include file (C) or
+ *       module (Fortran) in your application.
+ * \note The following line includes the HDF5 Images package, H5IM,
+ *       in C applications:
+ *       \code #include "hdf5_hl.h" \endcode
+ * \note This line includes the H5IM module in Fortran applications:
+ *       \code use h5im \endcode
+ *
+ * - \ref H5IMget_image_info
+ *    \n Gets information about an image dataset (dimensions,
+ *       interlace mode and number of associated palettes).
+ * - \ref H5IMget_npalettes
+ *   \n Gets the number of palettes associated to an image.
+ * - \ref H5IMget_palette
+ *   \n Gets the palette dataset.
+ * - \ref H5IMget_palette_info
+ *   \n Gets information about a palette dataset (dimensions).
+ * - \ref H5IMis_image
+ *   \n Inquires if a dataset is an image
+ * - \ref H5IMis_palette
+ *   \n Inquires if a dataset is a palette.
+ * - \ref H5IMlink_palette
+ *   \n Attaches a palette to an image.
+ * - \ref H5IMmake_image_8bit
+ *   \n Creates and writes an image.
+ * - \ref H5IMmake_image_24bit
+ *   \n Creates and writes a true color image.
+ * - \ref H5IMmake_palette
+ *   \n Creates and writes a palette.
+ * - \ref H5IMread_image
+ *   \n Reads image data from disk.
+ * - \ref H5IMunlink_palette
+ *   \n Dettaches a palette from an image.
+ * .
+ *
+ */
+
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5IM
+ *
+ * \brief Creates and writes an image.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name The name of the dataset to create
+ * \param[in] width     The width of the image
+ * \param[in] height    The height of the image
+ * \param[in] buffer    Buffer with data to be written to the dataset
+ *
+ * \return \herr_t
+ *
+ * \details H5IMmake_image_8bit() creates and writes a dataset named
+ *          \p dset_name attached to the file or group specified by the
+ *          identifier \p loc_id. Attributes conforming to the HDF5 Image
+ *          and Palette specification for an indexed image are attached to
+ *          the dataset, thus identifying it as an image. The image data is
+ *          of the type #H5T_NATIVE_UCHAR. An indexed image is an image in
+ *          which each each pixel information storage is an index to a
+ *          table palette.
+ *
+ */
 H5_HLDLL herr_t H5IMmake_image_8bit(hid_t loc_id, const char *dset_name, hsize_t width, hsize_t height,
                                     const unsigned char *buffer);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5IM
+ *
+ * \brief Creates and writes a true color image.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name The name of the dataset to create
+ * \param[in] width     The width of the image
+ * \param[in] height    The height of the image
+ * \param[in] interlace String defining the interlace mode
+ * \param[in] buffer    Buffer with data to be written to the dataset
+ *
+ * \return \herr_t
+ *
+ * \details H5IMmake_image_24bit() creates and writes a dataset named
+ *          \p dset_name attached to the file or group specified by the
+ *          identifier \p loc_id. This function defines a true color image
+ *          conforming to the HDF5 Image and Palette specification.
+ *          The function assumes that the image data is of the type
+ *          #H5T_NATIVE_UCHAR.
+ *
+ *          A true color image is an image where the pixel storage contains
+ *          several color planes. In a 24 bit RGB color model, these planes
+ *          are red, green and blue. In a true color image the stream of bytes
+ *          can be stored in several different ways, thus defining the
+ *          interlace (or interleaving) mode. The 2 most used types of interlace mode
+ *          are interlace by pixel and interlace by plane. In the 24 bit RGB color
+ *          model example, interlace by plane means all the red components for the
+ *          entire dataset are stored first, followed by all the green components,
+ *          and then by all the blue components. Interlace by pixel in this example
+ *          means that for each pixel the sequence red, green, blue is defined.
+ *          In this function, the interlace mode is defined in the parameter
+ *          \p interlace, a string that can have the values INTERLACE_PIXEL
+ *          or INTERLACE_PLANE.
+ *
+ */
 H5_HLDLL herr_t H5IMmake_image_24bit(hid_t loc_id, const char *dset_name, hsize_t width, hsize_t height,
                                      const char *interlace, const unsigned char *buffer);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5IM
+ *
+ * \brief Gets information about an image dataset
+ *        (dimensions, interlace mode and number of associated palettes).
+ *
+ * \fg_loc_id
+ * \param[in] dset_name     The name of the dataset
+ * \param[out] width        The width of the image
+ * \param[out] height       The height of the image
+ * \param[out] planes       The number of color planes of the image
+ * \param[out] interlace    The interlace mode of the image
+ * \param[out] npals        The number of palettes associated to the image
+ *
+ * \return \herr_t
+ *
+ * \details H5IMget_image_info() gets information about an image
+ *          named \p dset_name attached to the file or group specified
+ *          by the identifier \p loc_id.
+ *
+ */
 H5_HLDLL herr_t H5IMget_image_info(hid_t loc_id, const char *dset_name, hsize_t *width, hsize_t *height,
                                    hsize_t *planes, char *interlace, hssize_t *npals);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5IM
+ *
+ * \brief Reads image data from disk.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name The name of the dataset to create
+ * \param[out] buffer   Buffer with data to store the image
+ *
+ * \return \herr_t
+ *
+ * \details H5IMread_image() reads a dataset named \p dset_name
+ *          attached to the file or group specified by the
+ *          identifier \p loc_id.
+ *
+ */
 H5_HLDLL herr_t H5IMread_image(hid_t loc_id, const char *dset_name, unsigned char *buffer);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5IM
+ *
+ * \brief Creates and writes a palette.
+ *
+ * \fg_loc_id
+ * \param[in] pal_name  The name of the palette
+ * \param[in] pal_dims  An array of the size of the palette dimensions
+ * \param[in] pal_data  Buffer with data to be written to the dataset
+ *
+ * \return \herr_t
+ *
+ * \details H5IMmake_palette() creates and writes a dataset
+ *          named \p pal_name. Attributes conforming to the HDF5 Image and
+ *          Palette specification are attached to the dataset, thus
+ *          identifying it as a palette. The palette data is of the
+ *          type #H5T_NATIVE_UCHAR.
+ *
+ */
 H5_HLDLL herr_t H5IMmake_palette(hid_t loc_id, const char *pal_name, const hsize_t *pal_dims,
                                  const unsigned char *pal_data);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5IM
+ *
+ * \brief Attaches a palette to an image.
+ *
+ * \fg_loc_id
+ * \param[in] image_name    The name of the dataset to attach the palette to
+ * \param[in] pal_name      The name of the palette
+ *
+ * \return \herr_t
+ *
+ * \details H5IMlink_palette() attaches a palette named \p pal_name
+ *          to an image specified by \p image_name. The image dataset
+ *          may or not already have an attached palette. If it has,
+ *          the array of palette references is extended to hold the reference
+ *          to the new palette.
+ *
+ */
 H5_HLDLL herr_t H5IMlink_palette(hid_t loc_id, const char *image_name, const char *pal_name);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5IM
+ *
+ * \brief Dettaches a palette from an image.
+ *
+ * \fg_loc_id
+ * \param[in] image_name    The name of the image dataset
+ * \param[in] pal_name      The name of the palette
+ *
+ * \return \herr_t
+ *
+ * \details H5IMunlink_palette() dettaches a palette from an image
+ *          specified by \p image_name.
+ *
+ */
 H5_HLDLL herr_t H5IMunlink_palette(hid_t loc_id, const char *image_name, const char *pal_name);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5IM
+ *
+ * \brief Gets the number of palettes associated to an image.
+ *
+ * \fg_loc_id
+ * \param[in] image_name    The name of the image dataset
+ * \param[out] npals        The number of palettes
+ *
+ * \return \herr_t
+ *
+ * \details H5IMget_npalettes() gets the number of palettes associated to
+ *          an image specified by \p image_name.
+ *
+ */
 H5_HLDLL herr_t H5IMget_npalettes(hid_t loc_id, const char *image_name, hssize_t *npals);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5IM
+ *
+ * \brief Gets information about a palette dataset (dimensions).
+ *
+ * \fg_loc_id
+ * \param[in] image_name    The name of the image dataset
+ * \param[in] pal_number    The zero based index that identifies
+ *                          the palette
+ * \param[out] pal_dims     The dimensions of the palette dataset
+ *
+ * \return \herr_t
+ *
+ * \details H5IMget_palette_info() gets the dimensions of the palette
+ *          dataset identified by \p pal_number (a zero based index)
+ *          associated to an image specified by \p image_name.
+ *
+ */
 H5_HLDLL herr_t H5IMget_palette_info(hid_t loc_id, const char *image_name, int pal_number, hsize_t *pal_dims);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5IM
+ *
+ * \brief Gets the palette dataset.
+ *
+ * \fg_loc_id
+ * \param[in] image_name    The name of the image dataset
+ * \param[in] pal_number    The zero based index that identifies
+ *                          the palette
+ * \param[out] pal_data     The palette dataset
+ *
+ * \return \herr_t
+ *
+ * \details H5IMget_palette() gets the palette dataset identified
+ *          by \p pal_number (a zero based index) associated to an
+ *          image specified by \p image_name.
+ *
+ */
 H5_HLDLL herr_t H5IMget_palette(hid_t loc_id, const char *image_name, int pal_number,
                                 unsigned char *pal_data);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5IM
+ *
+ * \brief Inquires if a dataset is an image.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name    The name of the dataset
+ *
+ * \return \htri_t
+ *
+ * \details H5IMis_image() inquires if a dataset named \p dset_name,
+ *          attached to the file or group specified by the identifier
+ *          \p loc_id, is an image based on the HDF5 Image and Palette
+ *          Specification.
+ *
+ */
 H5_HLDLL herr_t H5IMis_image(hid_t loc_id, const char *dset_name);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5IM
+ *
+ * \brief Inquires if a dataset is a palette
+ *
+ * \fg_loc_id
+ * \param[in] dset_name    The name of the dataset
+ *
+ * \return \htri_t
+ *
+ * \details H5IMis_palette() inquires if a dataset named \p dset_name,
+ *          attached to the file or group specified by the
+ *          identifier \p loc_id, is a palette based on the HDF5
+ *          Image and Palette Specification.
+ *
+ */
 H5_HLDLL herr_t H5IMis_palette(hid_t loc_id, const char *dset_name);
 
 #ifdef __cplusplus
diff --git a/hl/src/H5LDpublic.h b/hl/src/H5LDpublic.h
index 011b208..826da40 100644
--- a/hl/src/H5LDpublic.h
+++ b/hl/src/H5LDpublic.h
@@ -18,8 +18,149 @@
 extern "C" {
 #endif
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Retrieves the current dimension sizes of a dataset.
+ *
+ * \param[in] did       The dataset identifier
+ * \param[out] cur_dims The current dimension sizes of the dataset
+ *
+ * \return \herr_t
+ *
+ * \details H5LDget_dset_dims() retrieves the current dimension sizes
+ *          for the dataset \p did through the parameter \p cur_dims.
+ *          It will return failure if \p cur_dims is NULL.
+ *
+ * \note See Also:
+ * \note Dataset Watch functions (used with \ref h5watch):
+ *       - H5LDget_dset_dims()
+ *       - H5LDget_dset_elmts()
+ *       - H5LDget_dset_type_size()
+ *       .
+ *
+ * \par Example:
+ * See the example code in H5LDget_dset_elmts() for usage of this routine.
+ *
+ * \since 1.10.0
+ *
+ */
 H5_HLDLL herr_t H5LDget_dset_dims(hid_t did, hsize_t *cur_dims);
+
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Returns the size in bytes of the dataset’s datatype
+ *
+ * \param[in] did       The dataset identifier
+ * \param[in] fields    The pointer to a comma-separated list of fields for a compound datatype
+ *
+ * \return If successful, returns the size in bytes of the
+ *         dataset’s datatype. Otherwise, returns 0.
+ *
+ * \details H5LDget_dset_type_size() allows the user to find out the datatype
+ *          size for the dataset associated with \p did. If the
+ *          parameter \p fields is NULL, this routine just returns the size
+ *          of the dataset’s datatype. If the dataset has a compound datatype
+ *          and \p fields is non-NULL, this routine returns the size of the
+ *          datatype(s) for the selected fields specified in \p fields.
+ *          Note that ’,’ is the separator for the fields of a compound
+ *          datatype while ’.’ (dot) is the separator for a nested field.
+ *          Use a backslash ( \ ) to escape characters in field names that
+ *          conflict with these two separators.
+ *
+ * \note See Also:
+ * \note Dataset Watch functions (used with \ref h5watch):
+ *       - H5LDget_dset_dims()
+ *       - H5LDget_dset_elmts()
+ *       - H5LDget_dset_type_size()
+ *       .
+ *
+ * \par Example:
+ * See the example code in H5LDget_dset_elmts() for usage of this routine.
+ *
+ * \since 1.10.0
+ *
+ */
 H5_HLDLL size_t H5LDget_dset_type_size(hid_t did, const char *fields);
+
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Retrieves selected data from the dataset
+ *
+ * \param[in] did       The dataset identifier
+ * \param[in] prev_dims The previous dimension size of the dataset
+ * \param[in] cur_dims  The current dimension sizes of the dataset
+ * \param[in] fields    A string containing a comma-separated list
+ *                      of fields for a compound datatype
+ * \param[out] buf      Buffer for storing data retrieved from the
+ *                      dataset
+ *
+ * \return \herr_t
+ *
+ * \details H5LDget_dset_dims() retrieves selected data of the dataset
+ *          \p did and stores the data in the parameter \p buf.
+ *          The difference between the parameters \p prev_dims and
+ *          \p cur_dims indicates the dimension sizes of the data to be
+ *          selected from the dataset. Note that \p cur_dims must have
+ *          at least one dimension whose size is greater than the
+ *          corresponding dimension in \p prev_dims. Users can
+ *          determine the size of buf by multipling the datatype
+ *          size of the dataset by the number of selected elements.
+ *
+ *          If the parameter \p fields is NULL, this routine returns
+ *          data for the selected elements of the dataset. If \p fields
+ *          is not NULL and the dataset has a compound datatype, \p fields
+ *          is a string containing a comma-separated list of fields.
+ *          Each name in \p fields specifies a field in the compound
+ *          datatype, and this routine returns data of the selected fields
+ *          for the dataset's selected elements. Note that ’,’ is the
+ *          separator for the fields of a compound datatype while
+ *          ’.’ is the separator for a nested field. Use backslash to
+ *          escape characters in field names that conflict with these
+ *          two separators.
+ *
+ * \note See Also:
+ * \note Dataset Watch functions (used with \ref h5watch):
+ *       - H5LDget_dset_dims()
+ *       - H5LDget_dset_elmts()
+ *       - H5LDget_dset_type_size()
+ *       .
+ *
+ * \par Examples:
+ *
+ * For the first example, \c DSET1 is a two-dimensional chunked dataset with atomic type defined below:
+ * \snippet H5LDget_dset_elmts.c first_declare
+ *
+ * The following coding sample illustrates the reading of
+ * data elements appended to the dataset \c DSET1:
+ * \snippet H5LDget_dset_elmts.c first_reading
+ *
+ * The output buffer will contain data elements selected from
+ * \c DSET1 as follows:
+ * \snippet H5LDget_dset_elmts.c first_output
+ *
+ * For the second example, DSET2 is a one-dimensional chunked dataset
+ * with compound type defined below:
+ * \snippet H5LDget_dset_elmts.c second_declare
+ *
+ * The following coding sample illustrates the reading of data elements
+ * appended to the dataset \c DSET2 with compound datatype.
+ * This example selects only 2 fields: the fourth field \c d and a
+ * subfield of the sixth field \c s2.c:
+ * \snippet H5LDget_dset_elmts.c second_reading
+ *
+ * The output buffer will contain data for \c d and \c s2.c
+ * selected from \c DSET2 as follows:
+ * \snippet H5LDget_dset_elmts.c second_output
+ *
+ * \since 1.10.0
+ *
+ */
 H5_HLDLL herr_t H5LDget_dset_elmts(hid_t did, const hsize_t *prev_dims, const hsize_t *cur_dims,
                                    const char *fields, void *buf);
 
diff --git a/hl/src/H5LTpublic.h b/hl/src/H5LTpublic.h
index a6c7c84..2f87944 100644
--- a/hl/src/H5LTpublic.h
+++ b/hl/src/H5LTpublic.h
@@ -35,6 +35,116 @@ typedef enum H5LT_lang_t {
 extern "C" {
 #endif
 
+/**\defgroup H5LT Lite
+ * <em>Functions used to simplify creating and manipulating datasets,
+ * attributes and other features (H5LT, H5LD)</em>
+ *
+ * The HDF5 Lite API consists of higher-level functions which do
+ * more operations per call than the basic HDF5 interface.
+ * The purpose is to wrap intuitive functions around certain sets
+ * of features in the existing APIs.
+ * It has the following sets of functions listed below.
+ *
+ * \note \Bold{Programming hints:}
+ * \note To use any of these functions or subroutines,
+ *       you must first include the relevant include file (C) or
+ *       module (Fortran) in your application.
+ * \note The following line includes the HDF5 Lite package, H5LT,
+ *       in C applications:
+ *       \code #include "hdf5_hl.h" \endcode
+ * \note This line includes the H5LT module in Fortran applications:
+ *       \code use h5lt \endcode
+ *
+ * - Dataset Functions
+ *   - Make dataset functions
+ *      - \ref H5LTmake_dataset
+ *      - \ref H5LTmake_dataset_char
+ *      - \ref H5LTmake_dataset_short
+ *      - \ref H5LTmake_dataset_int
+ *      - \ref H5LTmake_dataset_long
+ *      - \ref H5LTmake_dataset_float
+ *      - \ref H5LTmake_dataset_double
+ *      - \ref H5LTmake_dataset_string
+ *      .
+ *   - Read dataset functions
+ *      - \ref H5LTread_dataset
+ *      - \ref H5LTread_dataset_char
+ *      - \ref H5LTread_dataset_short
+ *      - \ref H5LTread_dataset_int
+ *      - \ref H5LTread_dataset_long
+ *      - \ref H5LTread_dataset_float
+ *      - \ref H5LTread_dataset_double
+ *      - \ref H5LTread_dataset_string
+ *      .
+ *   - Query dataset functions
+ *      - \ref H5LTfind_dataset
+ *      - \ref H5LTget_dataset_ndims
+ *      - \ref H5LTget_dataset_info
+ *      .
+ *   - Dataset watch functions
+ *      - \ref H5LDget_dset_dims
+ *      - \ref H5LDget_dset_elmts
+ *      - \ref H5LDget_dset_type_size
+ *      .
+ *   .
+ * - Attribute Functions
+ *   - Set attribute functions
+ *      - \ref H5LTset_attribute_string
+ *      - \ref H5LTset_attribute_char
+ *      - \ref H5LTset_attribute_uchar
+ *      - \ref H5LTset_attribute_short
+ *      - \ref H5LTset_attribute_ushort
+ *      - \ref H5LTset_attribute_int
+ *      - \ref H5LTset_attribute_uint
+ *      - \ref H5LTset_attribute_long
+ *      - \ref H5LTset_attribute_long_long
+ *      - \ref H5LTset_attribute_ulong
+ *      - \ref H5LTset_attribute_ullong
+ *      - \ref H5LTset_attribute_float
+ *      - \ref H5LTset_attribute_double
+ *      - \ref H5LTset_attribute_f (fortran ONLY)
+ *      .
+ *   - Get attribute functions
+ *      - \ref H5LTget_attribute
+ *      - \ref H5LTget_attribute_string
+ *      - \ref H5LTget_attribute_char
+ *      - \ref H5LTget_attribute_uchar
+ *      - \ref H5LTget_attribute_short
+ *      - \ref H5LTget_attribute_ushort
+ *      - \ref H5LTget_attribute_int
+ *      - \ref H5LTget_attribute_uint
+ *      - \ref H5LTget_attribute_long
+ *      - \ref H5LTget_attribute_long_long
+ *      - \ref H5LTget_attribute_ulong
+ *      - \ref H5LTget_attribute_ullong
+ *      - \ref H5LTget_attribute_float
+ *      - \ref H5LTget_attribute_double
+ *      .
+ *   - Query attribute functions
+ *      - \ref H5LTfind_attribute
+ *      - \ref H5LTget_attribute_info
+ *      - \ref H5LTget_attribute_ndims
+ *      .
+ *   .
+ * - Datatype Functions
+ *   - Datatype translation functions
+ *      - \ref H5LTtext_to_dtype
+ *      - \ref H5LTdtype_to_text
+ *      .
+ *   .
+ * - File image function
+ *   - Open file image function
+ *      - \ref H5LTopen_file_image
+ *      .
+ *   .
+ * - Path and object function
+ *   - Query path and object function
+ *      - \ref H5LTpath_valid
+ *      .
+ *   .
+ * .
+ */
+
 /*-------------------------------------------------------------------------
  *
  * Make dataset functions
@@ -42,27 +152,214 @@ extern "C" {
  *-------------------------------------------------------------------------
  */
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes a dataset of a type \p type_id.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name The Name of the dataset to create
+ * \param[in] rank      Number of dimensions of dataspace
+ * \param[in] dims      An array of the size of each dimension
+ * \param[in] type_id   Identifier of the datatype to use when creating the dataset
+ * \param[in] buffer    Buffer with data to be written to the dataset
+ *
+ * \return \herr_t
+ *
+ * \details H5LTmake_dataset() creates and writes a dataset named
+ *          \p dset_name attached to the object specified by the
+ *          identifier \p loc_id.
+ *
+ *          The parameter \p type_id can be any valid HDF5 Prdefined \ref PDTNAT;
+ *          For example, setting \p type_id to #H5T_NATIVE_INT will result in a dataset
+ *          of <em>signed \e integer datatype</em>.
+ *
+ * \version 1.10.0 Fortran 2003 subroutine added to accept a C address of the data buffer.
+ * \version 1.8.7 Fortran subroutine modified in this release to accommodate arrays
+ *                with more than three dimensions.
+ *
+ */
 H5_HLDLL herr_t H5LTmake_dataset(hid_t loc_id, const char *dset_name, int rank, const hsize_t *dims,
                                  hid_t type_id, const void *buffer);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes a dataset.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name The Name of the dataset to create
+ * \param[in] rank      Number of dimensions of dataspace
+ * \param[in] dims      An array of the size of each dimension
+ * \param[in] buffer    Buffer with data to be written to the dataset
+ *
+ * \return \herr_t
+ *
+ * \details H5LTmake_dataset_char() creates and writes a dataset
+ *          named \p dset_name attached to the object specified by
+ *          the identifier \p loc_id.
+ *
+ *          The dataset’s datatype will be \e character, #H5T_NATIVE_CHAR.
+ *
+ */
 H5_HLDLL herr_t H5LTmake_dataset_char(hid_t loc_id, const char *dset_name, int rank, const hsize_t *dims,
                                       const char *buffer);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes a dataset.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name The Name of the dataset to create
+ * \param[in] rank      Number of dimensions of dataspace
+ * \param[in] dims      An array of the size of each dimension
+ * \param[in] buffer    Buffer with data to be written to the dataset
+ *
+ * \return \herr_t
+ *
+ * \details H5LTmake_dataset_short() creates and writes a dataset
+ *          named \p dset_name attached to the object specified by
+ *          the identifier \p loc_id.
+ *
+ *          The dataset’s datatype will be <em>short signed integer</em>,
+ *          #H5T_NATIVE_SHORT.
+ *
+ */
 H5_HLDLL herr_t H5LTmake_dataset_short(hid_t loc_id, const char *dset_name, int rank, const hsize_t *dims,
                                        const short *buffer);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes a dataset.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name The Name of the dataset to create
+ * \param[in] rank      Number of dimensions of dataspace
+ * \param[in] dims      An array of the size of each dimension
+ * \param[in] buffer    Buffer with data to be written to the dataset
+ *
+ * \return \herr_t
+ *
+ * \details H5LTmake_dataset_int() creates and writes a dataset
+ *          named \p dset_name attached to the object specified by
+ *          the identifier \p loc_id.
+ *
+ *          The dataset’s datatype will be <em>native signed integer</em>,
+ *          #H5T_NATIVE_INT.
+ *
+ * \version Fortran subroutine modified in this release to accommodate
+ *          arrays with more than three dimensions.
+ *
+ */
 H5_HLDLL herr_t H5LTmake_dataset_int(hid_t loc_id, const char *dset_name, int rank, const hsize_t *dims,
                                      const int *buffer);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes a dataset.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name The Name of the dataset to create
+ * \param[in] rank      Number of dimensions of dataspace
+ * \param[in] dims      An array of the size of each dimension
+ * \param[in] buffer    Buffer with data to be written to the dataset
+ *
+ * \return \herr_t
+ *
+ * \details H5LTmake_dataset_long() creates and writes a dataset
+ *          named \p dset_name attached to the object specified by
+ *          the identifier \p loc_id.
+ *
+ *          The dataset’s datatype will be <em>long signed integer</em>,
+ *          #H5T_NATIVE_LONG.
+ *
+ */
 H5_HLDLL herr_t H5LTmake_dataset_long(hid_t loc_id, const char *dset_name, int rank, const hsize_t *dims,
                                       const long *buffer);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes a dataset.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name The Name of the dataset to create
+ * \param[in] rank      Number of dimensions of dataspace
+ * \param[in] dims      An array of the size of each dimension
+ * \param[in] buffer    Buffer with data to be written to the dataset
+ *
+ * \return \herr_t
+ *
+ * \details H5LTmake_dataset_float() creates and writes a dataset
+ *          named \p dset_name attached to the object specified by
+ *          the identifier \p loc_id.
+ *
+ *          The dataset’s datatype will be <em>native floating point</em>,
+ *          #H5T_NATIVE_FLOAT.
+ *
+ * \version 1.8.7 Fortran subroutine modified in this release to accommodate
+ *                arrays with more than three dimensions.
+ *
+ */
 H5_HLDLL herr_t H5LTmake_dataset_float(hid_t loc_id, const char *dset_name, int rank, const hsize_t *dims,
                                        const float *buffer);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes a dataset.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name The Name of the dataset to create
+ * \param[in] rank      Number of dimensions of dataspace
+ * \param[in] dims      An array of the size of each dimension
+ * \param[in] buffer    Buffer with data to be written to the dataset
+ *
+ * \return \herr_t
+ *
+ * \details H5LTmake_dataset_double() creates and writes a dataset
+ *          named \p dset_name attached to the object specified by
+ *          the identifier \p loc_id.
+ *
+ *          The dataset’s datatype will be
+ *          <em>native floating-point double</em>, #H5T_NATIVE_DOUBLE.
+ *
+ * \version 1.8.7 Fortran subroutine modified in this release to accommodate
+ *                arrays with more than three dimensions.
+ *
+ */
 H5_HLDLL herr_t H5LTmake_dataset_double(hid_t loc_id, const char *dset_name, int rank, const hsize_t *dims,
                                         const double *buffer);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes a dataset with string datatype.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name The name of the dataset to create
+ * \param[in] buf       Buffer with data to be written to the dataset
+ *
+ * \return \herr_t
+ *
+ * \details H5LTmake_dataset_string() creates and writes a dataset
+ *          named \p dset_name attached to the object specified by
+ *          the identifier \p loc_id.
+ *
+ *          The dataset’s datatype will be <em>C string</em>, #H5T_C_S1.
+ *
+ */
 H5_HLDLL herr_t H5LTmake_dataset_string(hid_t loc_id, const char *dset_name, const char *buf);
 
 /*-------------------------------------------------------------------------
@@ -72,20 +369,169 @@ H5_HLDLL herr_t H5LTmake_dataset_string(hid_t loc_id, const char *dset_name, con
  *-------------------------------------------------------------------------
  */
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads a dataset from disk.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name The name of the dataset to read
+ * \param[in] type_id   Identifier of the datatype to use when reading
+ *                      the dataset
+ * \param[out] buffer   Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTread_dataset() reads a dataset named \p dset_name
+ *          attached to the object specified by the identifier \p loc_id.
+ *
+ * \version 1.10.0  Fortran 2003 subroutine added to accept a C
+ *                  address of the data buffer.
+ * \version 1.8.7   Fortran subroutine modified in this release to
+ *                  accommodate arrays with more than three dimensions.
+ *
+ */
 H5_HLDLL herr_t H5LTread_dataset(hid_t loc_id, const char *dset_name, hid_t type_id, void *buffer);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads a dataset from disk.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name The name of the dataset to read
+ * \param[out] buffer   Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTread_dataset_char() reads a dataset named \p dset_name
+ *          attached to the object specified by the identifier \p loc_id.
+ *          The HDF5 datatype is #H5T_NATIVE_CHAR.
+ *
+ */
 H5_HLDLL herr_t H5LTread_dataset_char(hid_t loc_id, const char *dset_name, char *buffer);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads a dataset from disk.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name The name of the dataset to read
+ * \param[out] buffer   Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTread_dataset_short() reads a dataset named \p dset_name
+ *          attached to the object specified by the identifier \p loc_id.
+ *          The HDF5 datatype is #H5T_NATIVE_SHORT.
+ *
+ */
 H5_HLDLL herr_t H5LTread_dataset_short(hid_t loc_id, const char *dset_name, short *buffer);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads a dataset from disk.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name The name of the dataset to read
+ * \param[out] buffer   Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTread_dataset_int() reads a dataset named \p dset_name
+ *          attached to the object specified by the identifier \p loc_id.
+ *          The HDF5 datatype is #H5T_NATIVE_INT.
+ *
+ * \version 1.8.7 Fortran subroutine modified in this release to
+ *                accommodate arrays with more than three dimensions.
+ *
+ */
 H5_HLDLL herr_t H5LTread_dataset_int(hid_t loc_id, const char *dset_name, int *buffer);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads a dataset from disk.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name The name of the dataset to read
+ * \param[out] buffer   Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTread_dataset_long() reads a dataset named \p dset_name
+ *          attached to the object specified by the identifier \p loc_id.
+ *          The HDF5 datatype is #H5T_NATIVE_LONG.
+ *
+ */
 H5_HLDLL herr_t H5LTread_dataset_long(hid_t loc_id, const char *dset_name, long *buffer);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads a dataset from disk.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name The name of the dataset to read
+ * \param[out] buffer   Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTread_dataset_float() reads a dataset named \p dset_name
+ *          attached to the object specified by the identifier \p loc_id.
+ *          The HDF5 datatype is #H5T_NATIVE_FLOAT.
+ *
+ * \version 1.8.7 Fortran subroutine modified in this release to
+ *                accommodate arrays with more than three dimensions.
+ */
 H5_HLDLL herr_t H5LTread_dataset_float(hid_t loc_id, const char *dset_name, float *buffer);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads a dataset from disk.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name The name of the dataset to read
+ * \param[out] buffer   Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTread_dataset_double() reads a dataset named \p dset_name
+ *          attached to the object specified by the identifier \p loc_id.
+ *          The HDF5 datatype is #H5T_NATIVE_DOUBLE.
+ *
+ * \version 1.8.7 Fortran subroutine modified in this release to
+ *                accommodate arrays with more than three dimensions.
+ */
 H5_HLDLL herr_t H5LTread_dataset_double(hid_t loc_id, const char *dset_name, double *buffer);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads a dataset from disk.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name The name of the dataset to read
+ * \param[out] buf      Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTread_dataset_string() reads a dataset named \p dset_name
+ *          attached to the object specified by the identifier \p loc_id.
+ *          The HDF5 datatype is #H5T_C_S1.
+ *
+ */
 H5_HLDLL herr_t H5LTread_dataset_string(hid_t loc_id, const char *dset_name, char *buf);
 
 /*-------------------------------------------------------------------------
@@ -95,11 +541,67 @@ H5_HLDLL herr_t H5LTread_dataset_string(hid_t loc_id, const char *dset_name, cha
  *-------------------------------------------------------------------------
  */
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Gets the dimensionality of a dataset
+ *
+ * \param[in]   loc_id      Identifier of the object to
+ *                          locate the dataset within
+ * \param[in]   dset_name   The dataset name
+ * \param[out]  rank        The dimensionality of the dataset
+ *
+ * \return \herr_t
+ *
+ * \details H5LTget_dataset_ndims() gets the dimensionality of a dataset
+ *          named \p dset_name exists attached to the object \p loc_id.
+ *
+ */
 H5_HLDLL herr_t H5LTget_dataset_ndims(hid_t loc_id, const char *dset_name, int *rank);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Retrieves information about a dataset
+ *
+ * \param[in]   loc_id      Identifier of the object to locate
+ *                          the dataset within
+ * \param[in]   dset_name   The dataset name
+ * \param[out]  dims        The dimensions of the dataset
+ * \param[out]  type_class  The class identifier. #H5T_class_t is defined in
+ *                          H5Tpublic.h. See H5Tget_class() for a list
+ *                          of class types.
+ * \param[out]  type_size   The size of the datatype in bytes
+ *
+ * \return \herr_t
+ *
+ * \details H5LTget_dataset_info() retrieves information about a dataset
+ *          named \p dset_name attached to the object \p loc_id.
+ *
+ */
 H5_HLDLL herr_t H5LTget_dataset_info(hid_t loc_id, const char *dset_name, hsize_t *dims,
                                      H5T_class_t *type_class, size_t *type_size);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Determines whether a dataset exists.
+ *
+ * \param[in]   loc_id  Identifier of the group containing the dataset
+ * \param[in]   name    Dataset name
+ *
+ * \return \htri_t
+ *
+ * \details H5LTfind_dataset() determines whether a dataset named
+ *          \p name exists in the group specified by \p loc_id.
+ *
+ *          \p loc_id must be a group identifier and \p name must
+ *          specify a dataset that is a member of that group.
+ *
+ */
 H5_HLDLL herr_t H5LTfind_dataset(hid_t loc_id, const char *name);
 
 /*-------------------------------------------------------------------------
@@ -109,42 +611,343 @@ H5_HLDLL herr_t H5LTfind_dataset(hid_t loc_id, const char *name);
  *-------------------------------------------------------------------------
  */
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes a string attribute.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to create the attribute within
+ * \param[in]   obj_name    The name of the object to attach the attribute
+ * \param[in]   attr_name   The attribute name
+ * \param[in]   attr_data   Buffer with data to be written to the attribute
+ *
+ * \return \herr_t
+ *
+ * \details H5LTset_attribute_string() creates and writes a string attribute
+ *          named \p attr_name and attaches it to the object specified by
+ *          the name \p obj_name. If the attribute already exists,
+ *          it is overwritten.
+ *
+ */
 H5_HLDLL herr_t H5LTset_attribute_string(hid_t loc_id, const char *obj_name, const char *attr_name,
                                          const char *attr_data);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes an attribute.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to create the attribute within
+ * \param[in]   obj_name    The name of the object to attach the attribute
+ * \param[in]   attr_name   The attribute name
+ * \param[in]   buffer      Buffer with data to be written to the attribute
+ * \param[in]   size        The size of the 1D array (one in the case of a
+ *                          scalar attribute). This value is used by
+ *                          H5Screate_simple() to create the dataspace.
+ *
+ * \return \herr_t
+ *
+ * \details H5LTset_attribute_char() creates and writes a numerical attribute
+ *          named \p attr_name and attaches it to the object specified by the
+ *          name \p obj_name. The attribute has a dimensionality of 1.
+ *          The HDF5 datatype of the attribute is #H5T_NATIVE_CHAR.
+ *
+ */
 H5_HLDLL herr_t H5LTset_attribute_char(hid_t loc_id, const char *obj_name, const char *attr_name,
                                        const char *buffer, size_t size);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes an attribute.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to create the attribute within
+ * \param[in]   obj_name    The name of the object to attach the attribute
+ * \param[in]   attr_name   The attribute name
+ * \param[in]   buffer      Buffer with data to be written to the attribute
+ * \param[in]   size        The size of the 1D array (one in the case of a
+ *                          scalar attribute). This value is used by
+ *                          H5Screate_simple() to create the dataspace.
+ *
+ * \return \herr_t
+ *
+ * \details H5LTset_attribute_uchar() creates and writes a numerical attribute
+ *          named \p attr_name and attaches it to the object specified by the
+ *          name \p obj_name. The attribute has a dimensionality of 1.
+ *          The HDF5 datatype of the attribute is #H5T_NATIVE_UCHAR.
+ *
+ */
 H5_HLDLL herr_t H5LTset_attribute_uchar(hid_t loc_id, const char *obj_name, const char *attr_name,
                                         const unsigned char *buffer, size_t size);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes an attribute.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to create the attribute within
+ * \param[in]   obj_name    The name of the object to attach the attribute
+ * \param[in]   attr_name   The attribute name
+ * \param[in]   buffer      Buffer with data to be written to the attribute
+ * \param[in]   size        The size of the 1D array (one in the case of a
+ *                          scalar attribute). This value is used by
+ *                          H5Screate_simple() to create the dataspace.
+ *
+ * \return \herr_t
+ *
+ * \details H5LTset_attribute_short() creates and writes a numerical attribute
+ *          named \p attr_name and attaches it to the object specified by the
+ *          name \p obj_name. The attribute has a dimensionality of 1.
+ *          The HDF5 datatype of the attribute is #H5T_NATIVE_SHORT.
+ *
+ */
 H5_HLDLL herr_t H5LTset_attribute_short(hid_t loc_id, const char *obj_name, const char *attr_name,
                                         const short *buffer, size_t size);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes an attribute.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to create the attribute within
+ * \param[in]   obj_name    The name of the object to attach the attribute
+ * \param[in]   attr_name   The attribute name
+ * \param[in]   buffer      Buffer with data to be written to the attribute
+ * \param[in]   size        The size of the 1D array (one in the case of a
+ *                          scalar attribute). This value is used by
+ *                          H5Screate_simple() to create the dataspace.
+ *
+ * \return \herr_t
+ *
+ * \details H5LTset_attribute_ushort() creates and writes a numerical attribute
+ *          named \p attr_name and attaches it to the object specified by the
+ *          name \p obj_name. The attribute has a dimensionality of 1.
+ *          The HDF5 datatype of the attribute is #H5T_NATIVE_USHORT.
+ *
+ */
 H5_HLDLL herr_t H5LTset_attribute_ushort(hid_t loc_id, const char *obj_name, const char *attr_name,
                                          const unsigned short *buffer, size_t size);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes an attribute.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to create the attribute within
+ * \param[in]   obj_name    The name of the object to attach the attribute
+ * \param[in]   attr_name   The attribute name
+ * \param[in]   buffer      Buffer with data to be written to the attribute
+ * \param[in]   size        The size of the 1D array (one in the case of a
+ *                          scalar attribute). This value is used by
+ *                          H5Screate_simple() to create the dataspace.
+ *
+ * \return \herr_t
+ *
+ * \details H5LTset_attribute_int() creates and writes a numerical integer
+ *          attribute named \p attr_name and attaches it to the object
+ *          specified by the name \p obj_name. The attribute has a
+ *          dimensionality of 1.  The HDF5 datatype of the attribute
+ *          is #H5T_NATIVE_INT.
+ *
+ */
 H5_HLDLL herr_t H5LTset_attribute_int(hid_t loc_id, const char *obj_name, const char *attr_name,
                                       const int *buffer, size_t size);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes an attribute.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to create the attribute within
+ * \param[in]   obj_name    The name of the object to attach the attribute
+ * \param[in]   attr_name   The attribute name
+ * \param[in]   buffer      Buffer with data to be written to the attribute
+ * \param[in]   size        The size of the 1D array (one in the case of a
+ *                          scalar attribute). This value is used by
+ *                          H5Screate_simple() to create the dataspace.
+ *
+ * \return \herr_t
+ *
+ * \details H5LTset_attribute_uint() creates and writes a numerical integer
+ *          attribute named \p attr_name and attaches it to the object specified
+ *          by the name \p obj_name. The attribute has a dimensionality of 1.
+ *          The HDF5 datatype of the attribute is #H5T_NATIVE_UINT.
+ *
+ */
 H5_HLDLL herr_t H5LTset_attribute_uint(hid_t loc_id, const char *obj_name, const char *attr_name,
                                        const unsigned int *buffer, size_t size);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes an attribute.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to create the attribute within
+ * \param[in]   obj_name    The name of the object to attach the attribute
+ * \param[in]   attr_name   The attribute name
+ * \param[in]   buffer      Buffer with data to be written to the attribute
+ * \param[in]   size        The size of the 1D array (one in the case of a
+ *                          scalar attribute). This value is used by
+ *                          H5Screate_simple() to create the dataspace.
+ *
+ * \return \herr_t
+ *
+ * \details H5LTset_attribute_long() creates and writes a numerical
+ *          attribute named \p attr_name and attaches it to the object
+ *          specified by the name \p obj_name. The attribute has a
+ *          dimensionality of 1.  The HDF5 datatype of the attribute
+ *          is #H5T_NATIVE_LONG.
+ *
+ */
 H5_HLDLL herr_t H5LTset_attribute_long(hid_t loc_id, const char *obj_name, const char *attr_name,
                                        const long *buffer, size_t size);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes an attribute.
+ *
+ * \param[in]   loc_id      Location of the object to which the attribute
+ *                          is to be attached
+ * \param[in]   obj_name    That object's name
+ * \param[in]   attr_name   Attribute name
+ * \param[in]   buffer      Attribute value
+ * \param[in]   size        Attribute size
+ *
+ * \return \herr_t
+ *
+ * \details H5LTset_attribute_long_long() creates and writes a numerical
+ *          attribute named \p attr_name and attaches it to the object
+ *          specified by the name \p obj_name.
+ *
+ *          The attribute has a dimensionality of 1 and its HDF5 datatype
+ *          is #H5T_NATIVE_LLONG.
+ *
+ */
 H5_HLDLL herr_t H5LTset_attribute_long_long(hid_t loc_id, const char *obj_name, const char *attr_name,
                                             const long long *buffer, size_t size);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes an attribute.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to create the attribute within
+ * \param[in]   obj_name    The name of the object to attach the attribute
+ * \param[in]   attr_name   The attribute name
+ * \param[in]   buffer      Buffer with data to be written to the attribute
+ * \param[in]   size        The size of the 1D array (one in the case of a
+ *                          scalar attribute). This value is used by
+ *                          H5Screate_simple() to create the dataspace.
+ *
+ * \return \herr_t
+ *
+ * \details H5LTset_attribute_ulong() creates and writes a numerical
+ *          attribute named \p attr_name and attaches it to the object
+ *          specified by the name \p obj_name. The attribute has a
+ *          dimensionality of 1.  The HDF5 datatype of the attribute
+ *          is #H5T_NATIVE_ULONG.
+ *
+ */
 H5_HLDLL herr_t H5LTset_attribute_ulong(hid_t loc_id, const char *obj_name, const char *attr_name,
                                         const unsigned long *buffer, size_t size);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes an attribute.
+ *
+ * \param[in]   loc_id      Location of the object to which the attribute
+ *                          is to be attached
+ * \param[in]   obj_name    That object's name
+ * \param[in]   attr_name   Attribute name
+ * \param[in]   buffer      Attribute value
+ * \param[in]   size        Attribute size
+ *
+ * \return \herr_t
+ *
+ * \details H5LTset_attribute_ullong() creates and writes a numerical
+ *          attribute named \p attr_name and attaches it to the object
+ *          specified by the name \p obj_name.
+ *
+ *          The attribute has a dimensionality of 1 and its HDF5 datatype
+ *          is #H5T_NATIVE_ULLONG.
+ *
+ */
 H5_HLDLL herr_t H5LTset_attribute_ullong(hid_t loc_id, const char *obj_name, const char *attr_name,
                                          const unsigned long long *buffer, size_t size);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes an attribute.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to create the attribute within
+ * \param[in]   obj_name    The name of the object to attach the attribute
+ * \param[in]   attr_name   The attribute name
+ * \param[in]   buffer      Buffer with data to be written to the attribute
+ * \param[in]   size        The size of the 1D array (one in the case of a
+ *                          scalar attribute). This value is used by
+ *                          H5Screate_simple() to create the dataspace.
+ *
+ * \return \herr_t
+ *
+ * \details H5LTset_attribute_float() creates and writes a numerical
+ *          floating point attribute named \p attr_name and attaches
+ *          it to the object specified by the name \p obj_name.
+ *          The attribute has a dimensionality of 1.  The HDF5 datatype
+ *          of the attribute is #H5T_NATIVE_FLOAT.
+ *
+ */
 H5_HLDLL herr_t H5LTset_attribute_float(hid_t loc_id, const char *obj_name, const char *attr_name,
                                         const float *buffer, size_t size);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates and writes an attribute.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to create the attribute within
+ * \param[in]   obj_name    The name of the object to attach the attribute
+ * \param[in]   attr_name   The attribute name
+ * \param[in]   buffer      Buffer with data to be written to the attribute
+ * \param[in]   size        The size of the 1D array (one in the case of a
+ *                          scalar attribute). This value is used by
+ *                          H5Screate_simple() to create the dataspace.
+ *
+ * \return \herr_t
+ *
+ * \details H5LTset_attribute_double() creates and writes a numerical
+ *          attribute named \p attr_name and attaches
+ *          it to the object specified by the name \p obj_name.
+ *          The attribute has a dimensionality of 1.  The HDF5 datatype
+ *          of the attribute is #H5T_NATIVE_DOUBLE.
+ *
+ */
 H5_HLDLL herr_t H5LTset_attribute_double(hid_t loc_id, const char *obj_name, const char *attr_name,
                                          const double *buffer, size_t size);
 
@@ -155,42 +958,337 @@ H5_HLDLL herr_t H5LTset_attribute_double(hid_t loc_id, const char *obj_name, con
  *-------------------------------------------------------------------------
  */
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads an attribute from disk.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to read the attribute from
+ * \param[in]   obj_name    The name of the object that the attribute is
+ *                          attached to
+ * \param[in]   attr_name   The attribute name
+ * \param[in]   mem_type_id Identifier of the memory datatype
+ * \param[out]  data        Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTget_attribute() reads an attribute named
+ *          \p attr_name with the memory type \p mem_type_id.
+ *
+ */
 H5_HLDLL herr_t H5LTget_attribute(hid_t loc_id, const char *obj_name, const char *attr_name,
                                   hid_t mem_type_id, void *data);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads an attribute from disk.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to read the attribute from
+ * \param[in]   obj_name    The name of the object that the attribute is
+ *                          attached to
+ * \param[in]   attr_name   The attribute name
+ * \param[out]  data        Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTget_attribute_string() reads an attribute named
+ *          \p attr_name that is attached to the object specified
+ *          by the name \p obj_name.  The datatype is a string.
+ *
+ * \version 1.8.9 The content of the buffer returned by the Fortran
+ *                subroutine has changed in this release:\n
+ *                If the returned buffer requires padding,
+ *                h5ltget_attribute_string_f() now employs space
+ *                padding; this buffer was previously returned with a C NULL terminator.
+ *
+ */
 H5_HLDLL herr_t H5LTget_attribute_string(hid_t loc_id, const char *obj_name, const char *attr_name,
                                          char *data);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads an attribute from disk.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to read the attribute from
+ * \param[in]   obj_name    The name of the object that the attribute is
+ *                          attached to
+ * \param[in]   attr_name   The attribute name
+ * \param[out]  data        Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTget_attribute_char() reads an attribute named
+ *          \p attr_name that is attached to the object specified
+ *          by the name \p obj_name.  The datatype of the attribute
+ *          is #H5T_NATIVE_CHAR.
+ *
+ */
 H5_HLDLL herr_t H5LTget_attribute_char(hid_t loc_id, const char *obj_name, const char *attr_name, char *data);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads an attribute from disk.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to read the attribute from
+ * \param[in]   obj_name    The name of the object that the attribute is
+ *                          attached to
+ * \param[in]   attr_name   The attribute name
+ * \param[out]  data        Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTget_attribute_uchar() reads an attribute named
+ *          \p attr_name that is attached to the object specified
+ *          by the name \p obj_name.  The HDF5 datatype of the
+ *          attribute is #H5T_NATIVE_UCHAR
+ *
+ */
 H5_HLDLL herr_t H5LTget_attribute_uchar(hid_t loc_id, const char *obj_name, const char *attr_name,
                                         unsigned char *data);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads an attribute from disk.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to read the attribute from
+ * \param[in]   obj_name    The name of the object that the attribute is
+ *                          attached to
+ * \param[in]   attr_name   The attribute name
+ * \param[out]  data        Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTget_attribute_short() reads an attribute named
+ *          \p attr_name that is attached to the object specified
+ *          by the name \p obj_name.  The HDF5 datatype of the
+ *          attribute is #H5T_NATIVE_SHORT
+ *
+ */
 H5_HLDLL herr_t H5LTget_attribute_short(hid_t loc_id, const char *obj_name, const char *attr_name,
                                         short *data);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads an attribute from disk.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to read the attribute from
+ * \param[in]   obj_name    The name of the object that the attribute is
+ *                          attached to
+ * \param[in]   attr_name   The attribute name
+ * \param[out]  data        Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTget_attribute_ushort() reads an attribute named
+ *          \p attr_name that is attached to the object specified
+ *          by the name \p obj_name.  The HDF5 datatype of the
+ *          attribute is #H5T_NATIVE_USHORT.
+ *
+ */
 H5_HLDLL herr_t H5LTget_attribute_ushort(hid_t loc_id, const char *obj_name, const char *attr_name,
                                          unsigned short *data);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads an attribute from disk.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to read the attribute from
+ * \param[in]   obj_name    The name of the object that the attribute is
+ *                          attached to
+ * \param[in]   attr_name   The attribute name
+ * \param[out]  data        Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTget_attribute_int() reads an attribute named
+ *          \p attr_name that is attached to the object specified
+ *          by the name \p obj_name.  The HDF5 datatype of the
+ *          attribute is #H5T_NATIVE_INT.
+ *
+ */
 H5_HLDLL herr_t H5LTget_attribute_int(hid_t loc_id, const char *obj_name, const char *attr_name, int *data);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads an attribute from disk.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to read the attribute from
+ * \param[in]   obj_name    The name of the object that the attribute is
+ *                          attached to
+ * \param[in]   attr_name   The attribute name
+ * \param[out]  data        Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTget_attribute_uint() reads an attribute named
+ *          \p attr_name that is attached to the object specified
+ *          by the name \p obj_name.  The HDF5 datatype of the
+ *          attribute is #H5T_NATIVE_INT.
+ *
+ */
 H5_HLDLL herr_t H5LTget_attribute_uint(hid_t loc_id, const char *obj_name, const char *attr_name,
                                        unsigned int *data);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads an attribute from disk.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to read the attribute from
+ * \param[in]   obj_name    The name of the object that the attribute is
+ *                          attached to
+ * \param[in]   attr_name   The attribute name
+ * \param[out]  data        Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTget_attribute_long() reads an attribute named
+ *          \p attr_name that is attached to the object specified
+ *          by the name \p obj_name.  The HDF5 datatype of the
+ *          attribute is #H5T_NATIVE_LONG.
+ *
+ */
 H5_HLDLL herr_t H5LTget_attribute_long(hid_t loc_id, const char *obj_name, const char *attr_name, long *data);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads a \e long \e long attribute.
+ *
+ * \param[in]   loc_id      Location of the object to which
+ *                          the attribute is attached
+ * \param[in]   obj_name    That object's name
+ * \param[in]   attr_name   Attribute name
+ * \param[out]  data        Attribute value
+ *
+ * \return \herr_t
+ *
+ * \details H5LTget_attribute_long_long() reads the attribute
+ *          specified by \p loc_id and \p obj_name.
+ *
+ */
 H5_HLDLL herr_t H5LTget_attribute_long_long(hid_t loc_id, const char *obj_name, const char *attr_name,
                                             long long *data);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads an attribute from disk.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to read the attribute from
+ * \param[in]   obj_name    The name of the object that the attribute is
+ *                          attached to
+ * \param[in]   attr_name   The attribute name
+ * \param[out]  data        Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTget_attribute_ulong() reads an attribute named
+ *          \p attr_name that is attached to the object specified
+ *          by the name \p obj_name.  The HDF5 datatype of the
+ *          attribute is #H5T_NATIVE_ULONG.
+ *
+ */
 H5_HLDLL herr_t H5LTget_attribute_ulong(hid_t loc_id, const char *obj_name, const char *attr_name,
                                         unsigned long *data);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads an attribute from disk.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to read the attribute from
+ * \param[in]   obj_name    The name of the object that the attribute is
+ *                          attached to
+ * \param[in]   attr_name   The attribute name
+ * \param[out]  data        Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTget_attribute_ullong() reads an attribute named
+ *          \p attr_name that is attached to the object specified
+ *          by the name \p obj_name.  The HDF5 datatype of the
+ *          attribute is #H5T_NATIVE_ULLONG.
+ *
+ */
 H5_HLDLL herr_t H5LTget_attribute_ullong(hid_t loc_id, const char *obj_name, const char *attr_name,
                                          unsigned long long *data);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads an attribute from disk.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to read the attribute from
+ * \param[in]   obj_name    The name of the object that the attribute is
+ *                          attached to
+ * \param[in]   attr_name   The attribute name
+ * \param[out]  data        Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTget_attribute_float() reads an attribute named
+ *          \p attr_name that is attached to the object specified
+ *          by the name \p obj_name.  The HDF5 datatype of the
+ *          attribute is #H5T_NATIVE_FLOAT.
+ *
+ */
 H5_HLDLL herr_t H5LTget_attribute_float(hid_t loc_id, const char *obj_name, const char *attr_name,
                                         float *data);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Reads an attribute from disk.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to read the attribute from
+ * \param[in]   obj_name    The name of the object that the attribute is
+ *                          attached to
+ * \param[in]   attr_name   The attribute name
+ * \param[out]  data        Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5LTget_attribute_double() reads an attribute named
+ *          \p attr_name that is attached to the object specified
+ *          by the name \p obj_name.  The HDF5 datatype of the
+ *          attribute is #H5T_NATIVE_DOUBLE.
+ *
+ */
 H5_HLDLL herr_t H5LTget_attribute_double(hid_t loc_id, const char *obj_name, const char *attr_name,
                                          double *data);
 
@@ -201,8 +1299,55 @@ H5_HLDLL herr_t H5LTget_attribute_double(hid_t loc_id, const char *obj_name, con
  *-------------------------------------------------------------------------
  */
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Gets the dimensionality of an attribute.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to read the attribute from
+ * \param[in]   obj_name    The name of the object that the attribute is
+ *                          attached to
+ * \param[in]   attr_name   The attribute name
+ * \param[out]  rank        The dimensionality of the attribute
+ *
+ * \return \herr_t
+ *
+ * \details H5LTget_attribute_ndims() gets the dimensionality of an attribute
+ *          named \p attr_name that is attached to the object specified
+ *          by the name \p obj_name.
+ *
+ */
 H5_HLDLL herr_t H5LTget_attribute_ndims(hid_t loc_id, const char *obj_name, const char *attr_name, int *rank);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Gets information about an attribute.
+ *
+ * \param[in]   loc_id      Identifier of the object (dataset or group)
+ *                          to read the attribute from
+ * \param[in]   obj_name    The name of the object that the attribute is
+ *                          attached to
+ * \param[in]   attr_name   The attribute name
+ * \param[out]  dims        The dimensions of the attribute
+ * \param[out]  type_class  The class identifier. #H5T_class_t is
+ *                          defined in H5Tpublic.h. For a list of valid class
+ *                          types see: H5Tget_class().
+ * \param[out]  type_size   The size of the datatype in bytes
+ *
+ * \return \herr_t
+ *
+ * \details H5LTget_attribute_info() gets information about an attribute
+ *          named \p attr_name attached to the object specified by
+ *          the name \p obj_name.
+ *
+ * \par Example
+ * \snippet H5LT_examples.c get_attribute_info
+ *
+ */
 H5_HLDLL herr_t H5LTget_attribute_info(hid_t loc_id, const char *obj_name, const char *attr_name,
                                        hsize_t *dims, H5T_class_t *type_class, size_t *type_size);
 
@@ -213,7 +1358,74 @@ H5_HLDLL herr_t H5LTget_attribute_info(hid_t loc_id, const char *obj_name, const
  *-------------------------------------------------------------------------
  */
 
-H5_HLDLL hid_t  H5LTtext_to_dtype(const char *text, H5LT_lang_t lang_type);
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates an HDF5 datatype given a text description.
+ *
+ * \param[in] text      A character string containing a DDL
+ *                      definition of the datatype to be created
+ * \param[in] lang_type The language used to describe the datatype.
+ *                      The only currently supported language is
+ *                      #H5LT_DDL.
+ *
+ * \return  Returns the datatype identifier(non-negative) if successful;
+ *          otherwise returns a negative value.
+ *
+ * \details Given a text description of a datatype, this function creates
+ *          an HDF5 datatype and returns the datatype identifier.
+ *          The text description of the datatype has to comply with the
+ *          \p lang_type definition of HDF5 datatypes.
+ *          Currently, only the DDL(#H5LT_DDL) is supported.
+ *          The complete DDL definition of HDF5 datatypes can be found in
+ *          the last chapter of the
+ *          <a href="https://portal.hdfgroup.org/display/HDF5/HDF5+User+Guides">
+ *          HDF5 User's Guide</a>.
+ *
+ * \par Example
+ * An example of DDL definition of \c enum type is shown as follows.
+ * \snippet H5LT_examples.c enum
+ *
+ */
+H5_HLDLL hid_t H5LTtext_to_dtype(const char *text, H5LT_lang_t lang_type);
+
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Creates a text description of an HDF5 datatype.
+ *
+ * \param[in] dtype     Identifier of the datatype to be converted
+ * \param[out] str      Buffer for the text description of the datatype
+ * \param[in] lang_type The language used to describe the datatype.
+ *                      The currently supported language is #H5LT_DDL.
+ * \param[out] len      The size of buffer needed to store the text description
+ *
+ * \return  \herr_t
+ *
+ * \details Given an HDF5 datatype identifier, this function creates
+ *          a description of this datatype in \p lang_type language format.
+ *          A preliminary H5LTdtype_to_text() call can be made to determine
+ *          the size of the buffer needed with a NULL passed in for \p str.
+ *          This value is returned as \p len. That value can then be assigned
+ *          to len for a second H5Ttype_to_text() call, which will
+ *          retrieve the actual text description for the datatype.
+ *
+ *          If \p len is not big enough for the description, the text
+ *          description will be truncated to fit in the buffer.
+ *
+ *          Currently only DDL (#H5LT_DDL) is supported for \p lang_type.
+ *          The complete DDL definition of HDF5 data types can be found in
+ *          the last chapter of the
+ *          <a href="https://portal.hdfgroup.org/display/HDF5/HDF5+User+Guides">
+ *          HDF5 User's Guide</a>.
+ *
+ * \par Example
+ * An example of DDL definition of \c enum type is shown as follows.
+ * \snippet H5LT_examples.c enum
+ *
+ */
 H5_HLDLL herr_t H5LTdtype_to_text(hid_t dtype, char *str, H5LT_lang_t lang_type, size_t *len);
 
 /*-------------------------------------------------------------------------
@@ -223,8 +1435,116 @@ H5_HLDLL herr_t H5LTdtype_to_text(hid_t dtype, char *str, H5LT_lang_t lang_type,
  *-------------------------------------------------------------------------
  */
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Determines whether an attribute exists.
+ *
+ * \param[in] loc_id    Identifier of the object to which the attribute
+ *                      is expected to be attached
+ * \param[in] name      Attribute name
+ *
+ * \return  \htri_t
+ *
+ * \details H5LTfind_attribute() determines whether an attribute named
+ *          \p name exists attached to the object specified
+ *          by \p loc_id.
+ *
+ *          \p loc_id must be an object identifier and \p name
+ *          must specify an attribute that is expected to be attached
+ *          to that object.
+ *
+ */
 H5_HLDLL herr_t H5LTfind_attribute(hid_t loc_id, const char *name);
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Determines whether an HDF5 path is valid and, optionally,
+ *        whether the path resolves to an HDF5 object.
+ *
+ * \param[in] loc_id                Identifier of an object in the file
+ * \param[in] path                  The path to the object to check;
+ *                                  links in \p path may be of any type.
+ * \param[in] check_object_valid    If TRUE, determine whether the final
+ *                                  component of \p path resolves to
+ *                                  an object; if FALSE, do not check.
+ *
+ * \return  Upon success:
+ * \return  If \p check_object_valid is set to \c FALSE:
+ * \return  Returns \c TRUE if the path is valid;
+ *          otherwise returns \c FALSE.
+ * \return  If \p check_object_valid is set to \c TRUE:
+ * \return  Returns \c TRUE if the path is valid and
+ *          resolves to an HDF5 object;
+ *          otherwise returns \c FALSE.
+ *
+ * \return  Upon error, returns a negative value.
+ *
+ * \details H5LTpath_valid() checks the validity of \p path relative
+ *          to the identifier of an object, \p loc_id. Optionally,
+ *          \p check_object_valid can be set to determine whether the
+ *          final component of \p path resolves to an HDF5 object;
+ *          if not, the final component is a dangling link.
+ *
+ *          The meaning of the function’s return value depends on the
+ *          value of \p check_object_valid:
+ *
+ *          If \p check_object_valid is set to \c FALSE, H5LTpath_valid()
+ *          will check all links in \p path to verify that they exist.
+ *          If all the links in \p path exist, the function will
+ *          return \c TRUE; otherwise the function will return \c FALSE.
+ *
+ *          If \p check_object_valid is set to \c TRUE,
+ *          H5LTpath_valid() will first check the links in \p path,
+ *          as described above. If all the links exist,
+ *          \p check_object_valid will then determine whether the final
+ *          component of \p path resolves to an actual HDF5 object.
+ *          H5LTpath_valid() will return \c TRUE if all the links in
+ *          \p path exist and the final component resolves to an
+ *          actual object; otherwise, it will return \c FALSE.
+ *
+ *          \p path can be any one of the following:
+ *
+ *          - An absolute path, which starts with a slash (\c /)
+ *            indicating the file’s root group, followed by the members
+ *          - A relative path with respect to \p loc_id
+ *          - A dot (\c .), if \p loc_id is the object identifier for
+ *            the object itself
+ *          .
+ *
+ *          If \p path is an absolute path, then \p loc_id can be an
+ *          identifier for any object in the file as it is used only to
+ *          identify the file. If \p path is a relative path, then
+ *          \p loc_id must be a file or a group identifier.
+ *
+ * \note
+ * <b>Note on Behavior Change:</b>
+ * The behavior of  H5LTpath_valid() was changed in the 1.10.0 release
+ * in the case where the root group, “/”, is the value of path.
+ * This change is described below:
+ *     - Let \p loc_id denote a valid HDF5 file identifier, and let
+ *       \p check_object_valid be set to true or false.
+ *       A call to  H5LTpath_valid() with arguments \p loc_id, “/”,
+ *       and \p check_object_valid returns a positive value;
+ *       in other words, H5LTpath_valid(loc_id, "/", check_object_valid)
+ *       returns a positive value.
+ *       In HDF5 version 1.8.16, this function returns 0.
+ *     - Let ‘root’ denote a valid HDF5 group identifier that refers
+ *       to the root group of an HDF5 file, and let \p check_object_valid
+ *       be set to true or false.
+ *       A call to H5LTpath_valid() with arguments ‘root’, “/”, and
+ *       \p check_object_valid returns a positive value;
+ *       in other words, H5LTpath_valid(root, "/", check_object_valid)
+ *       returns a positive value.
+ *       In HDF5 version 1.8.16, this function returns 0.
+ *
+ * \version 1.10.0 Function behavior changed in this release.
+ *                 See the “Note on Behavior Change” section above.
+ *
+ */
 H5_HLDLL htri_t H5LTpath_valid(hid_t loc_id, const char *path, hbool_t check_object_valid);
 
 /*-------------------------------------------------------------------------
@@ -234,6 +1554,82 @@ H5_HLDLL htri_t H5LTpath_valid(hid_t loc_id, const char *path, hbool_t check_obj
  *-------------------------------------------------------------------------
  */
 
+/**
+ *-------------------------------------------------------------------------
+ * \ingroup H5LT
+ *
+ * \brief Opens an HDF5 file image in memory.
+ *
+ * \param[in] buf_ptr   A pointer to the supplied initial image
+ * \param[in] buf_size  Size of the supplied buffer
+ * \param[in] flags     Flags specifying whether to open the image
+ *                      read-only or read/write, whether HDF5 is to
+ *                      take control of the buffer, and instruction
+ *                      regarding releasing the buffer.
+ *
+ * \return  Returns a file identifier if successful;
+ *          otherwise returns a negative value.
+ * \warning \Bold{Failure Modes:}
+ * \warning H5LTopen_file_image() will fail if either \p buf_ptr is NULL
+ *          or \p buf_size equals 0 (zero).
+ *
+ *
+ * \details H5LTopen_file_image() opens the HDF5 file image that is
+ *          located in system memory at the address indicated by
+ *          \p buf_ptr of size \p buf_size.
+ *          H5LTopen_file_image() opens a file image with the
+ *          Core driver, #H5FD_CORE.
+ *
+ *          A value of NULL for \p buf_ptr is invalid and will
+ *          cause the function to fail.
+ *
+ *          A value of 0 for \p buf_size is invalid and will cause
+ *          the function to fail.
+ *
+ *          The flags passed in \p flags specify whether to open the image
+ *          read-only or read/write, whether HDF5 is to take control of the
+ *          buffer, and instruction regarding releasing the buffer.
+ *          Valid values are:
+ *          - #H5LT_FILE_IMAGE_OPEN_RW
+ *            - Specifies opening the file image in read/write mode.
+ *            - Default without this flag: File image will be opened read-only.
+ *            .
+ *          - #H5LT_FILE_IMAGE_DONT_COPY
+ *            - Specifies to not copy the provided file image buffer;
+ *              the buffer will be used directly. HDF5 will release the
+ *              file image when finished.
+ *            - Default without this flag: Copy the file image buffer and
+ *              open the copied file image.
+ *            .
+ *          - #H5LT_FILE_IMAGE_DONT_RELEASE
+ *            - Specifies that HDF5 is not to release the buffer when
+ *              the file opened with H5LTopen_file_image() is closed;
+ *              releasing the buffer will be left to the application.
+ *            - Default without this flag: HDF5 will automatically
+ *              release the file image buffer after the file image is
+ *              closed.  This flag is valid only when used with
+ *              #H5LT_FILE_IMAGE_DONT_COPY.
+ *            .
+ *          .
+ *
+ * \note      **Motivation:**
+ * \note      H5LTopen_file_image() and other elements of HDF5
+ *            are used to load an image of an HDF5 file into system memory
+ *            and open that image as a regular HDF5 file. An application can
+ *            then use the file without the overhead of disk I/O.
+ *
+ * \note      **Recommended Reading:**
+ * \note      This function is part of the file image operations feature set.
+ *            It is highly recommended to study the guide
+ *            <a href="https://portal.hdfgroup.org/display/HDF5/HDF5+File+Image+Operations">
+ *            HDF5 File Image Operations</a> before using this feature set.\n
+ *            See the “See Also” section below for links to other elements of
+ *            HDF5 file image operations.
+ *
+ * \todo There is no "See Also" section???
+ *
+ * \since 1.8.9
+ */
 H5_HLDLL hid_t H5LTopen_file_image(void *buf_ptr, size_t buf_size, unsigned flags);
 
 #ifdef __cplusplus
diff --git a/hl/src/H5PTpublic.h b/hl/src/H5PTpublic.h
index d74baa5..b881b25 100644
--- a/hl/src/H5PTpublic.h
+++ b/hl/src/H5PTpublic.h
@@ -18,19 +18,201 @@
 extern "C" {
 #endif
 
+/**\defgroup H5PT Packet Table
+ *
+ * <em>Creating and manipulating HDF5 datasets to support append-
+ * and read-only operations on table data (H5PT)</em>
+ *
+ * The HDF5 Packet Table API is designed to allow records to be
+ * appended to and read from a table. Packet Table datasets are
+ * chunked, allowing them to grow as needed.
+ *
+ * The Packet Table API, with the H5PT prefix, is not to be confused with
+ * the H5TB Table API (H5TB prefix). The H5TB APIs are stateless
+ * (H5TB Tables do not need to be opened or closed) but H5PT Packet Tables
+ * require less performance overhead. Also, H5TB Tables support insertions
+ * and deletions, while H5PT Packet Tables support only append operations.
+ * H5TB functions should not be called on tables created with the
+ * H5PT API, or vice versa.
+ *
+ * Packet Tables are datasets in an HDF5 file, so while their contents
+ * should not be changed outside of the H5PT API calls, the datatypes of
+ * Packet Tables can be queried using \ref H5Dget_type.
+ * Packet Tables can also be given attributes using the normal HDF5 APIs.
+ *
+ * \note \Bold{Programming hints:}
+ * \note The following line includes the HDF5 Packet Table package, H5PT,
+ *       in C applications:
+ *       \code #include "hdf5_hl.h" \endcode
+ *       Without this include, an application will not have access to
+ *       these functions.
+ *
+ * - \ref H5PTappend
+ *   \n Appends packets to the end of a packet table.
+ * - \ref H5PTclose
+ *   \n Closes an open packet table.
+ * - \ref H5PTcreate
+ *   \n Creates a packet table to store fixed-length
+ *      or variable-length packets.
+ * - \ref H5PTcreate_fl
+ *   \n Creates a packet table to store fixed-length packets.
+ * - \ref H5PTcreate_index
+ *   \n Resets a packet table's index to the first packet.
+ * - \ref H5PTfree_vlen_buff
+ *   \n Releases memory allocated in the process of
+ *      reading variable-length packets.
+ * - \ref H5PTget_dataset
+ *   \n Returns the backend dataset of this packet table.
+ * - \ref H5PTget_index
+ *   \n Gets the current record index for a packet table
+ * - \ref H5PTget_next
+ *   \n Reads packets from a packet table starting at the
+ *      current index.
+ * - \ref H5PTget_num_packets
+ *   \n Returns the number of packets in a packet table.
+ * - \ref H5PTget_type
+ *   \n Returns the backend datatype of this packet table.
+ * - \ref H5PTis_valid
+ *   \n Determines whether an identifier points to a packet table.
+ * - \ref H5PTis_varlen
+ *   \n Determines whether a packet table contains variable-length
+ *      or fixed-length packets.
+ * - \ref H5PTopen
+ *   \n Opens an existing packet table.
+ * - \ref H5PTread_packets
+ *   \n Reads a number of packets from a packet table.
+ * - \ref H5PTset_index
+ *   \n Sets a packet table's index.
+ * .
+ *
+ */
+
 /*-------------------------------------------------------------------------
  * Create/Open/Close functions
  *-------------------------------------------------------------------------
  */
 /* NOTE: H5PTcreate is replacing H5PTcreate_fl for better name due to the
    removal of H5PTcreate_vl.  H5PTcreate_fl may be retired in 1.8.19. */
+
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5PT
+ *
+ * \brief   Creates a packet table to store fixed-length or
+ *          variable-length packets.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name     The name of the packet table to create
+ * \param[in] dtype_id      The datatype of the packet
+ * \param[in] chunk_size    The size in number of table entries per chunk
+ * \param[in] plist_id      Identifier of the property list. Can be used to
+ *                          specify the compression of the packet table.
+ *
+ * \return Returns an identifier for the new packet table or
+ *         #H5I_INVALID_HID on error.
+ *
+ * \details The H5PTcreate() creates and opens a packet table named
+ *          \p dset_name attached to the object specified by the
+ *          identifier \p loc_id. The created packet table should be closed
+ *          with H5PTclose(), eventually.
+ *
+ *          The datatype, \p dtype_id, may specify any datatype, including
+ *          variable-length data.  If \p dtype_id specifies a compound
+ *          datatype, one or more fields in that compound type may be
+ *          variable-length.
+ *
+ *          \p chunk_size is the size in number of table entries per chunk.
+ *          Packet table datasets use HDF5 chunked storage
+ *          to allow them to grow. This value allows the user
+ *          to set the size of a chunk. The chunk size affects
+ *          performance.
+ *
+ * \since   1.10.0 and 1.8.17
+ *
+ */
 H5_HLDLL hid_t H5PTcreate(hid_t loc_id, const char *dset_name, hid_t dtype_id, hsize_t chunk_size,
                           hid_t plist_id);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5PT
+ *
+ * \brief Opens an existing packet table.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name     The name of the packet table to open
+ *
+ * \return Returns an identifier for the packet table or
+ *         #H5I_INVALID_HID on error.
+ *
+ * \details H5PTopen() opens an existing packet table in the file or group
+ *          specified by \p loc_id. \p dset_name is the name of the packet
+ *          table and is used to identify it in the file. This function is
+ *          used to open both fixed-length packet tables and variable-length
+ *          packet tables. The packet table should later be closed with
+ *          H5PTclose().
+ *
+ */
 H5_HLDLL hid_t H5PTopen(hid_t loc_id, const char *dset_name);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5PT
+ *
+ * \brief Closes an open packet table.
+ *
+ * \param[in] table_id  Identifier of packet table to be closed
+ *
+ * \return \herr_t
+ *
+ * \details The H5PTclose() ends access to a packet table specified
+ *          by \p table_id.
+ *
+ */
 H5_HLDLL herr_t H5PTclose(hid_t table_id);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5PT
+ *
+ * \brief Creates a packet table to store fixed-length packets
+ *
+ * \fg_loc_id
+ * \param[in] dset_name     The name of the dataset to create
+ * \param[in] dtype_id      The datatype of a packet.
+ * \param[in] chunk_size    The size in number of table entries per
+ *                          chunk.
+ * \param[in] compression   The compression level;
+ *                          a value of 0 through 9.
+ *
+ * \return Returns an identifier for the packet table or
+ *         #H5I_INVALID_HID on error.
+ *
+ * \deprecated This function was deprecated in favor of the function
+ *             H5PTcreate().
+ *
+ * \details The H5PTcreate_fl() creates and opens a packet table
+ *          named \p dset_name attached to the object specified by
+ *          the identifier \p loc_id. It should be closed
+ *          with H5PTclose().
+ *
+ *          The datatype, \p dtype_id, may specify any datatype,
+ *          including variable-length data. If \p dtype_id specifies a
+ *          compound datatype, one or more fields in that compound type
+ *          may be variable-length.
+ *
+ *          \p chunk_size is the size in number of table entries per chunk.
+ *          Packet table datasets use HDF5 chunked storage
+ *          to allow them to grow. This value allows the user
+ *          to set the size of a chunk. The chunk size affects
+ *          performance.
+ *
+ *          \p compression is the compression level, a value of 0 through 9.
+ *          Level 0 is faster but offers the least compression;
+ *          level 9 is slower but offers maximum compression.
+ *          A setting of -1 indicates that no compression is desired.
+
+ */
 /* This function may be removed from the packet table in release 1.8.19. */
 H5_HLDLL hid_t H5PTcreate_fl(hid_t loc_id, const char *dset_name, hid_t dtype_id, hsize_t chunk_size,
                              int compression);
@@ -39,24 +221,148 @@ H5_HLDLL hid_t H5PTcreate_fl(hid_t loc_id, const char *dset_name, hid_t dtype_id
  * Write functions
  *-------------------------------------------------------------------------
  */
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5PT
+ *
+ * \brief Appends packets to the end of a packet table.
+ *
+ * \param[in] table_id  Identifier of packet table to which
+ *                      packets should be appended
+ * \param[in] nrecords  Number of packets to be appended
+ * \param[in] data      Buffer holding data to write
+ *
+ * \return \herr_t
+ *
+ * \details The H5PTappend() writes \p nrecords packets to the end of a
+ *          packet table specified by \p table_id. \p data is a buffer
+ *          containing the data to be written. For a packet table holding
+ *          fixed-length packets, this data should be in the packet
+ *          table's datatype. For a variable-length packet table,
+ *          the data should be in the form of #hvl_t structs.
+ *
+ */
 H5_HLDLL herr_t H5PTappend(hid_t table_id, size_t nrecords, const void *data);
 
 /*-------------------------------------------------------------------------
  * Read functions
  *-------------------------------------------------------------------------
  */
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5PT
+ *
+ * \brief Reads packets from a packet table starting at the current index.
+ *
+ * \param[in] table_id  Identifier of packet table to read from
+ * \param[in] nrecords  Number of packets to be read
+ * \param[out] data     Buffer into which to read data
+ *
+ * \return \herr_t
+ *
+ * \details The H5PTget_next() reads \p nrecords packets starting with
+ *          the "current index" from a packet table specified by \p table_id.
+ *          The packet table's index is set and reset with H5PTset_index()
+ *          and H5PTcreate_index(). \p data is a buffer into which the
+ *          data should be read.
+ *
+ *          For a packet table holding variable-length records, the data
+ *          returned in the buffer will be in form of a #hvl_t struct
+ *          containing the length of the data and a pointer to it in memory.
+ *          The memory used by this data must be freed using H5PTfree_vlen_buff().
+ *
+ */
 H5_HLDLL herr_t H5PTget_next(hid_t table_id, size_t nrecords, void *data);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5PT
+ *
+ * \brief Reads a number of packets from a packet table.
+ *
+ * \param[in] table_id  Identifier of packet table to read from
+ * \param[in] start     Packet to start reading from
+ * \param[in] nrecords  Number of packets to be read
+ * \param[out] data     Buffer into which to read data.
+ *
+ * \return \herr_t
+ *
+ * \details The H5PTread_packets() reads \p nrecords packets starting at
+ *          packet number \p start from a packet table specified by
+ *          \p table_id. \p data is a buffer into which the data should
+ *          be read.
+ *
+ *          For a packet table holding variable-length records, the data
+ *          returned in the buffer will be in form of #hvl_t structs,
+ *          each containing the length of the data and a pointer to it in
+ *          memory. The memory used by this data must be freed using
+ *          H5PTfree_vlen_buff().
+ *
+ */
 H5_HLDLL herr_t H5PTread_packets(hid_t table_id, hsize_t start, size_t nrecords, void *data);
 
 /*-------------------------------------------------------------------------
  * Inquiry functions
  *-------------------------------------------------------------------------
  */
+
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5PT
+ *
+ * \brief Returns the number of packets in a packet table.
+ *
+ * \param[in] table_id  Identifier of packet table to query
+ * \param[out] nrecords Number of packets in packet table
+ *
+ * \return \herr_t
+ *
+ * \details The H5PTget_num_packets() returns by reference the number
+ *          of packets in a packet table specified by \p table_id.
+ *
+ */
 H5_HLDLL herr_t H5PTget_num_packets(hid_t table_id, hsize_t *nrecords);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5PT
+ *
+ * \brief Determines whether an identifier points to a packet table.
+ *
+ * \param[in] table_id  Identifier to query
+ *
+ * \return Returns a non-negative value if \p table_id is
+ *         a valid packet table, otherwise returns a negative value.
+ *
+ * \details The H5PTis_valid() returns a non-negative value if
+ *          \p table_id corresponds to an open packet table,
+ *          and returns a negative value otherwise.
+ *
+ */
 H5_HLDLL herr_t H5PTis_valid(hid_t table_id);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5PT
+ *
+ * \brief Determines whether a packet table contains
+ *        variable-length or fixed-length packets.
+ *
+ * \param[in] table_id  Packet table to query
+ *
+ * \return Returns 1 for a variable-length packet table,
+ *         0 for fixed-length, or a negative value on error.
+ *
+ * \details The H5PTis_varlen() returns 1 (TRUE) if \p table_id is
+ *          a packet table containing variable-length records.
+ *          It returns 0 (FALSE) if \p table_id is a packet table
+ *          containing fixed-length records. If \p table_id is not a
+ *          packet table, a negative value is returned.
+ *
+ * \version 1.10.0 and 1.8.17 Function re-introduced.
+ *                            Function had been removed in 1.8.3.
+ *
+ */
 H5_HLDLL herr_t H5PTis_varlen(hid_t table_id);
 
 /*-------------------------------------------------------------------------
@@ -66,8 +372,42 @@ H5_HLDLL herr_t H5PTis_varlen(hid_t table_id);
  *-------------------------------------------------------------------------
  */
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5PT
+ *
+ * \brief Returns the backend dataset of this packet table.
+ *
+ * \param[in] table_id  Identifier of the packet table
+ *
+ * \return Returns a dataset identifier or H5I_INVALID_HID on error.
+ *
+ * \details The H5PTget_dataset() returns the identifier of the dataset
+ *          storing the packet table \p table_id. This dataset identifier
+ *          will be closed by H5PTclose().
+ *
+ * \since 1.10.0 and 1.8.17
+ *
+ */
 H5_HLDLL hid_t H5PTget_dataset(hid_t table_id);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5PT
+ *
+ * \brief Returns the backend datatype of this packet table.
+ *
+ * \param[in] table_id  Identifier of the packet table
+ *
+ * \return Returns a datatype identifier or H5I_INVALID_HID on error.
+ *
+ * \details The H5PTget_type() returns the identifier of the datatype
+ *          used by the packet table \p table_id. This datatype
+ *          identifier will be closed by H5PTclose().
+ *
+ * \since 1.10.0 and 1.8.17
+ *
+ */
 H5_HLDLL hid_t H5PTget_type(hid_t table_id);
 
 /*-------------------------------------------------------------------------
@@ -77,10 +417,63 @@ H5_HLDLL hid_t H5PTget_type(hid_t table_id);
  *-------------------------------------------------------------------------
  */
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5PT
+ *
+ * \brief Resets a packet table's index to the first packet.
+ *
+ * \param[in] table_id  Identifier of packet table whose index
+ *                      should be initialized.
+ *
+ * \return \herr_t
+ *
+ * \details Each packet table keeps an index of the "current" packet
+ *          so that \c get_next can iterate through the packets in order.
+ *          H5PTcreate_index() initializes a packet table's index, and
+ *          should be called before using \c get_next. The index must be
+ *          initialized every time a packet table is created or opened;
+ *          this information is lost when the packet table is closed.
+ *
+ */
 H5_HLDLL herr_t H5PTcreate_index(hid_t table_id);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5PT
+ *
+ * \brief Sets a packet table's index.
+ *
+ * \param[in] table_id  Identifier of packet table whose index is to be set
+ * \param[in] pt_index  The packet to which the index should point
+ *
+ * \return \herr_t
+ *
+ * \details Each packet table keeps an index of the "current" packet
+ *          so that \c get_next can iterate through the packets in order.
+ *          H5PTset_index() sets this index to point to a user-specified
+ *          packet (the packets are zero-indexed).
+ *
+ */
 H5_HLDLL herr_t H5PTset_index(hid_t table_id, hsize_t pt_index);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5PT
+ *
+ * \brief Gets the current record index for a packet table.
+ *
+ * \param[in] table_id  Table identifier
+ * \param[out] pt_index Current record index
+ *
+ * \return \herr_t
+ *
+ * \details The H5PTget_index() returns the current record index
+ *          \p pt_index for the table identified by \p table_id.
+ *
+ * \since 1.8.0
+ *
+ */
 H5_HLDLL herr_t H5PTget_index(hid_t table_id, hsize_t *pt_index);
 
 /*-------------------------------------------------------------------------
@@ -90,6 +483,29 @@ H5_HLDLL herr_t H5PTget_index(hid_t table_id, hsize_t *pt_index);
  *-------------------------------------------------------------------------
  */
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5PT
+ *
+ * \brief Releases memory allocated in the process of reading
+ *        variable-length packets.
+ *
+ * \param[in] table_id  Packet table whose memory should be freed.
+ * \param[in] bufflen   Size of \p buff
+ * \param[in] buff      Buffer that was used to read in variable-length
+ *                      packets
+ *
+ * \return \herr_t
+ *
+ * \details When variable-length packets are read, memory is automatically
+ *          allocated to hold them, and must be freed. H5PTfree_vlen_buff()
+ *          frees this memory, and should be called whenever packets are
+ *          read from a variable-length packet table.
+ *
+ * \version 1.10.0 and 1.8.17 Function re-introduced.
+ *                            Function had been removed in 1.8.3.
+ *
+ */
 H5_HLDLL herr_t H5PTfree_vlen_buff(hid_t table_id, size_t bufflen, void *buff);
 
 #ifdef __cplusplus
diff --git a/hl/src/H5TBpublic.h b/hl/src/H5TBpublic.h
index 1750490..042bf99 100644
--- a/hl/src/H5TBpublic.h
+++ b/hl/src/H5TBpublic.h
@@ -18,6 +18,64 @@
 extern "C" {
 #endif
 
+/**\defgroup H5TB Table
+ *
+ * <em>Creating and manipulating HDF5 datasets intended to be
+ * interpreted as tables (H5TB)</em>
+ *
+ * The HDF5 Table API defines a standard storage for HDF5 datasets
+ * that are intended to be interpreted as tables. A table is defined
+ * as a collection of records whose values are stored in fixed-length
+ * fields. All records have the same structure, and all values in
+ * each field have the same data type.
+ *
+ * \note \Bold{Programming hints:}
+ * \note To use any of these functions or subroutines,
+ *       you must first include the relevant include file (C) or
+ *       module (Fortran) in your application.
+ * \note The following line includes the HDF5 Table package, H5TB,
+ *       in C applications:
+ *       \code #include "hdf5_hl.h" \endcode
+ * \note To include the H5TB module in Fortran applications specify:
+ *       \code use h5tb \endcode
+ *       Fortran applications must also include \ref H5open before
+ *       any HDF5 calls to initialize global variables and \ref H5close
+ *       after all HDF5 calls to close the Fortran interface.
+ *
+ * - Creation
+ *   - \ref H5TBmake_table
+ * - Storage
+ *   - \ref H5TBappend_records (No Fortran)
+ *   - \ref H5TBwrite_records (No Fortran)
+ *   - \ref H5TBwrite_fields_name
+ *   - \ref H5TBwrite_fields_index
+ *   .
+ * - Modification
+ *   - \ref H5TBdelete_record (No Fortran)
+ *   - \ref H5TBinsert_record (No Fortran)
+ *   - \ref H5TBadd_records_from (No Fortran)
+ *   - \ref H5TBcombine_tables (No Fortran)
+ *   - \ref H5TBinsert_field
+ *   - \ref H5TBdelete_field
+ *   .
+ * - Retrieval
+ *   - \ref H5TBread_table
+ *   - \ref H5TBread_records (No Fortran)
+ *   - \ref H5TBread_fields_name
+ *   - \ref H5TBread_fields_index
+ *   .
+ * - Query
+ *   - \ref H5TBget_table_info
+ *   - \ref H5TBget_field_info
+ *   .
+ * - Query Table Attributes
+ *   - \ref H5TBAget_fill
+ *   - \ref H5TBAget_title
+ *   .
+ * .
+ *
+ */
+
 /*-------------------------------------------------------------------------
  *
  * Create functions
@@ -25,6 +83,38 @@ extern "C" {
  *-------------------------------------------------------------------------
  */
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5TB
+ *
+ * \brief Creates and writes a table
+ *
+ * \param[in] table_title   The title of the table
+ * \fg_loc_id
+ * \param[in] dset_name     The name of the dataset to create
+ * \param[in] nfields       The number of fields
+ * \param[in] nrecords      The number of records
+ * \param[in] type_size     The size in bytes of the structure
+ *                          associated with the table;
+ *                          This value is obtained with \c sizeof().
+ * \param[in] field_names   An array containing the names of
+ *                          the fields
+ * \param[in] field_offset  An array containing the offsets of
+ *                          the fields
+ * \param[in] field_types   An array containing the type of
+ *                          the fields
+ * \param[in] chunk_size    The chunk size
+ * \param[in] fill_data     Fill values data
+ * \param[in] compress      Flag that turns compression on or off
+ * \param[in] buf           Buffer with data to be written to the table
+ *
+ * \return \herr_t
+ *
+ * \details H5TBmake_table() creates and writes a dataset named
+ *          \p dset_name attached to the object specified by the
+ *          identifier loc_id.
+ *
+ */
 H5_HLDLL herr_t H5TBmake_table(const char *table_title, hid_t loc_id, const char *dset_name, hsize_t nfields,
                                hsize_t nrecords, size_t type_size, const char *field_names[],
                                const size_t *field_offset, const hid_t *field_types, hsize_t chunk_size,
@@ -37,17 +127,128 @@ H5_HLDLL herr_t H5TBmake_table(const char *table_title, hid_t loc_id, const char
  *-------------------------------------------------------------------------
  */
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5TB
+ *
+ * \brief Adds records to the end of the table
+ *
+ * \fg_loc_id
+ * \param[in] dset_name     The name of the dataset to overwrite
+ * \param[in] nrecords      The number of records to append
+ * \param[in] type_size     The size of the structure type,
+ *                          as calculated by \c sizeof().
+ * \param[in] field_offset  An array containing the offsets of
+ *                          the fields. These offsets can be
+ *                          calculated with the #HOFFSET macro
+ * \param[in] dst_sizes     An array containing the sizes of
+ *                          the fields
+ * \param[in] buf           Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5TBappend_records() adds records to the end of the table
+ *          named \p dset_name attached to the object specified by the
+ *          identifier \p loc_id. The dataset is extended to hold the
+ *          new records.
+ *
+ */
 H5_HLDLL herr_t H5TBappend_records(hid_t loc_id, const char *dset_name, hsize_t nrecords, size_t type_size,
                                    const size_t *field_offset, const size_t *dst_sizes, const void *buf);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5TB
+ *
+ * \brief Overwrites records
+ *
+ * \fg_loc_id
+ * \param[in] dset_name    The name of the dataset to overwrite
+ * \param[in] start         The zero index record to start writing
+ * \param[in] nrecords      The number of records to write
+ * \param[in] type_size     The size of the structure type, as
+ *                          calculated by \c sizeof().
+ * \param[in] field_offset  An array containing the offsets of
+ *                          the fields.  These offsets can be
+ *                          calculated with the #HOFFSET macro
+ * \param[in] dst_sizes     An array containing the sizes of
+ *                          the fields
+ * \param[in] buf           Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5TBwrite_records() overwrites records starting at the zero
+ *          index position start of the table named \p dset_name attached
+ *          to the object specified by the identifier \p loc_id.
+ *
+ */
 H5_HLDLL herr_t H5TBwrite_records(hid_t loc_id, const char *dset_name, hsize_t start, hsize_t nrecords,
                                   size_t type_size, const size_t *field_offset, const size_t *dst_sizes,
                                   const void *buf);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5TB
+ *
+ * \brief Overwrites fields
+ *
+ * \fg_loc_id
+ * \param[in] dset_name    The name of the dataset to overwrite
+ * \param[in] field_names   The names of the fields to write
+ * \param[in] start         The zero index record to start writing
+ * \param[in] nrecords      The number of records to write
+ * \param[in] type_size     The size of the structure type, as
+ *                          calculated by \c sizeof().
+ * \param[in] field_offset  An array containing the offsets of
+ *                          the fields.  These offsets can be
+ *                          calculated with the #HOFFSET macro
+ * \param[in] dst_sizes     An array containing the sizes of
+ *                          the fields
+ * \param[in] buf           Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5TBwrite_fields_name() overwrites one or several fields
+ *          specified by \p field_names with data in \p buf from a
+ *          dataset named \p dset_name attached to the object specified
+ *          by the identifier \p loc_id.
+ *
+ */
 H5_HLDLL herr_t H5TBwrite_fields_name(hid_t loc_id, const char *dset_name, const char *field_names,
                                       hsize_t start, hsize_t nrecords, size_t type_size,
                                       const size_t *field_offset, const size_t *dst_sizes, const void *buf);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5TB
+ *
+ * \brief Overwrites fields
+ *
+ * \fg_loc_id
+ * \param[in] dset_name     The name of the dataset to overwrite
+ * \param[in] nfields       The number of fields to overwrite.
+ *                          This parameter is also the size of the
+ *                          \p field_index array.
+ * \param[in] field_index   The indexes of the fields to write
+ * \param[in] start         The zero based index record to start writing
+ * \param[in] nrecords      The number of records to write
+ * \param[in] type_size     The size of the structure type, as
+ *                          calculated by \c sizeof().
+ * \param[in] field_offset  An array containing the offsets of
+ *                          the fields.  These offsets can be
+ *                          calculated with the #HOFFSET macro
+ * \param[in] dst_sizes     An array containing the sizes of
+ *                          the fields
+ * \param[in] buf           Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5TBwrite_fields_index() overwrites one or several fields
+ *          specified by \p field_index with a buffer \p buf from a
+ *          dataset named \p dset_name attached to the object
+ *          specified by the identifier \p loc_id.
+ *
+ */
 H5_HLDLL herr_t H5TBwrite_fields_index(hid_t loc_id, const char *dset_name, hsize_t nfields,
                                        const int *field_index, hsize_t start, hsize_t nrecords,
                                        size_t type_size, const size_t *field_offset, const size_t *dst_sizes,
@@ -60,18 +261,128 @@ H5_HLDLL herr_t H5TBwrite_fields_index(hid_t loc_id, const char *dset_name, hsiz
  *-------------------------------------------------------------------------
  */
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5TB
+ *
+ * \brief Reads a table
+ *
+ * \fg_loc_id
+ * \param[in] dset_name    The name of the dataset to read
+ * \param[in] dst_size     The size of the structure type,
+ *                          as calculated by \c sizeof()
+ * \param[in] dst_offset    An array containing the offsets of
+ *                          the fields.  These offsets can be
+ *                          calculated with the #HOFFSET macro
+ * \param[in] dst_sizes     An array containing the sizes of
+ *                          the fields.  These sizes can be
+ *                          calculated with the sizeof() macro.
+ * \param[in] dst_buf       Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5TBread_table() reads a table named
+ *          \p dset_name attached to the object specified by
+ *          the identifier \p loc_id.
+ *
+ */
 H5_HLDLL herr_t H5TBread_table(hid_t loc_id, const char *dset_name, size_t dst_size, const size_t *dst_offset,
                                const size_t *dst_sizes, void *dst_buf);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5TB
+ *
+ * \brief Reads one or several fields. The fields are identified by name.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name    The name of the dataset to read
+ * \param[in] field_names   An array containing the names of the
+ *                          fields to read
+ * \param[in] start         The start record to read from
+ * \param[in] nrecords      The number of records to read
+ * \param[in] type_size     The size in bytes of the structure associated
+ *                          with the table
+ *                          (This value is obtained with \c sizeof().)
+ * \param[in] field_offset  An array containing the offsets of the fields
+ * \param[in] dst_sizes     An array containing the size in bytes of
+ *                          the fields
+ * \param[out] buf          Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5TBread_fields_name() reads the fields identified
+ *          by \p field_names from a dataset named \p dset_name
+ *          attached to the object specified by the identifier \p loc_id.
+ *
+ */
 H5_HLDLL herr_t H5TBread_fields_name(hid_t loc_id, const char *dset_name, const char *field_names,
                                      hsize_t start, hsize_t nrecords, size_t type_size,
                                      const size_t *field_offset, const size_t *dst_sizes, void *buf);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5TB
+ *
+ *
+ * \brief Reads one or several fields. The fields are identified by index.
+ *
+ * \fg_loc_id
+ * \param[in] dset_name     The name of the dataset to read
+ * \param[in] nfields       The number of fields to read
+ *                          (This parameter is also the size of the
+ *                          \p field_index array.)
+ *                          fields to read
+ * \param[in] field_index   The indexes of the fields to read
+ * \param[in] start         The start record to read from
+ * \param[in] nrecords      The number of records to read
+ * \param[in] type_size     The size in bytes of the structure associated
+ *                          with the table
+ *                          (This value is obtained with \c sizeof())
+ * \param[in] field_offset  An array containing the offsets of the fields
+ * \param[in] dst_sizes     An array containing the size in bytes of
+ *                          the fields
+ * \param[out] buf          Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5TBread_fields_index() reads the fields identified
+ *          by \p field_index from a dataset named \p dset_name attached
+ *          to the object specified by the identifier \p loc_id.
+ *
+ */
 H5_HLDLL herr_t H5TBread_fields_index(hid_t loc_id, const char *dset_name, hsize_t nfields,
                                       const int *field_index, hsize_t start, hsize_t nrecords,
                                       size_t type_size, const size_t *field_offset, const size_t *dst_sizes,
                                       void *buf);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5TB
+ *
+ *
+ * \brief Reads records
+ *
+ * \fg_loc_id
+ * \param[in] dset_name     The name of the dataset to read
+ * \param[in] start         The start record to read from
+ * \param[in] nrecords      The number of records to read
+ * \param[in] type_size     The size of the structure type,
+ *                          as calculated by \c sizeof()
+ * \param[in] dst_offset    An array containing the offsets of the
+ *                          fields.  These offsets can be calculated
+ *                          with the #HOFFSET macro
+ * \param[in] dst_sizes     An array containing the size in bytes of
+ *                          the fields
+ * \param[out] buf          Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5TBread_records() reads some records identified from a dataset
+ *          named \p dset_name attached to the object specified by the
+ *          identifier \p loc_id.
+ *
+ */
 H5_HLDLL herr_t H5TBread_records(hid_t loc_id, const char *dset_name, hsize_t start, hsize_t nrecords,
                                  size_t type_size, const size_t *dst_offset, const size_t *dst_sizes,
                                  void *buf);
@@ -83,8 +394,52 @@ H5_HLDLL herr_t H5TBread_records(hid_t loc_id, const char *dset_name, hsize_t st
  *-------------------------------------------------------------------------
  */
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5TB
+ *
+ *
+ * \brief Gets the table dimensions
+ *
+ * \fg_loc_id
+ * \param[in] dset_name     The name of the dataset to read
+ * \param[out] nfields      The number of fields
+ * \param[out] nrecords     The number of records
+ *
+ * \return \herr_t
+ *
+ * \details H5TBget_table_info() retrieves the table dimensions from a
+ *          dataset named \p dset_name attached to the object specified
+ *          by the identifier \p loc_id.
+ *
+ */
 H5_HLDLL herr_t H5TBget_table_info(hid_t loc_id, const char *dset_name, hsize_t *nfields, hsize_t *nrecords);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5TB
+ *
+ *
+ * \brief Gets information about a table
+ *
+ * \fg_loc_id
+ * \param[in] dset_name         The name of the dataset to read
+ * \param[out] field_names      An array containing the names of the fields
+ * \param[out] field_sizes      An array containing the size of the fields
+ * \param[out] field_offsets    An array containing the offsets of the fields
+ * \param[out] type_size        The size of the HDF5 datatype associated
+ *                              with the table.  (More specifically,
+ *                              the size in bytes of the HDF5 compound
+ *                              datatype used to define a row, or record,
+ *                              in the table)
+ *
+ * \return \herr_t
+ *
+ * \details H5TBget_field_info() gets information about a dataset
+ *          named \p dset_name attached to the object specified
+ *          by the identifier \p loc_id.
+ *
+ */
 H5_HLDLL herr_t H5TBget_field_info(hid_t loc_id, const char *dset_name, char *field_names[],
                                    size_t *field_sizes, size_t *field_offsets, size_t *type_size);
 
@@ -95,21 +450,162 @@ H5_HLDLL herr_t H5TBget_field_info(hid_t loc_id, const char *dset_name, char *fi
  *-------------------------------------------------------------------------
  */
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5TB
+ *
+ *
+ * \brief Delete records
+ *
+ * \fg_loc_id
+ * \param[in] dset_name    The name of the dataset
+ * \param[in] start        The start record to delete from
+ * \param[in] nrecords     The number of records to delete
+ *
+ * \return \herr_t
+ *
+ * \details H5TBdelete_record() deletes nrecords number of records starting
+ *          from \p start from the middle of the table \p dset_name
+ *          ("pulling up" all the records after it).
+ *
+ */
 H5_HLDLL herr_t H5TBdelete_record(hid_t loc_id, const char *dset_name, hsize_t start, hsize_t nrecords);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5TB
+ *
+ *
+ * \brief Insert records
+ *
+ * \fg_loc_id
+ * \param[in] dset_name     The name of the dataset
+ * \param[in] start         The position to insert
+ * \param[in] nrecords      The number of records to insert
+ * \param[in] dst_size      The size in bytes of the structure
+ *                          associated with the table
+ * \param[in] dst_offset    An array containing the offsets of the
+ *                          fields
+ * \param[in] dst_sizes     An array containing the size in bytes of
+ *                          the fields
+ * \param[in] buf           Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5TBinsert_record() inserts records into the middle of the table
+ *          ("pushing down" all the records after it)
+ *
+ */
 H5_HLDLL herr_t H5TBinsert_record(hid_t loc_id, const char *dset_name, hsize_t start, hsize_t nrecords,
                                   size_t dst_size, const size_t *dst_offset, const size_t *dst_sizes,
                                   void *buf);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5TB
+ *
+ *
+ * \brief Add records from first table to second table
+ *
+ * \fg_loc_id
+ * \param[in] dset_name1    The name of the dataset to read the records
+ * \param[in] start1        The position to read the records from the
+ *                          first table
+ * \param[in] nrecords      The number of records to read from the first
+ *                          table
+ * \param[in] dset_name2    The name of the dataset to write the records
+ * \param[in] start2        The position to write the records on the
+ *                          second table
+ *
+ * \return \herr_t
+ *
+ * \details H5TBadd_records_from() adds records from a dataset named
+ *          \p dset_name1 to a dataset named \p dset_name2. Both tables
+ *          are attached to the object specified by the identifier loc_id.
+ *
+ */
 H5_HLDLL herr_t H5TBadd_records_from(hid_t loc_id, const char *dset_name1, hsize_t start1, hsize_t nrecords,
                                      const char *dset_name2, hsize_t start2);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5TB
+ *
+ *
+ * \brief Combines records from two tables into a third
+ *
+ * \param[in] loc_id1       Identifier of the file or group in which
+ *                          the first table is located
+ * \param[in] dset_name1    The name of the first table to combine
+ * \param[in] loc_id2       Identifier of the file or group in which
+ *                          the second table is located
+ * \param[in] dset_name2    The name of the second table to combine
+ * \param[in] dset_name3    The name of the new table
+ *
+ * \return \herr_t
+ *
+ * \details H5TBcombine_tables() combines records from two datasets named
+ *          \p dset_name1 and \p dset_name2, to a new table named
+ *          \p dset_name3. These tables can be located on different files,
+ *          identified by \p loc_id1 and \p loc_id2 (identifiers obtained
+ *          with H5Fcreate()). They can also be located on the same file.
+ *          In this case one uses the same identifier for both parameters
+ *          \p loc_id1 and \p loc_id2. If two files are used, the third
+ *          table is written in the first file.
+ *
+ */
 H5_HLDLL herr_t H5TBcombine_tables(hid_t loc_id1, const char *dset_name1, hid_t loc_id2,
                                    const char *dset_name2, const char *dset_name3);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5TB
+ *
+ *
+ * \brief Insert a new field into a table
+ *
+ * \fg_loc_id
+ * \param[in] dset_name     The name of the table
+ * \param[in] field_name    The name of the field to insert
+ * \param[in] field_type    The data type of the field
+ * \param[in] position      The zero based index position where to
+ *                          insert the field
+ * \param[in] fill_data     Fill value data for the field. This parameter
+ *                          can be NULL
+ * \param[in] buf           Buffer with data
+ *
+ * \return \herr_t
+ *
+ * \details H5TBinsert_field() inserts a new field named \p field_name into
+ *          the table \p dset_name. Note: this function requires the table
+ *          to be re-created and rewritten in its entirety, and this can result
+ *          in some unused space in the file, and can also take a great deal of
+ *          time if the table is large.
+ *
+ */
 H5_HLDLL herr_t H5TBinsert_field(hid_t loc_id, const char *dset_name, const char *field_name,
                                  hid_t field_type, hsize_t position, const void *fill_data, const void *buf);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5TB
+ *
+ *
+ * \brief Deletes a field from a table
+ *
+ * \fg_loc_id
+ * \param[in] dset_name     The name of the table
+ * \param[in] field_name    The name of the field to delete
+ *
+ * \return \herr_t
+ *
+ * \details H5TBdelete_field() deletes a field named \p field_name from the
+ *          table \p dset_name. Note: this function requires the table to be
+ *          re-created and rewritten in its entirety, and this can result in
+ *          some unused space in the file, and can also take a great deal of
+ *          time if the table is large.
+ *
+ */
 H5_HLDLL herr_t H5TBdelete_field(hid_t loc_id, const char *dset_name, const char *field_name);
 
 /*-------------------------------------------------------------------------
@@ -119,8 +615,51 @@ H5_HLDLL herr_t H5TBdelete_field(hid_t loc_id, const char *dset_name, const char
  *-------------------------------------------------------------------------
  */
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5TB
+ *
+ *
+ * \brief Reads a table's title
+ *
+ * \fg_loc_id
+ * \param[out] table_title  Buffer for title name
+ *
+ * \return \herr_t
+ *
+ * \details H5TBget_title() returns the title of the table identified
+ *          by \p loc_id in a buffer \p table_title.
+ *
+ */
 H5_HLDLL herr_t H5TBAget_title(hid_t loc_id, char *table_title);
 
+/**
+ * --------------------------------------------------------------------------
+ * \ingroup H5TB
+ *
+ *
+ * \brief Reads the table attribute fill values
+ *
+ * \fg_loc_id
+ * \param[in] dset_name Name of table
+ * \param[in] dset_id   Table identifier
+ * \param[out] dst_buf Buffer of fill values for table fields
+ *
+ * \return
+ * \return A return value of 1 indicates that a fill value is present.
+ * \return A return value of 0 indicates a fill value is not present.
+ * \return A return value <0 indicates an error.
+ *
+ *
+ * \details H5TBget_fill() reads the table attribute fill values into
+ *          the buffer \p dst_buf for the table specified by \p dset_id
+ *          and \p dset_name located in \p loc_id.
+ *
+ *
+ * \par Example
+ * \include H5TBAget_fill.c
+ *
+ */
 H5_HLDLL htri_t H5TBAget_fill(hid_t loc_id, const char *dset_name, hid_t dset_id, unsigned char *dst_buf);
 
 #ifdef __cplusplus
diff --git a/src/H5Dint.c b/src/H5Dint.c
index 3b6b884..ee49464 100644
--- a/src/H5Dint.c
+++ b/src/H5Dint.c
@@ -1564,7 +1564,7 @@ done:
     vds_prefix     = (char *)H5MM_xfree(vds_prefix);
 
     if (ret_value == NULL) {
-        /* Free the location--casting away const*/
+        /* Free the location */
         if (dataset) {
             if (shared_fo == NULL && dataset->shared) { /* Need to free shared fo */
                 dataset->shared->extfile_prefix = (char *)H5MM_xfree(dataset->shared->extfile_prefix);
@@ -3502,7 +3502,7 @@ H5D_flush_all(H5F_t *f)
     HDassert(f);
 
     /* Iterate over all the open datasets */
-    if (H5I_iterate(H5I_DATASET, H5D__flush_all_cb, f, FALSE) < 0) /* Casting away const OK -QAK */
+    if (H5I_iterate(H5I_DATASET, H5D__flush_all_cb, f, FALSE) < 0)
         HGOTO_ERROR(H5E_DATASET, H5E_BADITER, FAIL, "unable to flush cached dataset info")
 
 done:
diff --git a/src/H5FD.c b/src/H5FD.c
index a3be3db..162c228 100644
--- a/src/H5FD.c
+++ b/src/H5FD.c
@@ -919,21 +919,19 @@ done:
  *
  * Purpose:     Private version of H5FDcmp()
  *
- * Return:      Success:    A value like strcmp()
- *
- *              Failure:    Must never fail.
- *
- * Changes:     Re-worked function to use H5FD_ctl() to obtain the terminal
- *              VFDs for f1 and f2.  Typically, these are the same thing,
- *              however, if there is an intervening pass through VFD
- *              (i.e. splitter of vfd swrmr reader vfd), using the terminal
- *              VFD for the comparison will avoid some false negatives.
+ *              Uses H5FD_ctl() to obtain the terminal VFDs for f1 and f2.
+ *              Typically, these are the same thing, however, if there is an
+ *              intervening pass through VFD (i.e. splitter or VFD SWMR
+ *              reader), using the terminal VFD for the comparison will avoid
+ *              some false negatives.
  *
  *              Note, however, that we will still fail to detect the
- *              case in which a give file is opened twice with different
+ *              case in which a given file is opened twice with different
  *              terminal VFDs.
  *
- *                                           JRM -- 5/5/22
+ * Return:      Success:    A value like strcmp()
+ *
+ *              Failure:    Must never fail.
  *
  *-------------------------------------------------------------------------
  */
@@ -956,9 +954,16 @@ H5FD_cmp(const H5FD_t *f1, const H5FD_t *f2)
 
         H5E_BEGIN_TRY
         {
+            /* Using the generic ctl callback, which takes non-const parameters,
+             * to work with const data is going to cause the compiler to complain.
+             */
+            H5_GCC_CLANG_DIAG_OFF("discarded-qualifiers")
+            H5_GCC_CLANG_DIAG_OFF("cast-qual")
             ctl_result = H5FD_ctl(f1, H5FD_CTL_GET_TERMINAL_VFD,
                                   H5FD_CTL_FAIL_IF_UNKNOWN_FLAG | H5FD_CTL_ROUTE_TO_TERMINAL_VFD_FLAG, NULL,
                                   (void **)(&term_f1));
+            H5_GCC_CLANG_DIAG_ON("discarded-qualifiers")
+            H5_GCC_CLANG_DIAG_ON("cast-qual")
         }
         H5E_END_TRY;
 
@@ -977,9 +982,16 @@ H5FD_cmp(const H5FD_t *f1, const H5FD_t *f2)
 
         H5E_BEGIN_TRY
         {
+            /* Using the generic ctl callback, which takes non-const parameters,
+             * to work with const data is going to cause the compiler to complain.
+             */
+            H5_GCC_CLANG_DIAG_OFF("discarded-qualifiers")
+            H5_GCC_CLANG_DIAG_OFF("cast-qual")
             ctl_result = H5FD_ctl(f2, H5FD_CTL_GET_TERMINAL_VFD,
                                   H5FD_CTL_FAIL_IF_UNKNOWN_FLAG | H5FD_CTL_ROUTE_TO_TERMINAL_VFD_FLAG, NULL,
                                   (void **)(&term_f2));
+            H5_GCC_CLANG_DIAG_ON("discarded-qualifiers")
+            H5_GCC_CLANG_DIAG_ON("cast-qual")
         }
         H5E_END_TRY;
 
@@ -2323,8 +2335,10 @@ H5FDget_vfd_handle(H5FD_t *file, hid_t fapl_id, void **file_handle /*out*/)
         HGOTO_ERROR(H5E_FILE, H5E_CANTGET, FAIL, "can't get file handle for file driver")
 
 done:
-    if (FAIL == ret_value)
-        *file_handle = NULL;
+    if (FAIL == ret_value) {
+        if (file_handle)
+            *file_handle = NULL;
+    }
 
     FUNC_LEAVE_API(ret_value)
 } /* end H5FDget_vfd_handle() */
diff --git a/src/H5FDint.c b/src/H5FDint.c
index 602559d..28dc3a1 100644
--- a/src/H5FDint.c
+++ b/src/H5FDint.c
@@ -233,6 +233,24 @@ H5FD_read(H5FD_t *file, H5FD_mem_t type, haddr_t addr, size_t size, void *buf /*
         HGOTO_DONE(SUCCEED)
 #endif /* H5_HAVE_PARALLEL */
 
+    /* If the file is open for SWMR read access, allow access to data past
+     * the end of the allocated space (the 'eoa').  This is done because the
+     * eoa stored in the file's superblock might be out of sync with the
+     * objects being written within the file by the application performing
+     * SWMR write operations.
+     */
+    if (!(file->access_flags & H5F_ACC_SWMR_READ)) {
+        haddr_t eoa;
+
+        if (HADDR_UNDEF == (eoa = (file->cls->get_eoa)(file, type)))
+            HGOTO_ERROR(H5E_VFL, H5E_CANTINIT, FAIL, "driver get_eoa request failed")
+
+        if ((addr + file->base_addr + size) > eoa)
+            HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow, addr = %llu, size = %llu, eoa = %llu",
+                        (unsigned long long)(addr + file->base_addr), (unsigned long long)size,
+                        (unsigned long long)eoa)
+    }
+
     /* Dispatch to driver */
     if ((file->cls->read)(file, type, dxpl_id, addr + file->base_addr, size, buf) < 0)
         HGOTO_ERROR(H5E_VFL, H5E_READERROR, FAIL, "driver read request failed")
diff --git a/src/H5FDvfd_swmr.c b/src/H5FDvfd_swmr.c
index 548bc89..3f742d8 100644
--- a/src/H5FDvfd_swmr.c
+++ b/src/H5FDvfd_swmr.c
@@ -600,7 +600,7 @@ H5FD__vfd_swmr_create_make_believe_data(H5FD_vfd_swmr_t *_file)
  *-------------------------------------------------------------------------
  */
 static H5FD_t *
-H5FD__vfd_swmr_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr)
+H5FD__vfd_swmr_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t H5_ATTR_UNUSED maxaddr)
 {
     H5FD_vfd_swmr_t *                  file = NULL;
     size_t                             page_buf_size;
@@ -1802,7 +1802,7 @@ H5FD_vfd_swmr_record_elapsed_ticks(H5FD_t *_file, uint64_t elapsed)
 
     H5FD_vfd_swmr_t *file = (H5FD_vfd_swmr_t *)_file;
 
-    uint32_t elapsed_idx = MIN(elapsed, file->api_elapsed_nbuckets);
+    uint64_t elapsed_idx = MIN(elapsed, file->api_elapsed_nbuckets);
 
     file->api_elapsed_ticks[elapsed_idx]++;
 
diff --git a/src/H5Fint.c b/src/H5Fint.c
index 2f384fc..d9f923c 100644
--- a/src/H5Fint.c
+++ b/src/H5Fint.c
@@ -2938,10 +2938,13 @@ H5F__build_actual_name(const H5F_t *f, const H5P_genplist_t *fapl, const char *n
             if (NULL == (new_fapl = (H5P_genplist_t *)H5I_object(new_fapl_id)))
                 HGOTO_ERROR(H5E_FILE, H5E_CANTCREATE, FAIL, "can't get property list")
 
-            /* Set the character encoding on the new property list */
+            /*
+             * Set the private property for retrieving the backing store
+             * POSIX file descriptor from the Core VFD
+             */
             want_posix_fd = TRUE;
             if (H5P_set(new_fapl, H5F_ACS_WANT_POSIX_FD_NAME, &want_posix_fd) < 0)
-                HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set character encoding")
+                HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set property for retrieving file descriptor")
 
             /* Retrieve the file handle */
             if (H5F_get_vfd_handle(f, new_fapl_id, (void **)&fd) < 0)
diff --git a/src/H5Gname.c b/src/H5Gname.c
index 7002daa..2ea1912 100644
--- a/src/H5Gname.c
+++ b/src/H5Gname.c
@@ -446,9 +446,10 @@ H5G_name_copy(H5G_name_t *dst, const H5G_name_t *src, H5_copy_depth_t depth)
         dst->user_path_r = H5RS_dup(src->user_path_r);
     }
     else {
-        /* Discarding 'const' qualifier OK - QAK */
+        H5_GCC_CLANG_DIAG_OFF("cast-qual")
         H5G_name_reset((H5G_name_t *)src);
-    } /* end if */
+        H5_GCC_CLANG_DIAG_ON("cast-qual")
+    }
 
     FUNC_LEAVE_NOAPI(SUCCEED)
 } /* end H5G_name_copy() */
diff --git a/src/H5Gnode.c b/src/H5Gnode.c
index aabb6a7..9f6d7e0 100644
--- a/src/H5Gnode.c
+++ b/src/H5Gnode.c
@@ -1228,7 +1228,9 @@ H5G__node_copy(H5F_t *f, const void H5_ATTR_UNUSED *_lt_key, haddr_t addr, const
             /* Set up group location for soft link to start in */
             H5G_name_reset(&grp_path);
             grp_loc.path = &grp_path;
+            H5_GCC_CLANG_DIAG_OFF("cast-qual")
             grp_loc.oloc = (H5O_loc_t *)src_oloc;
+            H5_GCC_CLANG_DIAG_ON("cast-qual")
 
             /* Get pointer to link value in local heap */
             if ((link_name = (char *)H5HL_offset_into(heap, tmp_src_ent.cache.slink.lval_offset)) == NULL)
diff --git a/src/H5Gobj.c b/src/H5Gobj.c
index 5412b52..cc92f2c 100644
--- a/src/H5Gobj.c
+++ b/src/H5Gobj.c
@@ -242,21 +242,20 @@ H5G__obj_create_real(H5F_t *f, const H5O_ginfo_t *ginfo, const H5O_linfo_t *linf
 
     /* Check for format of group to create */
     if (use_at_least_v18) {
+        H5_GCC_CLANG_DIAG_OFF("cast-qual")
         /* Insert link info message */
-        /* (Casting away const OK - QAK) */
         if (H5O_msg_create(oloc, H5O_LINFO_ID, 0, H5O_UPDATE_TIME, (void *)linfo) < 0)
             HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create message")
 
         /* Insert group info message */
-        /* (Casting away const OK - QAK) */
         if (H5O_msg_create(oloc, H5O_GINFO_ID, H5O_MSG_FLAG_CONSTANT, 0, (void *)ginfo) < 0)
             HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create message")
 
         /* Insert pipeline message */
         if (pline && pline->nused)
-            /* (Casting away const OK - QAK) */
             if (H5O_msg_create(oloc, H5O_PLINE_ID, H5O_MSG_FLAG_CONSTANT, 0, (void *)pline) < 0)
                 HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create message")
+        H5_GCC_CLANG_DIAG_ON("cast-qual")
     } /* end if */
     else {
         H5O_stab_t stab; /* Symbol table message	*/
@@ -398,9 +397,10 @@ H5G__obj_stab_to_new_cb(const H5O_link_t *lnk, void *_udata)
     HDassert(udata);
 
     /* Insert link into group */
-    /* (Casting away const OK - QAK) */
+    H5_GCC_CLANG_DIAG_OFF("cast-qual")
     if (H5G_obj_insert(udata->grp_oloc, lnk->name, (H5O_link_t *)lnk, FALSE, H5O_TYPE_UNKNOWN, NULL) < 0)
         HGOTO_ERROR(H5E_SYM, H5E_CANTINSERT, H5_ITER_ERROR, "can't insert link into group")
+    H5_GCC_CLANG_DIAG_ON("cast-qual")
 
 done:
     FUNC_LEAVE_NOAPI(ret_value)
diff --git a/src/H5Gtraverse.c b/src/H5Gtraverse.c
index 15fb9a4..f03794e 100644
--- a/src/H5Gtraverse.c
+++ b/src/H5Gtraverse.c
@@ -713,18 +713,17 @@ H5G__traverse_real(const H5G_loc_t *_loc, const char *name, unsigned target, H5G
                         HGOTO_ERROR(H5E_SYM, H5E_CANTOPENOBJ, FAIL, "unable to hold file open")
 
                 /* Reset any non-default object header messages */
+                H5_GCC_CLANG_DIAG_OFF("cast-qual")
                 if (ginfo != &def_ginfo)
-                    /* (Casting away const OK - QAK) */
                     if (H5O_msg_reset(H5O_GINFO_ID, (void *)ginfo) < 0)
                         HGOTO_ERROR(H5E_SYM, H5E_CANTRELEASE, FAIL, "unable to reset group info message")
                 if (linfo != &def_linfo)
-                    /* (Casting away const OK - QAK) */
                     if (H5O_msg_reset(H5O_LINFO_ID, (void *)linfo) < 0)
                         HGOTO_ERROR(H5E_SYM, H5E_CANTRELEASE, FAIL, "unable to reset link info message")
                 if (pline != &def_pline)
-                    /* (Casting away const OK - QAK) */
                     if (H5O_msg_reset(H5O_PLINE_ID, (void *)pline) < 0)
                         HGOTO_ERROR(H5E_SYM, H5E_CANTRELEASE, FAIL, "unable to reset I/O pipeline message")
+                H5_GCC_CLANG_DIAG_ON("cast-qual")
             } /* end if */
             else
                 HGOTO_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL, "component not found")
diff --git a/src/H5HFcache.c b/src/H5HFcache.c
index f7e2e53..9006c21 100644
--- a/src/H5HFcache.c
+++ b/src/H5HFcache.c
@@ -745,7 +745,9 @@ H5HF__cache_hdr_serialize(const H5F_t *f, void *_image, size_t H5_ATTR_NDEBUG_UN
     HDassert(len == hdr->heap_size);
 
     /* Set the shared heap header's file context for this operation */
+    H5_GCC_CLANG_DIAG_OFF("discarded-qualifiers")
     hdr->f = f;
+    H5_GCC_CLANG_DIAG_ON("discarded-qualifiers")
 
     /* Magic number */
     H5MM_memcpy(image, H5HF_HDR_MAGIC, (size_t)H5_SIZEOF_MAGIC);
@@ -1331,7 +1333,9 @@ H5HF__cache_iblock_serialize(const H5F_t *f, void *_image, size_t H5_ATTR_NDEBUG
     hdr = iblock->hdr;
 
     /* Set the shared heap header's file context for this operation */
+    H5_GCC_CLANG_DIAG_OFF("discarded-qualifiers")
     hdr->f = f;
+    H5_GCC_CLANG_DIAG_ON("discarded-qualifiers")
 
     /* Magic number */
     H5MM_memcpy(image, H5HF_IBLOCK_MAGIC, (size_t)H5_SIZEOF_MAGIC);
@@ -1678,7 +1682,6 @@ H5HF__cache_dblock_verify_chksum(const void *_image, size_t len, void *_udata)
     chk_p -= H5HF_SIZEOF_CHKSUM;
 
     /* Reset checksum field, for computing the checksum */
-    /* (Casting away const OK - QAK) */
     HDmemset(chk_p, 0, (size_t)H5HF_SIZEOF_CHKSUM);
 
     /* Compute checksum on entire direct block */
diff --git a/src/H5Idbg.c b/src/H5Idbg.c
index 6b4a979..3eb6518 100644
--- a/src/H5Idbg.c
+++ b/src/H5Idbg.c
@@ -111,7 +111,7 @@ H5I__id_dump_cb(void *_item, void H5_ATTR_UNUSED *_key, void *_udata)
             const H5T_t *dt = (const H5T_t *)info->object;
 
             H5_GCC_CLANG_DIAG_OFF("cast-qual")
-            object = (void *)H5T_get_actual_type((H5T_t *)dt); /* Casting away const OK - QAK */
+            object = (void *)H5T_get_actual_type((H5T_t *)dt);
             H5_GCC_CLANG_DIAG_ON("cast-qual")
 
             path = H5T_nameof(object);
diff --git a/src/H5Iint.c b/src/H5Iint.c
index ca6d208..e382efc 100644
--- a/src/H5Iint.c
+++ b/src/H5Iint.c
@@ -697,7 +697,7 @@ H5I_subst(hid_t id, const void *new_object)
 
     /* Get the old object pointer to return */
     H5_GCC_CLANG_DIAG_OFF("cast-qual")
-    ret_value = (void *)info->object; /* (Casting away const OK -QAK) */
+    ret_value = (void *)info->object;
     H5_GCC_CLANG_DIAG_ON("cast-qual")
 
     /* Set the new object pointer for the ID */
@@ -731,7 +731,7 @@ H5I_object(hid_t id)
     if (NULL != (info = H5I__find_id(id))) {
         /* Get the object pointer to return */
         H5_GCC_CLANG_DIAG_OFF("cast-qual")
-        ret_value = (void *)info->object; /* (Casting away const OK -QAK) */
+        ret_value = (void *)info->object;
         H5_GCC_CLANG_DIAG_ON("cast-qual")
     }
 
@@ -767,7 +767,7 @@ H5I_object_verify(hid_t id, H5I_type_t type)
     if (type == H5I_TYPE(id) && NULL != (info = H5I__find_id(id))) {
         /* Get the object pointer to return */
         H5_GCC_CLANG_DIAG_OFF("cast-qual")
-        ret_value = (void *)info->object; /* (Casting away const OK -QAK) */
+        ret_value = (void *)info->object;
         H5_GCC_CLANG_DIAG_ON("cast-qual")
     }
 
@@ -930,7 +930,7 @@ H5I__remove_common(H5I_type_info_t *type_info, hid_t id)
         type_info->last_id_info = NULL;
 
     H5_GCC_CLANG_DIAG_OFF("cast-qual")
-    ret_value = (void *)info->object; /* (Casting away const OK -QAK) */
+    ret_value = (void *)info->object;
     H5_GCC_CLANG_DIAG_ON("cast-qual")
 
     if (!H5I_marking_g)
@@ -1032,7 +1032,6 @@ H5I__dec_ref(hid_t id, void **request)
         type_info = H5I_type_info_array_g[H5I_TYPE(id)];
 
         H5_GCC_CLANG_DIAG_OFF("cast-qual")
-        /* (Casting away const OK -QAK) */
         if (!type_info->cls->free_func || (type_info->cls->free_func)((void *)info->object, request) >= 0) {
             /* Remove the node from the type */
             if (NULL == H5I__remove_common(type_info, id))
@@ -1521,7 +1520,7 @@ H5I__iterate_cb(void *_item, void H5_ATTR_UNUSED *_key, void *_udata)
          * case we'll need to get the wrapped object struct (H5F_t *, etc.).
          */
         H5_GCC_CLANG_DIAG_OFF("cast-qual")
-        object = H5I__unwrap((void *)info->object, type); /* Casting away const OK */
+        object = H5I__unwrap((void *)info->object, type);
         H5_GCC_CLANG_DIAG_ON("cast-qual")
 
         /* Invoke callback function */
@@ -1713,7 +1712,7 @@ H5I__find_id_cb(void *_item, void H5_ATTR_UNUSED *_key, void *_udata)
 
     /* Get a pointer to the VOL connector's data */
     H5_GCC_CLANG_DIAG_OFF("cast-qual")
-    object = H5I__unwrap((void *)info->object, type); /* Casting away const OK */
+    object = H5I__unwrap((void *)info->object, type);
     H5_GCC_CLANG_DIAG_ON("cast-qual")
 
     /* Check for a match */
diff --git a/src/H5Lint.c b/src/H5Lint.c
index 9dc8d0b..12de22f 100644
--- a/src/H5Lint.c
+++ b/src/H5Lint.c
@@ -595,8 +595,9 @@ H5L__link_cb(H5G_loc_t *grp_loc /*in*/, const char *name, const H5O_link_t H5_AT
         udata->lnk->cset = H5F_DEFAULT_CSET; /* Default character encoding for link */
 
     /* Set the link's name correctly */
-    /* Casting away const OK -QAK */
+    H5_GCC_CLANG_DIAG_OFF("cast-qual")
     udata->lnk->name = (char *)name;
+    H5_GCC_CLANG_DIAG_ON("cast-qual")
 
     /* Insert link into group */
     if (H5G_obj_insert(grp_loc->oloc, name, udata->lnk, TRUE,
@@ -1374,9 +1375,10 @@ H5L__move_dest_cb(H5G_loc_t *grp_loc /*in*/, const char *name, const H5O_link_t
             HGOTO_ERROR(H5E_LINK, H5E_CANTINIT, FAIL, "moving a link across files is not allowed")
 
     /* Give the object its new name */
-    /* Casting away const okay -JML */
     HDassert(udata->lnk->name == NULL);
+    H5_GCC_CLANG_DIAG_OFF("cast-qual")
     udata->lnk->name = (char *)name;
+    H5_GCC_CLANG_DIAG_ON("cast-qual")
 
     /* Insert the link into the group */
     if (H5G_obj_insert(grp_loc->oloc, name, udata->lnk, TRUE, H5O_TYPE_UNKNOWN, NULL) < 0)
@@ -2123,7 +2125,9 @@ H5L__link_copy_file(H5F_t *dst_file, const H5O_link_t *_src_lnk, const H5O_loc_t
         /* Set up group location for link */
         H5G_name_reset(&lnk_grp_path);
         lnk_grp_loc.path = &lnk_grp_path;
-        lnk_grp_loc.oloc = (H5O_loc_t *)src_oloc; /* Casting away const OK -QAK */
+        H5_GCC_CLANG_DIAG_OFF("cast-qual")
+        lnk_grp_loc.oloc = (H5O_loc_t *)src_oloc;
+        H5_GCC_CLANG_DIAG_ON("cast-qual")
 
         /* Check if the target object exists */
         if (H5G_loc_exists(&lnk_grp_loc, src_lnk->name, &tar_exists) < 0)
diff --git a/src/H5Ocache.c b/src/H5Ocache.c
index 51c44f9..9f194c8 100644
--- a/src/H5Ocache.c
+++ b/src/H5Ocache.c
@@ -1432,11 +1432,13 @@ H5O__chunk_deserialize(H5O_t *oh, haddr_t addr, size_t chunk_size, const uint8_t
             oh->nmesgs++;
 
             /* Initialize information about message */
-            mesg->dirty    = FALSE;
-            mesg->flags    = flags;
-            mesg->crt_idx  = crt_idx;
-            mesg->native   = NULL;
-            mesg->raw      = (uint8_t *)chunk_image; /* Casting away const OK - QAK */
+            mesg->dirty   = FALSE;
+            mesg->flags   = flags;
+            mesg->crt_idx = crt_idx;
+            mesg->native  = NULL;
+            H5_GCC_CLANG_DIAG_OFF("cast-qual")
+            mesg->raw = (uint8_t *)chunk_image;
+            H5_GCC_CLANG_DIAG_ON("cast-qual")
             mesg->raw_size = mesg_size;
             mesg->chunkno  = chunkno;
 
@@ -1639,10 +1641,12 @@ H5O__chunk_serialize(const H5F_t *f, H5O_t *oh, unsigned chunkno)
 
     /* Encode any dirty messages in this chunk */
     for (u = 0, curr_msg = &oh->mesg[0]; u < oh->nmesgs; u++, curr_msg++)
-        if (curr_msg->dirty && curr_msg->chunkno == chunkno)
-            /* Casting away const OK -QAK */
+        if (curr_msg->dirty && curr_msg->chunkno == chunkno) {
+            H5_GCC_CLANG_DIAG_OFF("cast-qual")
             if (H5O_msg_flush((H5F_t *)f, oh, curr_msg) < 0)
                 HGOTO_ERROR(H5E_OHDR, H5E_CANTENCODE, FAIL, "unable to encode object header message")
+            H5_GCC_CLANG_DIAG_ON("cast-qual")
+        }
 
     /* Sanity checks */
     if (oh->version > H5O_VERSION_1)
diff --git a/src/H5Opline.c b/src/H5Opline.c
index 7f73801..5618dce 100644
--- a/src/H5Opline.c
+++ b/src/H5Opline.c
@@ -639,7 +639,6 @@ static herr_t
 H5O__pline_debug(H5F_t H5_ATTR_UNUSED *f, const void *mesg, FILE *stream, int indent, int fwidth)
 {
     const H5O_pline_t *pline = (const H5O_pline_t *)mesg;
-    size_t             i, j;
 
     FUNC_ENTER_PACKAGE_NOERR
 
@@ -654,10 +653,15 @@ H5O__pline_debug(H5F_t H5_ATTR_UNUSED *f, const void *mesg, FILE *stream, int in
               pline->nalloc);
 
     /* Loop over all the filters */
-    for (i = 0; i < pline->nused; i++) {
-        char name[32];
+    for (size_t i = 0; i < pline->nused; i++) {
+        /* 19 characters for text + 20 characters for largest 64-bit size_t +
+         * terminal NUL = 40 characters.
+         */
+        char name[64];
 
+        HDmemset(name, 0, 64);
         HDsnprintf(name, sizeof(name), "Filter at position %zu", i);
+
         HDfprintf(stream, "%*s%-*s\n", indent, "", fwidth, name);
         HDfprintf(stream, "%*s%-*s 0x%04x\n", indent + 3, "", MAX(0, fwidth - 3),
                   "Filter identification:", (unsigned)(pline->filter[i].id));
@@ -672,14 +676,14 @@ H5O__pline_debug(H5F_t H5_ATTR_UNUSED *f, const void *mesg, FILE *stream, int in
                   "Num CD values:", pline->filter[i].cd_nelmts);
 
         /* Filter parameters */
-        for (j = 0; j < pline->filter[i].cd_nelmts; j++) {
+        for (size_t j = 0; j < pline->filter[i].cd_nelmts; j++) {
             char field_name[32];
 
             HDsnprintf(field_name, sizeof(field_name), "CD value %lu", (unsigned long)j);
             HDfprintf(stream, "%*s%-*s %u\n", indent + 6, "", MAX(0, fwidth - 6), field_name,
                       pline->filter[i].cd_values[j]);
-        } /* end for */
-    }     /* end for */
+        }
+    }
 
     FUNC_LEAVE_NOAPI(SUCCEED)
 } /* end H5O__pline_debug() */
diff --git a/src/H5Pdcpl.c b/src/H5Pdcpl.c
index 3c7bc09..3561c65 100644
--- a/src/H5Pdcpl.c
+++ b/src/H5Pdcpl.c
@@ -93,7 +93,6 @@
                                        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},                      \
             H5D_VDS_ERROR, HSIZE_UNDEF, -1, -1, FALSE                                                        \
     }
-#ifdef H5_HAVE_C99_DESIGNATED_INITIALIZER
 #define H5D_DEF_STORAGE_COMPACT                                                                              \
     {                                                                                                        \
         H5D_COMPACT,                                                                                         \
@@ -142,41 +141,6 @@
         H5D_VIRTUAL, H5O_LAYOUT_VERSION_4, H5D_LOPS_VIRTUAL, {H5D_DEF_LAYOUT_CHUNK_INIT},                    \
             H5D_DEF_STORAGE_VIRTUAL                                                                          \
     }
-#else /* H5_HAVE_C99_DESIGNATED_INITIALIZER */
-/* Note that the compact & chunked layout initialization values are using the
- *      contiguous layout initialization in the union, because the contiguous
- *      layout is first in the union.  These values are overridden in the
- *      H5P__init_def_layout() routine. -QAK
- */
-#define H5D_DEF_LAYOUT_COMPACT                                                                               \
-    {                                                                                                        \
-        H5D_COMPACT, H5O_LAYOUT_VERSION_DEFAULT, NULL, {H5D_DEF_LAYOUT_CHUNK_INIT},                          \
-        {                                                                                                    \
-            H5D_CONTIGUOUS, H5D_DEF_STORAGE_CONTIG_INIT                                                      \
-        }                                                                                                    \
-    }
-#define H5D_DEF_LAYOUT_CONTIG                                                                                \
-    {                                                                                                        \
-        H5D_CONTIGUOUS, H5O_LAYOUT_VERSION_DEFAULT, NULL, {H5D_DEF_LAYOUT_CHUNK_INIT},                       \
-        {                                                                                                    \
-            H5D_CONTIGUOUS, H5D_DEF_STORAGE_CONTIG_INIT                                                      \
-        }                                                                                                    \
-    }
-#define H5D_DEF_LAYOUT_CHUNK                                                                                 \
-    {                                                                                                        \
-        H5D_CHUNKED, H5O_LAYOUT_VERSION_DEFAULT, NULL, {H5D_DEF_LAYOUT_CHUNK_INIT},                          \
-        {                                                                                                    \
-            H5D_CONTIGUOUS, H5D_DEF_STORAGE_CONTIG_INIT                                                      \
-        }                                                                                                    \
-    }
-#define H5D_DEF_LAYOUT_VIRTUAL                                                                               \
-    {                                                                                                        \
-        H5D_VIRTUAL, H5O_LAYOUT_VERSION_4, NULL, {H5D_DEF_LAYOUT_CHUNK_INIT},                                \
-        {                                                                                                    \
-            H5D_CONTIGUOUS, H5D_DEF_STORAGE_CONTIG_INIT                                                      \
-        }                                                                                                    \
-    }
-#endif /* H5_HAVE_C99_DESIGNATED_INITIALIZER */
 
 /* ========  Dataset creation properties ======== */
 /* Definitions for storage layout property */
@@ -245,9 +209,6 @@
 
 /* General routines */
 static herr_t H5P__set_layout(H5P_genplist_t *plist, const H5O_layout_t *layout);
-#ifndef H5_HAVE_C99_DESIGNATED_INITIALIZER
-static herr_t H5P__init_def_layout(void);
-#endif /* H5_HAVE_C99_DESIGNATED_INITIALIZER */
 
 /* Property class callbacks */
 static herr_t H5P__dcrt_reg_prop(H5P_genclass_t *pclass);
@@ -320,18 +281,10 @@ static const H5O_efl_t H5D_def_efl_g = H5D_CRT_EXT_FILE_LIST_DEF;     /* Default
 static const unsigned H5O_ohdr_min_g = H5D_CRT_MIN_DSET_HDR_SIZE_DEF; /* Default object header minimization */
 
 /* Defaults for each type of layout */
-#ifdef H5_HAVE_C99_DESIGNATED_INITIALIZER
 static const H5O_layout_t H5D_def_layout_compact_g = H5D_DEF_LAYOUT_COMPACT;
 static const H5O_layout_t H5D_def_layout_contig_g  = H5D_DEF_LAYOUT_CONTIG;
 static const H5O_layout_t H5D_def_layout_chunk_g   = H5D_DEF_LAYOUT_CHUNK;
 static const H5O_layout_t H5D_def_layout_virtual_g = H5D_DEF_LAYOUT_VIRTUAL;
-#else  /* H5_HAVE_C99_DESIGNATED_INITIALIZER */
-static H5O_layout_t H5D_def_layout_compact_g   = H5D_DEF_LAYOUT_COMPACT;
-static H5O_layout_t H5D_def_layout_contig_g    = H5D_DEF_LAYOUT_CONTIG;
-static H5O_layout_t H5D_def_layout_chunk_g     = H5D_DEF_LAYOUT_CHUNK;
-static H5O_layout_t H5D_def_layout_virtual_g   = H5D_DEF_LAYOUT_VIRTUAL;
-static hbool_t      H5P_dcrt_def_layout_init_g = FALSE;
-#endif /* H5_HAVE_C99_DESIGNATED_INITIALIZER */
 
 /*-------------------------------------------------------------------------
  * Function:    H5P__dcrt_reg_prop
@@ -1926,47 +1879,6 @@ done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5P__set_layout() */
 
-#ifndef H5_HAVE_C99_DESIGNATED_INITIALIZER
-
-/*-------------------------------------------------------------------------
- * Function:  H5P__init_def_layout
- *
- * Purpose:   Set the default layout information for the various types of
- *              dataset layouts
- *
- * Return:    Non-negative on success/Negative on failure
- *
- * Programmer:	Quincey Koziol
- *		Tuesday, January 13, 2009
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5P__init_def_layout(void)
-{
-    const H5O_layout_chunk_t    def_layout_chunk  = H5D_DEF_LAYOUT_CHUNK_INIT;
-    const H5O_storage_compact_t def_store_compact = H5D_DEF_STORAGE_COMPACT_INIT;
-    const H5O_storage_chunk_t   def_store_chunk   = H5D_DEF_STORAGE_CHUNK_INIT;
-    const H5O_storage_virtual_t def_store_virtual = H5D_DEF_STORAGE_VIRTUAL_INIT;
-
-    FUNC_ENTER_PACKAGE_NOERR
-
-    /* Initialize the default layout info for non-contigous layouts */
-    H5D_def_layout_compact_g.storage.type      = H5D_COMPACT;
-    H5D_def_layout_compact_g.storage.u.compact = def_store_compact;
-    H5D_def_layout_chunk_g.u.chunk             = def_layout_chunk;
-    H5D_def_layout_chunk_g.storage.type        = H5D_CHUNKED;
-    H5D_def_layout_chunk_g.storage.u.chunk     = def_store_chunk;
-    H5D_def_layout_virtual_g.storage.type      = H5D_VIRTUAL;
-    H5D_def_layout_virtual_g.storage.u.virt    = def_store_virtual;
-
-    /* Note that we've initialized the default values */
-    H5P_dcrt_def_layout_init_g = TRUE;
-
-    FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5P__init_def_layout() */
-#endif /* H5_HAVE_C99_DESIGNATED_INITIALIZER */
-
 /*-------------------------------------------------------------------------
  * Function:	H5Pset_layout
  *
@@ -1997,15 +1909,6 @@ H5Pset_layout(hid_t plist_id, H5D_layout_t layout_type)
     if (NULL == (plist = H5P_object_verify(plist_id, H5P_DATASET_CREATE)))
         HGOTO_ERROR(H5E_ID, H5E_BADID, FAIL, "can't find object for ID")
 
-#ifndef H5_HAVE_C99_DESIGNATED_INITIALIZER
-    /* If the compiler doesn't support C99 designated initializers, check if
-     *  the default layout structs have been initialized yet or not.  *ick* -QAK
-     */
-    if (!H5P_dcrt_def_layout_init_g)
-        if (H5P__init_def_layout() < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTINIT, FAIL, "can't initialize default layout info")
-#endif /* H5_HAVE_C99_DESIGNATED_INITIALIZER */
-
     /* Get pointer to correct default layout */
     switch (layout_type) {
         case H5D_COMPACT:
@@ -2114,15 +2017,6 @@ H5Pset_chunk(hid_t plist_id, int ndims, const hsize_t dim[/*ndims*/])
     if (!dim)
         HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no chunk dimensions specified")
 
-#ifndef H5_HAVE_C99_DESIGNATED_INITIALIZER
-    /* If the compiler doesn't support C99 designated initializers, check if
-     *  the default layout structs have been initialized yet or not.  *ick* -QAK
-     */
-    if (!H5P_dcrt_def_layout_init_g)
-        if (H5P__init_def_layout() < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTINIT, FAIL, "can't initialize default layout info")
-#endif /* H5_HAVE_C99_DESIGNATED_INITIALIZER */
-
     /* Verify & initialize property's chunk dims */
     H5MM_memcpy(&chunk_layout, &H5D_def_layout_chunk_g, sizeof(H5D_def_layout_chunk_g));
     HDmemset(&chunk_layout.u.chunk.dim, 0, sizeof(chunk_layout.u.chunk.dim));
@@ -2254,15 +2148,6 @@ H5Pset_virtual(hid_t dcpl_id, hid_t vspace_id, const char *src_file_name, const
     if (H5D_virtual_check_mapping_pre(vspace, src_space, H5O_VIRTUAL_STATUS_USER) < 0)
         HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "invalid mapping selections")
 
-#ifndef H5_HAVE_C99_DESIGNATED_INITIALIZER
-    /* If the compiler doesn't support C99 designated initializers, check if
-     *  the default layout structs have been initialized yet or not.  *ick* -QAK
-     */
-    if (!H5P_dcrt_def_layout_init_g)
-        if (H5P__init_def_layout() < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTINIT, FAIL, "can't initialize default layout info")
-#endif /* H5_HAVE_C99_DESIGNATED_INITIALIZER */
-
     /* Get the plist structure */
     if (NULL == (plist = H5P_object_verify(dcpl_id, H5P_DATASET_CREATE)))
         HGOTO_ERROR(H5E_ID, H5E_BADID, FAIL, "can't find object for ID")
@@ -2734,15 +2619,6 @@ H5Pset_chunk_opts(hid_t plist_id, unsigned options)
     if (options & ~(H5D_CHUNK_DONT_FILTER_PARTIAL_CHUNKS))
         HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "unknown chunk options")
 
-#ifndef H5_HAVE_C99_DESIGNATED_INITIALIZER
-    /* If the compiler doesn't support C99 designated initializers, check if
-     *  the default layout structs have been initialized yet or not.  *ick* -QAK
-     */
-    if (!H5P_dcrt_def_layout_init_g)
-        if (H5P__init_def_layout() < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTINIT, FAIL, "can't initialize default layout info")
-#endif /* H5_HAVE_C99_DESIGNATED_INITIALIZER */
-
     /* Get the plist structure */
     if (NULL == (plist = H5P_object_verify(plist_id, H5P_DATASET_CREATE)))
         HGOTO_ERROR(H5E_ID, H5E_BADID, FAIL, "can't find object for ID")
@@ -2794,15 +2670,6 @@ H5Pget_chunk_opts(hid_t plist_id, unsigned *options /*out*/)
     FUNC_ENTER_API(FAIL)
     H5TRACE2("e", "ix", plist_id, options);
 
-#ifndef H5_HAVE_C99_DESIGNATED_INITIALIZER
-    /* If the compiler doesn't support C99 designated initializers, check if
-     *  the default layout structs have been initialized yet or not.  *ick* -QAK
-     */
-    if (!H5P_dcrt_def_layout_init_g)
-        if (H5P__init_def_layout() < 0)
-            HGOTO_ERROR(H5E_PLIST, H5E_CANTINIT, FAIL, "can't initialize default layout info")
-#endif /* H5_HAVE_C99_DESIGNATED_INITIALIZER */
-
     /* Get the plist structure */
     if (NULL == (plist = H5P_object_verify(plist_id, H5P_DATASET_CREATE)))
         HGOTO_ERROR(H5E_ID, H5E_BADID, FAIL, "can't find object for ID")
@@ -2995,8 +2862,17 @@ H5Pget_external(hid_t plist_id, unsigned idx, size_t name_size, char *name /*out
     /* Return values */
     if (name_size > 0 && name)
         HDstrncpy(name, efl.slot[idx].name, name_size);
+    /* XXX: Badness!
+     *
+     * The offset parameter is of type off_t and the offset field of H5O_efl_entry_t
+     * is HDoff_t which is a different type on Windows (off_t is a 32-bit long,
+     * HDoff_t is __int64, a 64-bit type).
+     *
+     * In a future API reboot, we'll either want to make this parameter a haddr_t
+     * or define a 64-bit HDF5-specific offset type that is platform-independent.
+     */
     if (offset)
-        *offset = efl.slot[idx].offset;
+        *offset = (off_t)efl.slot[idx].offset;
     if (size)
         *size = efl.slot[idx].size;
 
diff --git a/src/H5Pfapl.c b/src/H5Pfapl.c
index d6beece..ce8fde8 100644
--- a/src/H5Pfapl.c
+++ b/src/H5Pfapl.c
@@ -546,8 +546,13 @@ static const hbool_t H5F_def_use_file_locking_g =
     H5F_ACS_USE_FILE_LOCKING_DEF; /* Default use file locking flag */
 static const hbool_t H5F_def_ignore_disabled_file_locks_g =
     H5F_ACS_IGNORE_DISABLED_FILE_LOCKS_DEF; /* Default ignore disabled file locks flag */
+/* The VFD SWMR struct contains multiple large strings and triggers size
+ * warnings. We'll disable this for now and revisit later.
+ */
+H5_GCC_CLANG_DIAG_OFF("larger-than=")
 static const H5F_vfd_swmr_config_t H5F_def_vfd_swmr_config_g =
     H5F_ACS_VFD_SWMR_CONFIG_DEF; /* Default vfd swmr configuration */
+H5_GCC_CLANG_DIAG_ON("larger-than=")
 /* For VFD SWMR testing only: Default to generate checksum for metadata file */
 static const H5F_generate_md_ck_t H5F_def_generate_md_ck_cb_g = H5F_ACS_GENERATE_MD_CK_CB_DEF;
 
@@ -1221,7 +1226,7 @@ done:
  *
  * Purpose:    Set the file driver (DRIVER_ID) for a file access
  *        property list (PLIST_ID) and supply an optional
- *        struct containing the driver-specific properites
+ *        struct containing the driver-specific properties
  *        (DRIVER_INFO).  The driver properties will be copied into the
  *        property list and the reference count on the driver will be
  *        incremented, allowing the caller to close the driver ID but
diff --git a/src/H5Ppublic.h b/src/H5Ppublic.h
index 4262026..62eb484 100644
--- a/src/H5Ppublic.h
+++ b/src/H5Ppublic.h
@@ -5789,6 +5789,9 @@ H5_DLL herr_t H5Pget_dset_no_attrs_hint(hid_t dcpl_id, hbool_t *minimize);
  *          are null pointers then the corresponding information is not
  *          returned.
  *
+ * \note On Windows, off_t is typically a 32-bit signed long value, which
+ *       limits the valid offset that can be returned to 2 GiB.
+ *
  * \version 1.6.4 \p idx parameter type changed to unsigned.
  * \since 1.0.0
  *
diff --git a/src/H5SM.c b/src/H5SM.c
index bd061dc8a..7ec5b8f 100644
--- a/src/H5SM.c
+++ b/src/H5SM.c
@@ -1076,7 +1076,7 @@ H5SM_try_share(H5F_t *f, H5O_t *open_oh, unsigned defer_flags, unsigned type_id,
     ssize_t               index_num;
     htri_t                tri_ret;
 #ifndef NDEBUG
-    unsigned deferred_type = -1U;
+    unsigned deferred_type = UINT_MAX;
 #endif
     htri_t ret_value = TRUE;
 
diff --git a/src/H5Shyper.c b/src/H5Shyper.c
index 86aaef2..f27b57a 100644
--- a/src/H5Shyper.c
+++ b/src/H5Shyper.c
@@ -11544,7 +11544,7 @@ H5S__hyper_proj_int_iterate(H5S_hyper_span_info_t *ss_span_info, const H5S_hyper
         H5S_HYPER_PROJ_INT_ADD_SKIP(
             udata,
             H5S__hyper_spans_nelem_helper((H5S_hyper_span_info_t *)ss_span_info, 0, udata->op_gen) * count,
-            FAIL); /* Casting away const OK -NAF */
+            FAIL);
 
     /* Clean up if we are done */
     if (depth == 0) {
diff --git a/src/H5T.c b/src/H5T.c
index 135e069..e0dc993 100644
--- a/src/H5T.c
+++ b/src/H5T.c
@@ -473,35 +473,21 @@ hid_t H5T_NATIVE_INT_FAST64_g   = FAIL;
 hid_t H5T_NATIVE_UINT_FAST64_g  = FAIL;
 
 /*
- * Alignment constraints for native types. These are initialized at run time
- * in H5Tinit.c.  These alignments are mainly for offsets in HDF5 compound
- * datatype or C structures, which are different from the alignments for memory
- * address below this group of variables.
+ * Alignment constraints for HDF5 types.  Accessing objects of these
+ * types with improper alignment invokes C undefined behavior, so the
+ * library lays out objects with correct alignment, always.
+ *
+ * A value of N indicates that the data must be aligned on an address
+ * ADDR such that 0 == ADDR mod N. When N=1 no alignment is required;
+ * N=0 implies that alignment constraints were not calculated.  These
+ * values are used for structure alignment.
  */
-size_t H5T_NATIVE_SCHAR_COMP_ALIGN_g   = 0;
-size_t H5T_NATIVE_UCHAR_COMP_ALIGN_g   = 0;
-size_t H5T_NATIVE_SHORT_COMP_ALIGN_g   = 0;
-size_t H5T_NATIVE_USHORT_COMP_ALIGN_g  = 0;
-size_t H5T_NATIVE_INT_COMP_ALIGN_g     = 0;
-size_t H5T_NATIVE_UINT_COMP_ALIGN_g    = 0;
-size_t H5T_NATIVE_LONG_COMP_ALIGN_g    = 0;
-size_t H5T_NATIVE_ULONG_COMP_ALIGN_g   = 0;
-size_t H5T_NATIVE_LLONG_COMP_ALIGN_g   = 0;
-size_t H5T_NATIVE_ULLONG_COMP_ALIGN_g  = 0;
-size_t H5T_NATIVE_FLOAT_COMP_ALIGN_g   = 0;
-size_t H5T_NATIVE_DOUBLE_COMP_ALIGN_g  = 0;
-size_t H5T_NATIVE_LDOUBLE_COMP_ALIGN_g = 0;
-
-size_t H5T_POINTER_COMP_ALIGN_g     = 0;
-size_t H5T_HVL_COMP_ALIGN_g         = 0;
-size_t H5T_HOBJREF_COMP_ALIGN_g     = 0;
-size_t H5T_HDSETREGREF_COMP_ALIGN_g = 0;
-size_t H5T_REF_COMP_ALIGN_g         = 0;
+size_t H5T_POINTER_ALIGN_g     = 0;
+size_t H5T_HVL_ALIGN_g         = 0;
+size_t H5T_HOBJREF_ALIGN_g     = 0;
+size_t H5T_HDSETREGREF_ALIGN_g = 0;
+size_t H5T_REF_ALIGN_g         = 0;
 
-/*
- * Alignment constraints for native types. These are initialized at run time
- * in H5Tinit.c
- */
 size_t H5T_NATIVE_SCHAR_ALIGN_g   = 0;
 size_t H5T_NATIVE_UCHAR_ALIGN_g   = 0;
 size_t H5T_NATIVE_SHORT_ALIGN_g   = 0;
@@ -777,6 +763,9 @@ H5T_init(void)
     if (H5T__init_native() < 0)
         HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "unable to initialize interface")
 
+    if (H5T__init_native_internal() < 0)
+        HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "unable to initialize integers")
+
     /* Get the atomic datatype structures needed by the initialization code below */
     if (NULL == (native_schar = (H5T_t *)H5I_object(H5T_NATIVE_SCHAR_g)))
         HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a datatype object")
diff --git a/src/H5Tconv.c b/src/H5Tconv.c
index 26ecff5..de836dc 100644
--- a/src/H5Tconv.c
+++ b/src/H5Tconv.c
@@ -3266,9 +3266,10 @@ H5T__conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, si
                     /* If we're down to the last few elements, just wrap up */
                     /* with a "real" reverse copy */
                     if (safe < 2) {
-                        s        = (uint8_t *)buf + (nelmts - 1) * (size_t)s_stride;
-                        d        = (uint8_t *)buf + (nelmts - 1) * (size_t)d_stride;
-                        b        = (uint8_t *)bkg + (nelmts - 1) * (size_t)b_stride;
+                        s = (uint8_t *)buf + (nelmts - 1) * (size_t)s_stride;
+                        d = (uint8_t *)buf + (nelmts - 1) * (size_t)d_stride;
+                        if (bkg)
+                            b = (uint8_t *)bkg + (nelmts - 1) * (size_t)b_stride;
                         s_stride = -s_stride;
                         d_stride = -d_stride;
                         b_stride = -b_stride;
@@ -3278,7 +3279,8 @@ H5T__conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, si
                     else {
                         s = (uint8_t *)buf + (nelmts - safe) * (size_t)s_stride;
                         d = (uint8_t *)buf + (nelmts - safe) * (size_t)d_stride;
-                        b = (uint8_t *)bkg + (nelmts - safe) * (size_t)b_stride;
+                        if (bkg)
+                            b = (uint8_t *)bkg + (nelmts - safe) * (size_t)b_stride;
                     } /* end else */
                 }     /* end if */
                 else {
@@ -3406,8 +3408,8 @@ H5T__conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, si
                             /* For nested VL case, free leftover heap objects from the deeper level if the
                              * length of new data elements is shorter than the old data elements.*/
                             if (nested && seq_len < bg_seq_len) {
-                                const uint8_t *tmp;
-                                size_t         u;
+                                uint8_t *tmp;
+                                size_t   u;
 
                                 /* Sanity check */
                                 HDassert(write_to_file);
@@ -3426,7 +3428,9 @@ H5T__conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, si
                     /* Advance pointers */
                     s += s_stride;
                     d += d_stride;
-                    b += b_stride;
+
+                    if (b)
+                        b += b_stride;
                 } /* end for */
 
                 /* Decrement number of elements left to convert */
@@ -3716,9 +3720,10 @@ H5T__conv_ref(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, siz
                     /* If we're down to the last few elements, just wrap up */
                     /* with a "real" reverse copy */
                     if (safe < 2) {
-                        s        = (uint8_t *)buf + (nelmts - 1) * (size_t)s_stride;
-                        d        = (uint8_t *)buf + (nelmts - 1) * (size_t)d_stride;
-                        b        = (uint8_t *)bkg + (nelmts - 1) * (size_t)b_stride;
+                        s = (uint8_t *)buf + (nelmts - 1) * (size_t)s_stride;
+                        d = (uint8_t *)buf + (nelmts - 1) * (size_t)d_stride;
+                        if (bkg)
+                            b = (uint8_t *)bkg + (nelmts - 1) * (size_t)b_stride;
                         s_stride = -s_stride;
                         d_stride = -d_stride;
                         b_stride = -b_stride;
@@ -3728,7 +3733,8 @@ H5T__conv_ref(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, siz
                     else {
                         s = (uint8_t *)buf + (nelmts - safe) * (size_t)s_stride;
                         d = (uint8_t *)buf + (nelmts - safe) * (size_t)d_stride;
-                        b = (uint8_t *)bkg + (nelmts - safe) * (size_t)b_stride;
+                        if (bkg)
+                            b = (uint8_t *)bkg + (nelmts - safe) * (size_t)b_stride;
                     } /* end else */
                 }     /* end if */
                 else {
@@ -3796,7 +3802,9 @@ H5T__conv_ref(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, siz
                     /* Advance pointers */
                     s += s_stride;
                     d += d_stride;
-                    b += b_stride;
+
+                    if (b)
+                        b += b_stride;
                 } /* end for */
 
                 /* Decrement number of elements left to convert */
diff --git a/src/H5Tnative.c b/src/H5Tnative.c
index e75d1df..9625290 100644
--- a/src/H5Tnative.c
+++ b/src/H5Tnative.c
@@ -177,13 +177,13 @@ H5T__get_native_type(H5T_t *dtype, H5T_direction_t direction, size_t *struct_ali
 
             if (H5T_IS_VL_STRING(dtype->shared)) {
                 /* Update size, offset and compound alignment for parent. */
-                if (H5T__cmp_offset(comp_size, offset, sizeof(char *), (size_t)1, H5T_POINTER_COMP_ALIGN_g,
+                if (H5T__cmp_offset(comp_size, offset, sizeof(char *), (size_t)1, H5T_POINTER_ALIGN_g,
                                     struct_align) < 0)
                     HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "cannot compute compound offset")
             } /* end if */
             else {
                 /* Update size, offset and compound alignment for parent. */
-                if (H5T__cmp_offset(comp_size, offset, sizeof(char), size, H5T_NATIVE_SCHAR_COMP_ALIGN_g,
+                if (H5T__cmp_offset(comp_size, offset, sizeof(char), size, H5T_NATIVE_SCHAR_ALIGN_g,
                                     struct_align) < 0)
                     HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "cannot compute compound offset")
             } /* end else */
@@ -208,7 +208,7 @@ H5T__get_native_type(H5T_t *dtype, H5T_direction_t direction, size_t *struct_ali
                 HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "cannot retrieve float type")
 
             /* Update size, offset and compound alignment for parent. */
-            if (H5T__cmp_offset(comp_size, offset, sizeof(char), size, H5T_NATIVE_SCHAR_COMP_ALIGN_g,
+            if (H5T__cmp_offset(comp_size, offset, sizeof(char), size, H5T_NATIVE_SCHAR_ALIGN_g,
                                 struct_align) < 0)
                 HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "cannot compute compound offset")
             break;
@@ -227,7 +227,7 @@ H5T__get_native_type(H5T_t *dtype, H5T_direction_t direction, size_t *struct_ali
 
             /* Update size, offset and compound alignment for parent. */
             if (0 == H5T_cmp(ret_value, dt, FALSE)) {
-                align    = H5T_HOBJREF_COMP_ALIGN_g;
+                align    = H5T_HOBJREF_ALIGN_g;
                 ref_size = sizeof(hobj_ref_t);
             } /* end if */
             else {
@@ -236,12 +236,12 @@ H5T__get_native_type(H5T_t *dtype, H5T_direction_t direction, size_t *struct_ali
                     HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a data type")
 
                 if (0 == H5T_cmp(ret_value, dt, FALSE)) {
-                    align    = H5T_HDSETREGREF_COMP_ALIGN_g;
+                    align    = H5T_HDSETREGREF_ALIGN_g;
                     ref_size = sizeof(hdset_reg_ref_t);
                 } /* end if */
                 else {
                     /* Only pointers to underlying opaque reference types */
-                    align    = H5T_REF_COMP_ALIGN_g;
+                    align    = H5T_REF_ALIGN_g;
                     ref_size = sizeof(H5R_ref_t);
                 } /* end else */
             }     /* end else */
@@ -479,7 +479,7 @@ H5T__get_native_type(H5T_t *dtype, H5T_direction_t direction, size_t *struct_ali
                 HGOTO_ERROR(H5E_ARGS, H5E_CLOSEERROR, NULL, "cannot close datatype")
 
             /* Update size, offset and compound alignment for parent compound type directly. */
-            vl_align = H5T_HVL_COMP_ALIGN_g;
+            vl_align = H5T_HVL_ALIGN_g;
             vl_size  = sizeof(hvl_t);
 
             if (H5T__cmp_offset(comp_size, offset, vl_size, (size_t)1, vl_align, struct_align) < 0)
@@ -625,7 +625,7 @@ H5T__get_native_integer(size_t prec, H5T_sign_t sign, H5T_direction_t direction,
             else
                 tid = H5T_NATIVE_UCHAR;
 
-            align = H5T_NATIVE_SCHAR_COMP_ALIGN_g;
+            align = H5T_NATIVE_SCHAR_ALIGN_g;
             break;
 
         case H5T_NATIVE_INT_MATCH_SHORT:
@@ -633,7 +633,7 @@ H5T__get_native_integer(size_t prec, H5T_sign_t sign, H5T_direction_t direction,
                 tid = H5T_NATIVE_SHORT;
             else
                 tid = H5T_NATIVE_USHORT;
-            align = H5T_NATIVE_SHORT_COMP_ALIGN_g;
+            align = H5T_NATIVE_SHORT_ALIGN_g;
             break;
 
         case H5T_NATIVE_INT_MATCH_INT:
@@ -642,7 +642,7 @@ H5T__get_native_integer(size_t prec, H5T_sign_t sign, H5T_direction_t direction,
             else
                 tid = H5T_NATIVE_UINT;
 
-            align = H5T_NATIVE_INT_COMP_ALIGN_g;
+            align = H5T_NATIVE_INT_ALIGN_g;
             break;
 
         case H5T_NATIVE_INT_MATCH_LONG:
@@ -651,7 +651,7 @@ H5T__get_native_integer(size_t prec, H5T_sign_t sign, H5T_direction_t direction,
             else
                 tid = H5T_NATIVE_ULONG;
 
-            align = H5T_NATIVE_LONG_COMP_ALIGN_g;
+            align = H5T_NATIVE_LONG_ALIGN_g;
             break;
 
         case H5T_NATIVE_INT_MATCH_LLONG:
@@ -660,7 +660,7 @@ H5T__get_native_integer(size_t prec, H5T_sign_t sign, H5T_direction_t direction,
             else
                 tid = H5T_NATIVE_ULLONG;
 
-            align = H5T_NATIVE_LLONG_COMP_ALIGN_g;
+            align = H5T_NATIVE_LLONG_ALIGN_g;
             break;
 
         case H5T_NATIVE_INT_MATCH_UNKNOWN:
@@ -764,17 +764,17 @@ H5T__get_native_float(size_t size, H5T_direction_t direction, size_t *struct_ali
     switch (match) {
         case H5T_NATIVE_FLOAT_MATCH_FLOAT:
             tid   = H5T_NATIVE_FLOAT;
-            align = H5T_NATIVE_FLOAT_COMP_ALIGN_g;
+            align = H5T_NATIVE_FLOAT_ALIGN_g;
             break;
 
         case H5T_NATIVE_FLOAT_MATCH_DOUBLE:
             tid   = H5T_NATIVE_DOUBLE;
-            align = H5T_NATIVE_DOUBLE_COMP_ALIGN_g;
+            align = H5T_NATIVE_DOUBLE_ALIGN_g;
             break;
 
         case H5T_NATIVE_FLOAT_MATCH_LDOUBLE:
             tid   = H5T_NATIVE_LDOUBLE;
-            align = H5T_NATIVE_LDOUBLE_COMP_ALIGN_g;
+            align = H5T_NATIVE_LDOUBLE_ALIGN_g;
             break;
 
         case H5T_NATIVE_FLOAT_MATCH_UNKNOWN:
@@ -940,3 +940,335 @@ H5T__cmp_offset(size_t *comp_size, size_t *offset, size_t elem_size, size_t nele
 
     FUNC_LEAVE_NOAPI(SUCCEED)
 } /* end H5T__cmp_offset() */
+
+#define TAG_ALIGNMENT(tag) (offsetof(alignments_t, tag.x) - offsetof(alignments_t, tag))
+
+/* clang-format off */
+#define NATIVE_ENTRY_INITIALIZER(tag, type, precision, has_sign) {  \
+  .alignmentp = &H5T_NATIVE_##tag##_ALIGN_g                         \
+, .alignment = TAG_ALIGNMENT(tag)                                   \
+, .hidp = &H5T_NATIVE_##tag##_g                                     \
+, .size = sizeof(type)                                              \
+, .atomic = {                                                       \
+      .offset   = 0                                                 \
+    , .prec     = (precision != 0) ? precision : (sizeof(type) * 8) \
+    , .lsb_pad  = H5T_PAD_ZERO                                      \
+    , .msb_pad  = H5T_PAD_ZERO                                      \
+    , .u.i.sign = has_sign ? H5T_SGN_2 : H5T_SGN_NONE               \
+    }                                                               \
+}
+/* clang-format on */
+
+static H5T_order_t
+get_host_byte_order(void)
+{
+    static const union {
+        uint64_t u64;
+        char     byte[8];
+    } endian_exemplar = {.byte = {1}};
+
+    return (endian_exemplar.u64 == 1) ? H5T_ORDER_LE : H5T_ORDER_BE;
+}
+
+/* Establish `H5T_t`s for C99 integer types including fixed- and
+ * minimum-width types (uint16_t, uint_least16_t, uint_fast16_t, ...).
+ *
+ * Also establish alignment for some miscellaneous types: pointers,
+ * HDF5 references, and so on.
+ */
+herr_t
+H5T__init_native_internal(void)
+{
+    /* Here we construct a type that lets us find alignment constraints
+     * without using the alignof operator, which is not available in C99.
+     *
+     * Between each sub-struct's `char` member `c` and member `x`, the
+     * compiler must insert padding to ensure proper alignment of `x`.
+     * We can find the alignment constraint of each `x` by looking at
+     * its offset from the beginning of its sub-struct.
+     */
+    typedef struct {
+        struct {
+            char        c;
+            signed char x;
+        } SCHAR;
+        struct {
+            char          c;
+            unsigned char x;
+        } UCHAR;
+        struct {
+            char  c;
+            short x;
+        } SHORT;
+        struct {
+            char           c;
+            unsigned short x;
+        } USHORT;
+        struct {
+            char c;
+            int  x;
+        } INT;
+        struct {
+            char         c;
+            unsigned int x;
+        } UINT;
+        struct {
+            char c;
+            long x;
+        } LONG;
+        struct {
+            char          c;
+            unsigned long x;
+        } ULONG;
+        struct {
+            char      c;
+            long long x;
+        } LLONG;
+        struct {
+            char               c;
+            unsigned long long x;
+        } ULLONG;
+        struct {
+            char   c;
+            int8_t x;
+        } INT8;
+        struct {
+            char    c;
+            uint8_t x;
+        } UINT8;
+        struct {
+            char         c;
+            int_least8_t x;
+        } INT_LEAST8;
+        struct {
+            char          c;
+            uint_least8_t x;
+        } UINT_LEAST8;
+        struct {
+            char        c;
+            int_fast8_t x;
+        } INT_FAST8;
+        struct {
+            char         c;
+            uint_fast8_t x;
+        } UINT_FAST8;
+        struct {
+            char    c;
+            int16_t x;
+        } INT16;
+        struct {
+            char     c;
+            uint16_t x;
+        } UINT16;
+        struct {
+            char          c;
+            int_least16_t x;
+        } INT_LEAST16;
+        struct {
+            char           c;
+            uint_least16_t x;
+        } UINT_LEAST16;
+        struct {
+            char         c;
+            int_fast16_t x;
+        } INT_FAST16;
+        struct {
+            char          c;
+            uint_fast16_t x;
+        } UINT_FAST16;
+        struct {
+            char    c;
+            int32_t x;
+        } INT32;
+        struct {
+            char     c;
+            uint32_t x;
+        } UINT32;
+        struct {
+            char          c;
+            int_least32_t x;
+        } INT_LEAST32;
+        struct {
+            char           c;
+            uint_least32_t x;
+        } UINT_LEAST32;
+        struct {
+            char         c;
+            int_fast32_t x;
+        } INT_FAST32;
+        struct {
+            char          c;
+            uint_fast32_t x;
+        } UINT_FAST32;
+        struct {
+            char    c;
+            int64_t x;
+        } INT64;
+        struct {
+            char     c;
+            uint64_t x;
+        } UINT64;
+        struct {
+            char          c;
+            int_least64_t x;
+        } INT_LEAST64;
+        struct {
+            char           c;
+            uint_least64_t x;
+        } UINT_LEAST64;
+        struct {
+            char         c;
+            int_fast64_t x;
+        } INT_FAST64;
+        struct {
+            char          c;
+            uint_fast64_t x;
+        } UINT_FAST64;
+        struct {
+            char  c;
+            void *x;
+        } pointer;
+        struct {
+            char  c;
+            hvl_t x;
+        } hvl;
+        struct {
+            char       c;
+            hobj_ref_t x;
+        } hobjref;
+        struct {
+            char            c;
+            hdset_reg_ref_t x;
+        } hdsetregref;
+        struct {
+            char      c;
+            H5R_ref_t x;
+        } ref;
+    } alignments_t;
+
+    /* Describe a C99 type, `type`, and tell where to write its
+     * H5T_t identifier and alignment.  Tables of these descriptions
+     * drive the initialization of `H5T_t`s.
+     */
+    typedef struct {
+        /* Pointer to the global variable that receives the
+         * alignment of `type`:
+         */
+        size_t *alignmentp;
+        size_t  alignment; // natural alignment of `type`
+        /* Pointer to the global variable that receives the
+         * identifier for `type`'s H5T_t:
+         */
+        hid_t *      hidp;
+        size_t       size;   // sizeof(`type`)
+        H5T_atomic_t atomic; // `type` facts such as signedness
+    } native_int_t;
+
+    typedef struct {
+        const native_int_t *table;
+        size_t              nelmts;
+    } native_int_table_t;
+
+    /* clang-format off */
+
+    /* Version 19.10 of the PGI C compiler croaks on the following
+     * tables if they are `static`, so make them `static` only if
+     * some other compiler is used.
+     */
+#if defined(__PGIC__) && __PGIC__ == 19 && __PGIC_MINOR__ == 10
+#   define static_unless_buggy_pgic
+#else
+#   define static_unless_buggy_pgic static
+#endif
+
+    /* The library compiles with a limit on `static` object size, so
+     * I broke this table into three.
+     */
+    static_unless_buggy_pgic const native_int_t table1[] = {
+      NATIVE_ENTRY_INITIALIZER(SCHAR, signed char, 0, true)
+    , NATIVE_ENTRY_INITIALIZER(UCHAR, unsigned char, 0, false)
+    , NATIVE_ENTRY_INITIALIZER(SHORT, short, 0, true)
+    , NATIVE_ENTRY_INITIALIZER(USHORT, unsigned short, 0, false)
+    , NATIVE_ENTRY_INITIALIZER(INT, int, 0, true)
+    , NATIVE_ENTRY_INITIALIZER(UINT, unsigned int, 0, false)
+    , NATIVE_ENTRY_INITIALIZER(INT, int, 0, true)
+    , NATIVE_ENTRY_INITIALIZER(UINT, unsigned int, 0, false)
+    , NATIVE_ENTRY_INITIALIZER(LONG, long, 0, true)
+    , NATIVE_ENTRY_INITIALIZER(ULONG, unsigned long, 0, false)
+    , NATIVE_ENTRY_INITIALIZER(LLONG, long long, 0, true)
+    , NATIVE_ENTRY_INITIALIZER(ULLONG, unsigned long long, 0, false)
+    };
+    static_unless_buggy_pgic const native_int_t table2[] = {
+      NATIVE_ENTRY_INITIALIZER(INT8, int8_t, 0, true)
+    , NATIVE_ENTRY_INITIALIZER(UINT8, uint8_t, 0, false)
+    , NATIVE_ENTRY_INITIALIZER(INT_LEAST8, int_least8_t, 0, true)
+    , NATIVE_ENTRY_INITIALIZER(UINT_LEAST8, uint_least8_t, 0, false)
+    , NATIVE_ENTRY_INITIALIZER(INT_FAST8, int_fast8_t, 0, true)
+    , NATIVE_ENTRY_INITIALIZER(UINT_FAST8, uint_fast8_t, 0, false)
+    , NATIVE_ENTRY_INITIALIZER(INT16, int16_t, 0, true)
+    , NATIVE_ENTRY_INITIALIZER(UINT16, uint16_t, 0, false)
+    , NATIVE_ENTRY_INITIALIZER(INT_LEAST16, int_least16_t, 0, true)
+    , NATIVE_ENTRY_INITIALIZER(UINT_LEAST16, uint_least16_t, 0, false)
+    , NATIVE_ENTRY_INITIALIZER(INT_FAST16, int_fast16_t, 0, true)
+    , NATIVE_ENTRY_INITIALIZER(UINT_FAST16, uint_fast16_t, 0, false)
+    };
+    static_unless_buggy_pgic const native_int_t table3[] = {
+      NATIVE_ENTRY_INITIALIZER(INT32, int32_t, 0, true)
+    , NATIVE_ENTRY_INITIALIZER(UINT32, uint32_t, 0, false)
+    , NATIVE_ENTRY_INITIALIZER(INT_LEAST32, int_least32_t, 0, true)
+    , NATIVE_ENTRY_INITIALIZER(UINT_LEAST32, uint_least32_t, 0, false)
+    , NATIVE_ENTRY_INITIALIZER(INT_FAST32, int_fast32_t, 0, true)
+    , NATIVE_ENTRY_INITIALIZER(UINT_FAST32, uint_fast32_t, 0, false)
+    , NATIVE_ENTRY_INITIALIZER(INT64, int64_t, 0, true)
+    , NATIVE_ENTRY_INITIALIZER(UINT64, uint64_t, 0, false)
+    , NATIVE_ENTRY_INITIALIZER(INT_LEAST64, int_least64_t, 0, true)
+    , NATIVE_ENTRY_INITIALIZER(UINT_LEAST64, uint_least64_t, 0, false)
+    , NATIVE_ENTRY_INITIALIZER(INT_FAST64, int_fast64_t, 0, true)
+    , NATIVE_ENTRY_INITIALIZER(UINT_FAST64, uint_fast64_t, 0, false)
+    };
+    static_unless_buggy_pgic const native_int_table_t table_table[] = {
+      {table1, NELMTS(table1)}
+    , {table2, NELMTS(table2)}
+    , {table3, NELMTS(table3)}
+    };
+#undef static_unless_buggy_pgic
+    /* clang-format on */
+
+    size_t      i, j;
+    H5T_order_t byte_order = get_host_byte_order();
+
+    for (i = 0; i < NELMTS(table_table); i++) {
+        const native_int_t *table  = table_table[i].table;
+        size_t              nelmts = table_table[i].nelmts;
+
+        /* For each C99 type in `table`, create its H5T_t,
+         * register a hid_t for the H5T_t, and record the type's
+         * alignment and hid_t in the variables named by the
+         * table.
+         */
+        for (j = 0; j < nelmts; j++) {
+            H5T_t *dt;
+
+            if (NULL == (dt = H5T__alloc()))
+                return FAIL;
+
+            dt->shared->state          = H5T_STATE_IMMUTABLE;
+            dt->shared->type           = H5T_INTEGER;
+            dt->shared->size           = table[j].size;
+            dt->shared->u.atomic       = table[j].atomic;
+            dt->shared->u.atomic.order = byte_order;
+            *table[j].alignmentp       = table[j].alignment;
+
+            if ((*table[j].hidp = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+                return FAIL;
+        }
+    }
+
+    H5T_POINTER_ALIGN_g     = TAG_ALIGNMENT(pointer);
+    H5T_HVL_ALIGN_g         = TAG_ALIGNMENT(hvl);
+    H5T_HOBJREF_ALIGN_g     = TAG_ALIGNMENT(hobjref);
+    H5T_HDSETREGREF_ALIGN_g = TAG_ALIGNMENT(hdsetregref);
+    H5T_REF_ALIGN_g         = TAG_ALIGNMENT(ref);
+
+    return SUCCEED;
+}
diff --git a/src/H5Tpkg.h b/src/H5Tpkg.h
index 4062cbe..520b44d 100644
--- a/src/H5Tpkg.h
+++ b/src/H5Tpkg.h
@@ -287,7 +287,7 @@ typedef herr_t (*H5T_vlen_setnull_func_t)(H5VL_object_t *file, void *_vl, void *
 typedef herr_t (*H5T_vlen_read_func_t)(H5VL_object_t *file, void *_vl, void *buf, size_t len);
 typedef herr_t (*H5T_vlen_write_func_t)(H5VL_object_t *file, const H5T_vlen_alloc_info_t *vl_alloc_info,
                                         void *_vl, void *buf, void *_bg, size_t seq_len, size_t base_size);
-typedef herr_t (*H5T_vlen_delete_func_t)(H5VL_object_t *file, const void *_vl);
+typedef herr_t (*H5T_vlen_delete_func_t)(H5VL_object_t *file, void *_vl);
 
 /* VL datatype callbacks */
 typedef struct H5T_vlen_class_t {
@@ -388,26 +388,22 @@ typedef herr_t (*H5T_operator_t)(H5T_t *dt, void *op_data /*in,out*/);
 H5_DLLVAR const unsigned H5O_dtype_ver_bounds[H5F_LIBVER_NBOUNDS];
 
 /*
- * Alignment information for native types. A value of N indicates that the
- * data must be aligned on an address ADDR such that 0 == ADDR mod N. When
- * N=1 no alignment is required; N=0 implies that alignment constraints were
- * not calculated.  These alignment info is only for H5Tget_native_type.
- * These values are used for structure alignment.
+ * Alignment constraints for HDF5 types.  Accessing objects of these
+ * types with improper alignment invokes C undefined behavior, so the
+ * library lays out objects with correct alignment, always.
+ *
+ * A value of N indicates that the data must be aligned on an address
+ * ADDR such that 0 == ADDR mod N. When N=1 no alignment is required;
+ * N=0 implies that alignment constraints were not calculated.  These
+ * values are used for structure alignment.
+ *
+ * This alignment info is only for H5Tget_native_type.
  */
-H5_DLLVAR size_t H5T_NATIVE_SCHAR_COMP_ALIGN_g;
-H5_DLLVAR size_t H5T_NATIVE_SHORT_COMP_ALIGN_g;
-H5_DLLVAR size_t H5T_NATIVE_INT_COMP_ALIGN_g;
-H5_DLLVAR size_t H5T_NATIVE_LONG_COMP_ALIGN_g;
-H5_DLLVAR size_t H5T_NATIVE_LLONG_COMP_ALIGN_g;
-H5_DLLVAR size_t H5T_NATIVE_FLOAT_COMP_ALIGN_g;
-H5_DLLVAR size_t H5T_NATIVE_DOUBLE_COMP_ALIGN_g;
-H5_DLLVAR size_t H5T_NATIVE_LDOUBLE_COMP_ALIGN_g;
-
-H5_DLLVAR size_t H5T_POINTER_COMP_ALIGN_g;
-H5_DLLVAR size_t H5T_HVL_COMP_ALIGN_g;
-H5_DLLVAR size_t H5T_HOBJREF_COMP_ALIGN_g;
-H5_DLLVAR size_t H5T_HDSETREGREF_COMP_ALIGN_g;
-H5_DLLVAR size_t H5T_REF_COMP_ALIGN_g;
+H5_DLLVAR size_t H5T_POINTER_ALIGN_g;
+H5_DLLVAR size_t H5T_HVL_ALIGN_g;
+H5_DLLVAR size_t H5T_HOBJREF_ALIGN_g;
+H5_DLLVAR size_t H5T_HDSETREGREF_ALIGN_g;
+H5_DLLVAR size_t H5T_REF_ALIGN_g;
 
 /*
  * Alignment information for native types. A value of N indicates that the
@@ -473,6 +469,7 @@ H5FL_EXTERN(H5T_shared_t);
 
 /* Common functions */
 H5_DLL herr_t H5T__init_native(void);
+H5_DLL herr_t H5T__init_native_internal(void);
 H5_DLL H5T_t *H5T__create(H5T_class_t type, size_t size);
 H5_DLL H5T_t *H5T__alloc(void);
 H5_DLL herr_t H5T__free(H5T_t *dt);
diff --git a/src/H5Tref.c b/src/H5Tref.c
index 967f48d..e8cab02 100644
--- a/src/H5Tref.c
+++ b/src/H5Tref.c
@@ -638,8 +638,8 @@ done:
  */
 static herr_t
 H5T__ref_mem_write(H5VL_object_t *src_file, const void *src_buf, size_t src_size, H5R_type_t src_type,
-                   H5VL_object_t H5_ATTR_UNUSED *dst_file, void *dst_buf, size_t dst_size,
-                   void H5_ATTR_UNUSED *bg_buf)
+                   H5VL_object_t H5_ATTR_UNUSED *dst_file, void *dst_buf,
+                   size_t H5_ATTR_NDEBUG_UNUSED dst_size, void H5_ATTR_UNUSED *bg_buf)
 {
     H5F_t *         src_f   = NULL;
     hid_t           file_id = H5I_INVALID_HID;
@@ -753,6 +753,14 @@ done:
  *
  *-------------------------------------------------------------------------
  */
+/*
+ * It is the correct thing to do to have the reference buffer
+ * be const-qualified here, but the VOL "blob specific" routine
+ * needs a non-const pointer since an operation might modify
+ * the "blob". Disable this warning here (at least temporarily)
+ * for this reason.
+ */
+H5_GCC_CLANG_DIAG_OFF("cast-qual")
 static herr_t
 H5T__ref_disk_isnull(const H5VL_object_t *src_file, const void *src_buf, hbool_t *isnull)
 {
@@ -792,6 +800,7 @@ H5T__ref_disk_isnull(const H5VL_object_t *src_file, const void *src_buf, hbool_t
 done:
     FUNC_LEAVE_NOAPI(ret_value)
 } /* end H5T__ref_disk_isnull() */
+H5_GCC_CLANG_DIAG_ON("cast-qual")
 
 /*-------------------------------------------------------------------------
  * Function:    H5T__ref_disk_setnull
diff --git a/src/H5Tvlen.c b/src/H5Tvlen.c
index 39d33d4..4823940 100644
--- a/src/H5Tvlen.c
+++ b/src/H5Tvlen.c
@@ -76,7 +76,7 @@ static herr_t H5T__vlen_disk_setnull(H5VL_object_t *file, void *_vl, void *_bg);
 static herr_t H5T__vlen_disk_read(H5VL_object_t *file, void *_vl, void *_buf, size_t len);
 static herr_t H5T__vlen_disk_write(H5VL_object_t *file, const H5T_vlen_alloc_info_t *vl_alloc_info, void *_vl,
                                    void *_buf, void *_bg, size_t seq_len, size_t base_size);
-static herr_t H5T__vlen_disk_delete(H5VL_object_t *file, const void *_vl);
+static herr_t H5T__vlen_disk_delete(H5VL_object_t *file, void *_vl);
 
 /*********************/
 /* Public Variables */
@@ -917,9 +917,9 @@ static herr_t
 H5T__vlen_disk_write(H5VL_object_t *file, const H5T_vlen_alloc_info_t H5_ATTR_UNUSED *vl_alloc_info,
                      void *_vl, void *buf, void *_bg, size_t seq_len, size_t base_size)
 {
-    uint8_t *      vl        = (uint8_t *)_vl;       /* Pointer to the user's hvl_t information */
-    const uint8_t *bg        = (const uint8_t *)_bg; /* Pointer to the old data hvl_t */
-    herr_t         ret_value = SUCCEED;              /* Return value */
+    uint8_t *vl        = (uint8_t *)_vl; /* Pointer to the user's hvl_t information */
+    uint8_t *bg        = (uint8_t *)_bg; /* Pointer to the old data hvl_t */
+    herr_t   ret_value = SUCCEED;        /* Return value */
 
     FUNC_ENTER_PACKAGE
 
@@ -957,10 +957,10 @@ done:
  *-------------------------------------------------------------------------
  */
 static herr_t
-H5T__vlen_disk_delete(H5VL_object_t *file, const void *_vl)
+H5T__vlen_disk_delete(H5VL_object_t *file, void *_vl)
 {
-    const uint8_t *vl        = (const uint8_t *)_vl; /* Pointer to the user's hvl_t information */
-    herr_t         ret_value = SUCCEED;              /* Return value */
+    uint8_t *vl        = (uint8_t *)_vl; /* Pointer to the user's hvl_t information */
+    herr_t   ret_value = SUCCEED;        /* Return value */
 
     FUNC_ENTER_PACKAGE
 
@@ -981,7 +981,7 @@ H5T__vlen_disk_delete(H5VL_object_t *file, const void *_vl)
             /* Set up VOL callback arguments */
             vol_cb_args.op_type = H5VL_BLOB_DELETE;
 
-            if (H5VL_blob_specific(file, (void *)vl, &vol_cb_args) < 0) /* Casting away 'const' OK -QAK */
+            if (H5VL_blob_specific(file, vl, &vol_cb_args) < 0)
                 HGOTO_ERROR(H5E_DATATYPE, H5E_CANTREMOVE, FAIL, "unable to delete blob")
         } /* end if */
     }     /* end if */
diff --git a/src/H5detect.c b/src/H5detect.c
index e72d7a0..cf92398 100644
--- a/src/H5detect.c
+++ b/src/H5detect.c
@@ -49,11 +49,6 @@ static const char *FileHeader = "\n\
 #include "H5Tpublic.h"
 #include "H5Rpublic.h"
 
-/* Disable warning about cast increasing the alignment of the target type,
- * that's _exactly_ what this code is probing.  -QAK
- */
-H5_GCC_CLANG_DIAG_OFF("cast-align")
-
 #if defined(__has_attribute)
 #if __has_attribute(no_sanitize_address)
 #define HDF_NO_UBSAN __attribute__((no_sanitize_address))
@@ -66,30 +61,6 @@ H5_GCC_CLANG_DIAG_OFF("cast-align")
 
 #define MAXDETECT 64
 
-/* The ALIGNMENT test code may generate the SIGBUS, SIGSEGV, or SIGILL signals.
- * We use setjmp/longjmp in the signal handlers for recovery. But setjmp/longjmp
- * do not necessary restore the signal blocking status while sigsetjmp/siglongjmp
- * do. If sigsetjmp/siglongjmp are not supported, need to use sigprocmask to
- * unblock the signal before doing longjmp.
- */
-/* Define H5SETJMP/H5LONGJMP depending on if sigsetjmp/siglongjmp are */
-/* supported. */
-#if defined(H5_HAVE_SIGSETJMP) && defined(H5_HAVE_SIGLONGJMP)
-/* Always save blocked signals to be restored by siglongjmp. */
-#define H5JMP_BUF           sigjmp_buf
-#define H5SETJMP(buf)       HDsigsetjmp(buf, 1)
-#define H5LONGJMP(buf, val) HDsiglongjmp(buf, val)
-#define H5HAVE_SIGJMP       /* sigsetjmp/siglongjmp are supported. */
-#else
-#define H5JMP_BUF           jmp_buf
-#define H5SETJMP(buf)       HDsetjmp(buf)
-#define H5LONGJMP(buf, val) HDlongjmp(buf, val)
-#endif
-
-/* ALIGNMENT and signal-handling status codes */
-#define STA_NoALIGNMENT     0x0001 /* No ALIGNMENT Test */
-#define STA_NoHandlerVerify 0x0002 /* No signal handler Tests */
-
 /*
  * This structure holds information about a type that
  * was detected.
@@ -105,27 +76,18 @@ typedef struct detected_t {
     unsigned int  mpos, msize, imp; /* information about mantissa       */
     unsigned int  epos, esize;      /* information about exponent       */
     unsigned long bias;             /* exponent bias for floating pt    */
-    unsigned int  align;            /* required byte alignment          */
     unsigned int  comp_align;       /* alignment for structure          */
 } detected_t;
 
-/* This structure holds structure alignment for pointers, vlen and reference
- * types. */
-typedef struct malign_t {
-    const char * name;
-    unsigned int comp_align; /* alignment for structure          */
-} malign_t;
-
 FILE *rawoutstream = NULL;
 
 /* global variables types detection code */
 H5_GCC_DIAG_OFF("larger-than=")
 static detected_t d_g[MAXDETECT];
 H5_GCC_DIAG_ON("larger-than=")
-static malign_t     m_g[MAXDETECT];
-static volatile int nd_g = 0, na_g = 0;
+static volatile int nd_g = 0;
 
-static void         print_results(int nd, detected_t *d, int na, malign_t *m);
+static void         print_results(int nd, detected_t *d);
 static void         iprint(detected_t *);
 static int          byte_cmp(int, const void *, const void *, const unsigned char *);
 static unsigned int bit_cmp(unsigned int, int *, void *, void *, const unsigned char *);
@@ -134,23 +96,8 @@ static unsigned int imp_bit(unsigned int, int *, void *, void *, const unsigned
 static unsigned int find_bias(unsigned int, unsigned int, int *, void *);
 static void         precision(detected_t *);
 static void         print_header(void);
-static void         detect_C89_integers(void);
 static void         detect_C89_floats(void);
-static void         detect_C99_integers(void);
 static void         detect_C99_floats(void);
-static void         detect_C99_integers8(void);
-static void         detect_C99_integers16(void);
-static void         detect_C99_integers32(void);
-static void         detect_C99_integers64(void);
-static void         detect_alignments(void);
-static unsigned int align_g[]                = {1, 2, 4, 8, 16};
-static int          align_status_g           = 0; /* ALIGNMENT Signal Status */
-static int          sigbus_handler_called_g  = 0; /* how many times called */
-static int          sigsegv_handler_called_g = 0; /* how many times called */
-static int          sigill_handler_called_g  = 0; /* how many times called */
-static int          signal_handler_tested_g  = 0; /* how many times tested */
-static int          verify_signal_handlers(int signum, void (*handler)(int));
-static H5JMP_BUF    jbuf_g;
 
 /*-------------------------------------------------------------------------
  * Function:    precision
@@ -163,105 +110,12 @@ static H5JMP_BUF    jbuf_g;
 static void
 precision(detected_t *d)
 {
-    unsigned int n;
-
-    if (0 == d->msize) {
-        /*
-         * An integer.    The permutation can have negative values at the
-         * beginning or end which represent padding of bytes.  We must adjust
-         * the precision and offset accordingly.
-         */
-        if (d->perm[0] < 0) {
-            /*
-             * Lower addresses are padded.
-             */
-            for (n = 0; n < d->size && d->perm[n] < 0; n++)
-                /*void*/;
-            d->precision = 8 * (d->size - n);
-            d->offset    = 0;
-        }
-        else if (d->perm[d->size - 1] < 0) {
-            /*
-             * Higher addresses are padded.
-             */
-            for (n = 0; n < d->size && d->perm[d->size - (n + 1)]; n++)
-                /*void*/;
-            d->precision = 8 * (d->size - n);
-            d->offset    = 8 * n;
-        }
-        else {
-            /*
-             * No padding.
-             */
-            d->precision = 8 * d->size;
-            d->offset    = 0;
-        }
-    }
-    else {
-        /* A floating point */
-        d->offset    = MIN3(d->mpos, d->epos, d->sign);
-        d->precision = d->msize + d->esize + 1;
-    }
+    /* A floating point */
+    d->offset    = MIN3(d->mpos, d->epos, d->sign);
+    d->precision = d->msize + d->esize + 1;
 }
 
 /*-------------------------------------------------------------------------
- * Function:    DETECT_I/DETECT_BYTE
- *
- * Purpose:     These macro takes a type like `int' and a base name like
- *              `nati' and detects the byte order.  The VAR is used to
- *              construct the names of the C variables defined.
- *
- *              DETECT_I is used for types that are larger than one byte,
- *              DETECT_BYTE is used for types that are exactly one byte.
- *
- * Return:      void
- *
- *-------------------------------------------------------------------------
- */
-#define DETECT_I_BYTE_CORE(TYPE, VAR, INFO, DETECT_TYPE)                                                     \
-    {                                                                                                        \
-        DETECT_TYPE    _v;                                                                                   \
-        int            _i, _j;                                                                               \
-        unsigned char *_x;                                                                                   \
-                                                                                                             \
-        HDmemset(&INFO, 0, sizeof(INFO));                                                                    \
-        INFO.varname = #VAR;                                                                                 \
-        INFO.size    = sizeof(TYPE);                                                                         \
-                                                                                                             \
-        for (_i = sizeof(DETECT_TYPE), _v = 0; _i > 0; --_i)                                                 \
-            _v = (DETECT_TYPE)((DETECT_TYPE)(_v << 8) + (DETECT_TYPE)_i);                                    \
-                                                                                                             \
-        for (_i = 0, _x = (unsigned char *)&_v; _i < (signed)sizeof(DETECT_TYPE); _i++) {                    \
-            _j = (*_x++) - 1;                                                                                \
-            HDassert(_j < (signed)sizeof(DETECT_TYPE));                                                      \
-            INFO.perm[_i] = _j;                                                                              \
-        } /* end for */                                                                                      \
-                                                                                                             \
-        INFO.sign = ('U' != *(#VAR));                                                                        \
-        precision(&(INFO));                                                                                  \
-        ALIGNMENT(TYPE, INFO);                                                                               \
-        if (!HDstrcmp(INFO.varname, "SCHAR") || !HDstrcmp(INFO.varname, "SHORT") ||                          \
-            !HDstrcmp(INFO.varname, "INT") || !HDstrcmp(INFO.varname, "LONG") ||                             \
-            !HDstrcmp(INFO.varname, "LLONG")) {                                                              \
-            COMP_ALIGNMENT(TYPE, INFO.comp_align);                                                           \
-        }                                                                                                    \
-    }
-
-#define DETECT_BYTE(TYPE, VAR, INFO)                                                                         \
-    {                                                                                                        \
-        HDcompile_assert(sizeof(TYPE) == 1);                                                                 \
-                                                                                                             \
-        DETECT_I_BYTE_CORE(TYPE, VAR, INFO, int)                                                             \
-    }
-
-#define DETECT_I(TYPE, VAR, INFO)                                                                            \
-    {                                                                                                        \
-        HDcompile_assert(sizeof(TYPE) > 1);                                                                  \
-                                                                                                             \
-        DETECT_I_BYTE_CORE(TYPE, VAR, INFO, TYPE)                                                            \
-    }
-
-/*-------------------------------------------------------------------------
  * Function:    DETECT_F
  *
  * Purpose:     This macro takes a floating point type like `double' and
@@ -351,28 +205,12 @@ precision(detected_t *d)
         _v1       = (TYPE)1.0L;                                                                              \
         INFO.bias = find_bias(INFO.epos, INFO.esize, INFO.perm, &_v1);                                       \
         precision(&(INFO));                                                                                  \
-        ALIGNMENT(TYPE, INFO);                                                                               \
         if (!HDstrcmp(INFO.varname, "FLOAT") || !HDstrcmp(INFO.varname, "DOUBLE") ||                         \
             !HDstrcmp(INFO.varname, "LDOUBLE")) {                                                            \
             COMP_ALIGNMENT(TYPE, INFO.comp_align);                                                           \
         }                                                                                                    \
     }
 
-/*-------------------------------------------------------------------------
- * Function:    DETECT_M
- *
- * Purpose:     This macro takes only miscellaneous structures or pointer.
- *              It constructs the names and decides the alignment in structure.
- *
- * Return:      void
- *-------------------------------------------------------------------------
- */
-#define DETECT_M(TYPE, VAR, INFO)                                                                            \
-    {                                                                                                        \
-        INFO.name = #VAR;                                                                                    \
-        COMP_ALIGNMENT(TYPE, INFO.comp_align);                                                               \
-    }
-
 /* Detect alignment for C structure */
 #define COMP_ALIGNMENT(TYPE, COMP_ALIGN)                                                                     \
     {                                                                                                        \
@@ -384,140 +222,6 @@ precision(detected_t *d)
         COMP_ALIGN = (unsigned int)((char *)(&(s.x)) - (char *)(&s));                                        \
     }
 
-#define ALIGNMENT(TYPE, INFO)                                                                                \
-    {                                                                                                        \
-        char *volatile _buf    = NULL;                                                                       \
-        TYPE            _val   = 1, _val2;                                                                   \
-        volatile size_t _ano   = 0;                                                                          \
-        void (*_handler)(int)  = HDsignal(SIGBUS, sigbus_handler);                                           \
-        void (*_handler2)(int) = HDsignal(SIGSEGV, sigsegv_handler);                                         \
-        void (*_handler3)(int) = HDsignal(SIGILL, sigill_handler);                                           \
-                                                                                                             \
-        _buf = (char *)HDmalloc(sizeof(TYPE) + align_g[NELMTS(align_g) - 1]);                                \
-        if (H5SETJMP(jbuf_g))                                                                                \
-            _ano++;                                                                                          \
-        if (_ano < NELMTS(align_g)) {                                                                        \
-            *((TYPE *)(_buf + align_g[_ano])) = _val;  /*possible SIGBUS or SEGSEGV*/                        \
-            _val2 = *((TYPE *)(_buf + align_g[_ano])); /*possible SIGBUS or SEGSEGV*/                        \
-            /* Cray Check: This section helps detect alignment on Cray's */                                  \
-            /*              vector machines (like the SV1) which mask off */                                 \
-            /*              pointer values when pointing to non-word aligned */                              \
-            /*              locations with pointers that are supposed to be */                               \
-            /*              word aligned. -QAK */                                                            \
-            HDmemset(_buf, 0xff, sizeof(TYPE) + align_g[NELMTS(align_g) - 1]);                               \
-            /*How to handle VAX types?*/                                                                     \
-            if (INFO.perm[0]) /* Big-Endian */                                                               \
-                HDmemcpy(_buf + align_g[_ano] + (INFO.size - ((INFO.offset + INFO.precision) / 8)),          \
-                         ((char *)&_val) + (INFO.size - ((INFO.offset + INFO.precision) / 8)),               \
-                         (size_t)(INFO.precision / 8));                                                      \
-            else /* Little-Endian */                                                                         \
-                HDmemcpy(_buf + align_g[_ano] + (INFO.offset / 8), ((char *)&_val) + (INFO.offset / 8),      \
-                         (size_t)(INFO.precision / 8));                                                      \
-            _val2 = *((TYPE *)(_buf + align_g[_ano]));                                                       \
-            H5_GCC_CLANG_DIAG_OFF("float-equal")                                                             \
-            if (_val != _val2)                                                                               \
-                H5LONGJMP(jbuf_g, 1);                                                                        \
-            H5_GCC_CLANG_DIAG_ON("float-equal")                                                              \
-            /* End Cray Check */                                                                             \
-            (INFO.align) = align_g[_ano];                                                                    \
-        }                                                                                                    \
-        else {                                                                                               \
-            (INFO.align) = 0;                                                                                \
-            fprintf(stderr, "unable to calculate alignment for %s\n", #TYPE);                                \
-        }                                                                                                    \
-        HDfree(_buf);                                                                                        \
-        HDsignal(SIGBUS, _handler);   /*restore original handler*/                                           \
-        HDsignal(SIGSEGV, _handler2); /*restore original handler*/                                           \
-        HDsignal(SIGILL, _handler3);  /*restore original handler*/                                           \
-    }
-
-/*-------------------------------------------------------------------------
- * Function:    sigsegv_handler
- *
- * Purpose:     Handler for SIGSEGV. We use signal() instead of sigaction()
- *              because it's more portable to non-Posix systems. Although
- *              it's not nearly as nice to work with, it does the job for
- *              this simple stuff.
- *
- * Return:      Returns via H5LONGJMP to jbuf_g.
- *-------------------------------------------------------------------------
- */
-static void
-sigsegv_handler(int H5_ATTR_UNUSED signo)
-{
-#if !defined(H5HAVE_SIGJMP) && defined(H5_HAVE_SIGPROCMASK)
-    /* Use sigprocmask to unblock the signal if sigsetjmp/siglongjmp are not */
-    /* supported. */
-    sigset_t set;
-
-    HDsigemptyset(&set);
-    HDsigaddset(&set, SIGSEGV);
-    HDsigprocmask(SIG_UNBLOCK, &set, NULL);
-#endif
-
-    sigsegv_handler_called_g++;
-    HDsignal(SIGSEGV, sigsegv_handler);
-    H5LONGJMP(jbuf_g, SIGSEGV);
-}
-
-/*-------------------------------------------------------------------------
- * Function:    sigbus_handler
- *
- * Purpose:     Handler for SIGBUS. We use signal() instead of sigaction()
- *              because it's more portable to non-Posix systems. Although
- *              it's not nearly as nice to work with, it does the job for
- *              this simple stuff.
- *
- * Return:      Returns via H5LONGJMP to jbuf_g.
- *-------------------------------------------------------------------------
- */
-static void
-sigbus_handler(int H5_ATTR_UNUSED signo)
-{
-#if !defined(H5HAVE_SIGJMP) && defined(H5_HAVE_SIGPROCMASK)
-    /* Use sigprocmask to unblock the signal if sigsetjmp/siglongjmp are not */
-    /* supported. */
-    sigset_t set;
-
-    HDsigemptyset(&set);
-    HDsigaddset(&set, SIGBUS);
-    HDsigprocmask(SIG_UNBLOCK, &set, NULL);
-#endif
-
-    sigbus_handler_called_g++;
-    HDsignal(SIGBUS, sigbus_handler);
-    H5LONGJMP(jbuf_g, SIGBUS);
-}
-
-/*-------------------------------------------------------------------------
- * Function:    sigill_handler
- *
- * Purpose:     Handler for SIGILL. We use signal() instead of sigaction()
- *              because it's more portable to non-Posix systems. Although
- *              it's not nearly as nice to work with, it does the job for
- *              this simple stuff.
- *
- * Return:      Returns via H5LONGJMP to jbuf_g.
- *-------------------------------------------------------------------------
- */
-static void
-sigill_handler(int H5_ATTR_UNUSED signo)
-{
-#if !defined(H5HAVE_SIGJMP) && defined(H5_HAVE_SIGPROCMASK)
-    /* Use sigprocmask to unblock the signal if sigsetjmp/siglongjmp are not */
-    /* supported. */
-    sigset_t set;
-
-    HDsigemptyset(&set);
-    HDsigaddset(&set, SIGILL);
-    HDsigprocmask(SIG_UNBLOCK, &set, NULL);
-#endif
-
-    sigill_handler_called_g++;
-    HDsignal(SIGILL, sigill_handler);
-    H5LONGJMP(jbuf_g, SIGILL);
-}
-
 /*-------------------------------------------------------------------------
  * Function:    print_results
  *
@@ -527,7 +231,7 @@ sigill_handler(int H5_ATTR_UNUSED signo)
  *-------------------------------------------------------------------------
  */
 static void
-print_results(int nd, detected_t *d, int na, malign_t *misc_align)
+print_results(int nd, detected_t *d)
 {
     int byte_order = 0; /*byte order of data types*/
     int i, j;
@@ -645,10 +349,9 @@ H5T__init_native(void)\n\
     if(NULL == (dt = H5T__alloc()))\n\
         HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, \"datatype allocation failed\")\n\
     dt->shared->state = H5T_STATE_IMMUTABLE;\n\
-    dt->shared->type = H5T_%s;\n\
+    dt->shared->type = H5T_FLOAT;\n\
     dt->shared->size = %d;\n",
-                d[i].msize ? "FLOAT" : "INTEGER", /*class            */
-                d[i].size);                       /*size            */
+                d[i].size); /*size            */
 
         if (byte_order == -1)
             fprintf(rawoutstream, "\
@@ -669,46 +372,36 @@ H5T__init_native(void)\n\
                 d[i].precision);                        /*precision        */
         /*HDassert((d[i].perm[0]>0)==(byte_order>0));*/ /* Double-check that byte-order doesn't change */
 
-        if (0 == d[i].msize) {
-            /* The part unique to fixed point types */
-            fprintf(rawoutstream, "\
-    dt->shared->u.atomic.u.i.sign = H5T_SGN_%s;\n",
-                    d[i].sign ? "2" : "NONE");
-        }
-        else {
-            /* The part unique to floating point types */
-            fprintf(rawoutstream, "\
-    dt->shared->u.atomic.u.f.sign = %d;\n\
-    dt->shared->u.atomic.u.f.epos = %d;\n\
-    dt->shared->u.atomic.u.f.esize = %d;\n\
-    dt->shared->u.atomic.u.f.ebias = 0x%08lx;\n\
-    dt->shared->u.atomic.u.f.mpos = %d;\n\
-    dt->shared->u.atomic.u.f.msize = %d;\n\
-    dt->shared->u.atomic.u.f.norm = H5T_NORM_%s;\n\
-    dt->shared->u.atomic.u.f.pad = H5T_PAD_ZERO;\n",
-                    d[i].sign,                      /*sign location */
-                    d[i].epos,                      /*exponent loc    */
-                    d[i].esize,                     /*exponent size */
-                    (unsigned long)(d[i].bias),     /*exponent bias */
-                    d[i].mpos,                      /*mantissa loc    */
-                    d[i].msize,                     /*mantissa size */
-                    d[i].imp ? "IMPLIED" : "NONE"); /*normalization */
-        }
+        /* The part unique to floating point types */
+        fprintf(rawoutstream, "\
+dt->shared->u.atomic.u.f.sign = %d;\n\
+dt->shared->u.atomic.u.f.epos = %d;\n\
+dt->shared->u.atomic.u.f.esize = %d;\n\
+dt->shared->u.atomic.u.f.ebias = 0x%08lx;\n\
+dt->shared->u.atomic.u.f.mpos = %d;\n\
+dt->shared->u.atomic.u.f.msize = %d;\n\
+dt->shared->u.atomic.u.f.norm = H5T_NORM_%s;\n\
+dt->shared->u.atomic.u.f.pad = H5T_PAD_ZERO;\n",
+                d[i].sign,                      /*sign location */
+                d[i].epos,                      /*exponent loc    */
+                d[i].esize,                     /*exponent size */
+                (unsigned long)(d[i].bias),     /*exponent bias */
+                d[i].mpos,                      /*mantissa loc    */
+                d[i].msize,                     /*mantissa size */
+                d[i].imp ? "IMPLIED" : "NONE"); /*normalization */
 
         /* Register the type */
         fprintf(rawoutstream, "\
     if((H5T_NATIVE_%s_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)\n\
         HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, \"can't register ID for built-in datatype\")\n",
                 d[i].varname);
-        fprintf(rawoutstream, "    H5T_NATIVE_%s_ALIGN_g = %lu;\n", d[i].varname,
-                (unsigned long)(d[i].align));
 
         /* Variables for alignment of compound datatype */
         if (!HDstrcmp(d[i].varname, "SCHAR") || !HDstrcmp(d[i].varname, "SHORT") ||
             !HDstrcmp(d[i].varname, "INT") || !HDstrcmp(d[i].varname, "LONG") ||
             !HDstrcmp(d[i].varname, "LLONG") || !HDstrcmp(d[i].varname, "FLOAT") ||
             !HDstrcmp(d[i].varname, "DOUBLE") || !HDstrcmp(d[i].varname, "LDOUBLE")) {
-            fprintf(rawoutstream, "    H5T_NATIVE_%s_COMP_ALIGN_g = %lu;\n", d[i].varname,
+            fprintf(rawoutstream, "    H5T_NATIVE_%s_ALIGN_g = %lu;\n", d[i].varname,
                     (unsigned long)(d[i].comp_align));
         }
     }
@@ -727,12 +420,6 @@ H5T__init_native(void)\n\
                 "BE");
     }
 
-    /* Structure alignment for pointers, vlen and reference types */
-    fprintf(rawoutstream, "\n    /* Structure alignment for pointers, vlen and reference types */\n");
-    for (j = 0; j < na; j++)
-        fprintf(rawoutstream, "    H5T_%s_COMP_ALIGN_g = %lu;\n", misc_align[j].name,
-                (unsigned long)(misc_align[j].comp_align));
-
     fprintf(rawoutstream, "\
 \n\
 done:\n\
@@ -745,42 +432,6 @@ done:\n\
 \n\
     FUNC_LEAVE_NOAPI(ret_value);\n} /* end H5T__init_native() */\n");
 
-    /* Print the ALIGNMENT and signal-handling status as comments */
-    fprintf(rawoutstream, "\n"
-                          "/****************************************/\n"
-                          "/* ALIGNMENT and signal-handling status */\n"
-                          "/****************************************/\n");
-    if (align_status_g & STA_NoALIGNMENT)
-        fprintf(rawoutstream, "/* ALIGNAMENT test is not available */\n");
-    if (align_status_g & STA_NoHandlerVerify)
-        fprintf(rawoutstream, "/* Signal handlers verify test is not available */\n");
-        /* The following is available in H5pubconf.h. Printing them here for */
-        /* convenience. */
-#ifdef H5_HAVE_SIGSETJMP
-    fprintf(rawoutstream, "/* sigsetjmp() support: yes */\n");
-#else
-    fprintf(rawoutstream, "/* sigsetjmp() support: no */\n");
-#endif
-#ifdef H5_HAVE_SIGLONGJMP
-    fprintf(rawoutstream, "/* siglongjmp() support: yes */\n");
-#else
-    fprintf(rawoutstream, "/* siglongjmp() support: no */\n");
-#endif
-#ifdef H5_HAVE_SIGPROCMASK
-    fprintf(rawoutstream, "/* sigprocmask() support: yes */\n");
-#else
-    fprintf(rawoutstream, "/* sigprocmask() support: no */\n");
-#endif
-
-    /* Print the statistics of signal handlers called for debugging */
-    fprintf(rawoutstream, "\n"
-                          "/******************************/\n"
-                          "/* signal handlers statistics */\n"
-                          "/******************************/\n");
-    fprintf(rawoutstream, "/* signal_handlers tested: %d times */\n", signal_handler_tested_g);
-    fprintf(rawoutstream, "/* sigbus_handler called: %d times */\n", sigbus_handler_called_g);
-    fprintf(rawoutstream, "/* sigsegv_handler called: %d times */\n", sigsegv_handler_called_g);
-    fprintf(rawoutstream, "/* sigill_handler called: %d times */\n", sigill_handler_called_g);
 } /* end print_results() */
 
 /*-------------------------------------------------------------------------
@@ -820,7 +471,7 @@ iprint(detected_t *d)
             unsigned int j;
 
             for (j = 8; j > 0; --j) {
-                if (k == d->sign && d->msize) {
+                if (k == d->sign) {
                     HDfputc('S', rawoutstream);
                 }
                 else if (k >= d->epos && k < d->epos + d->esize) {
@@ -829,14 +480,8 @@ iprint(detected_t *d)
                 else if (k >= d->mpos && k < d->mpos + d->msize) {
                     HDfputc('M', rawoutstream);
                 }
-                else if (d->msize) {
-                    HDfputc('?', rawoutstream); /*unknown floating point bit */
-                }
-                else if (d->sign) {
-                    HDfputc('I', rawoutstream);
-                }
                 else {
-                    HDfputc('U', rawoutstream);
+                    HDfputc('?', rawoutstream); /*unknown floating point bit */
                 }
                 --k;
             }
@@ -853,22 +498,7 @@ iprint(detected_t *d)
     /*
      * Is there an implicit bit in the mantissa.
      */
-    if (d->msize) {
-        fprintf(rawoutstream, "    * Implicit bit? %s\n", d->imp ? "yes" : "no");
-    }
-
-    /*
-     * Alignment
-     */
-    if (0 == d->align) {
-        fprintf(rawoutstream, "    * Alignment: NOT CALCULATED\n");
-    }
-    else if (1 == d->align) {
-        fprintf(rawoutstream, "    * Alignment: none\n");
-    }
-    else {
-        fprintf(rawoutstream, "    * Alignment: %lu\n", (unsigned long)(d->align));
-    }
+    fprintf(rawoutstream, "    * Implicit bit? %s\n", d->imp ? "yes" : "no");
 }
 
 /*-------------------------------------------------------------------------
@@ -1222,35 +852,6 @@ bit.\n";
 }
 
 /*-------------------------------------------------------------------------
- * Function:    detect_C89_integers
- *
- * Purpose:     Detect C89 integer types
- *
- * Return:      void
- *-------------------------------------------------------------------------
- */
-static void HDF_NO_UBSAN
-detect_C89_integers(void)
-{
-    DETECT_BYTE(signed char, SCHAR, d_g[nd_g]);
-    nd_g++;
-    DETECT_BYTE(unsigned char, UCHAR, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(short, SHORT, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(unsigned short, USHORT, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(int, INT, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(unsigned int, UINT, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(long, LONG, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(unsigned long, ULONG, d_g[nd_g]);
-    nd_g++;
-}
-
-/*-------------------------------------------------------------------------
  * Function:    detect_C89_floats
  *
  * Purpose:     Detect C89 floating point types
@@ -1268,131 +869,6 @@ detect_C89_floats(void)
 }
 
 /*-------------------------------------------------------------------------
- * Function:    detect_C99_integers8
- *
- * Purpose:     Detect C99 8 bit integer types
- *
- * Return:      void
- *-------------------------------------------------------------------------
- */
-static void HDF_NO_UBSAN
-detect_C99_integers8(void)
-{
-    DETECT_BYTE(int8_t, INT8, d_g[nd_g]);
-    nd_g++;
-    DETECT_BYTE(uint8_t, UINT8, d_g[nd_g]);
-    nd_g++;
-    DETECT_BYTE(int_least8_t, INT_LEAST8, d_g[nd_g]);
-    nd_g++;
-    DETECT_BYTE(uint_least8_t, UINT_LEAST8, d_g[nd_g]);
-    nd_g++;
-    DETECT_BYTE(int_fast8_t, INT_FAST8, d_g[nd_g]);
-    nd_g++;
-    DETECT_BYTE(uint_fast8_t, UINT_FAST8, d_g[nd_g]);
-    nd_g++;
-}
-
-/*-------------------------------------------------------------------------
- * Function:    detect_C99_integers16
- *
- * Purpose:     Detect C99 16 bit integer types
- *
- * Return:      void
- *-------------------------------------------------------------------------
- */
-static void HDF_NO_UBSAN
-detect_C99_integers16(void)
-{
-    DETECT_I(int16_t, INT16, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(uint16_t, UINT16, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(int_least16_t, INT_LEAST16, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(uint_least16_t, UINT_LEAST16, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(int_fast16_t, INT_FAST16, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(uint_fast16_t, UINT_FAST16, d_g[nd_g]);
-    nd_g++;
-}
-
-/*-------------------------------------------------------------------------
- * Function:    detect_C99_integers32
- *
- * Purpose:     Detect C99 32 bit integer types
- *
- * Return:      void
- *-------------------------------------------------------------------------
- */
-static void HDF_NO_UBSAN
-detect_C99_integers32(void)
-{
-    DETECT_I(int32_t, INT32, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(uint32_t, UINT32, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(int_least32_t, INT_LEAST32, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(uint_least32_t, UINT_LEAST32, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(int_fast32_t, INT_FAST32, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(uint_fast32_t, UINT_FAST32, d_g[nd_g]);
-    nd_g++;
-}
-
-/*-------------------------------------------------------------------------
- * Function:    detect_C99_integers64
- *
- * Purpose:     Detect C99 64 bit integer types
- *
- * Return:      void
- *
- *-------------------------------------------------------------------------
- */
-static void HDF_NO_UBSAN
-detect_C99_integers64(void)
-{
-    DETECT_I(int64_t, INT64, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(uint64_t, UINT64, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(int_least64_t, INT_LEAST64, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(uint_least64_t, UINT_LEAST64, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(int_fast64_t, INT_FAST64, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(uint_fast64_t, UINT_FAST64, d_g[nd_g]);
-    nd_g++;
-
-    DETECT_I(long long, LLONG, d_g[nd_g]);
-    nd_g++;
-    DETECT_I(unsigned long long, ULLONG, d_g[nd_g]);
-    nd_g++;
-}
-
-/*-------------------------------------------------------------------------
- * Function:    detect_C99_integers
- *
- * Purpose:     Detect C99 integer types
- *
- * Return:      void
- *-------------------------------------------------------------------------
- */
-static void HDF_NO_UBSAN
-detect_C99_integers(void)
-{
-    /* break it down to more subroutines so that each module subroutine */
-    /* is smaller and takes less time to compile with optimization on.  */
-    detect_C99_integers8();
-    detect_C99_integers16();
-    detect_C99_integers32();
-    detect_C99_integers64();
-}
-
-/*-------------------------------------------------------------------------
  * Function:    detect_C99_floats
  *
  * Purpose:     Detect C99 floating point types
@@ -1419,87 +895,6 @@ detect_C99_floats(void)
 }
 
 /*-------------------------------------------------------------------------
- * Function:    detect_alignments
- *
- * Purpose:     Detect structure alignments
- *
- * Return:      void
- *-------------------------------------------------------------------------
- */
-static void HDF_NO_UBSAN
-detect_alignments(void)
-{
-    /* Detect structure alignment for pointers, vlen and reference types */
-    DETECT_M(void *, POINTER, m_g[na_g]);
-    na_g++;
-    DETECT_M(hvl_t, HVL, m_g[na_g]);
-    na_g++;
-    DETECT_M(hobj_ref_t, HOBJREF, m_g[na_g]);
-    na_g++;
-    DETECT_M(hdset_reg_ref_t, HDSETREGREF, m_g[na_g]);
-    na_g++;
-    DETECT_M(H5R_ref_t, REF, m_g[na_g]);
-    na_g++;
-}
-
-/* Verify the signal handler for signal signum works correctly multiple times.
- * One possible cause of failure is that the signal handling is blocked or
- * changed to SIG_DFL after H5LONGJMP.
- * Return  0 for success, -1 for failure.
- */
-static int
-verify_signal_handlers(int signum, void (*handler)(int))
-{
-#if defined(__has_feature) /* Clang */
-#if __has_feature(address_sanitizer) || __has_feature(thread_sanitizer)
-    /* Under the address and thread sanitizers, don't raise any signals. */
-    return 0;
-#endif
-#elif defined(__SANITIZE_ADDRESS__) || defined(__SANITIZE_THREAD__) /* GCC */
-    return 0;
-#endif
-    void (*save_handler)(int) = HDsignal(signum, handler);
-    volatile int i, val;
-    int          ntries     = 5;
-    volatile int nfailures  = 0;
-    volatile int nsuccesses = 0;
-
-    for (i = 0; i < ntries; i++) {
-        val = H5SETJMP(jbuf_g);
-        if (val == 0) {
-            /* send self the signal to trigger the handler */
-            signal_handler_tested_g++;
-            HDraise(signum);
-            /* Should not reach here. Record error. */
-            nfailures++;
-        }
-        else {
-            if (val == signum) {
-                /* return from signum handler. Record a success. */
-                nsuccesses++;
-            }
-            else {
-                fprintf(stderr, "Unknown return value (%d) from H5SETJMP", val);
-                nfailures++;
-            }
-        }
-    }
-    /* restore save handler, check results and report failures */
-    HDsignal(signum, save_handler);
-    if (nfailures > 0 || nsuccesses != ntries) {
-        fprintf(stderr,
-                "verify_signal_handlers for signal %d did %d tries. "
-                "Found %d failures and %d successes\n",
-                signum, ntries, nfailures, nsuccesses);
-        return -1;
-    }
-    else {
-        /* all succeeded */
-        return 0;
-    }
-}
-
-/*-------------------------------------------------------------------------
  * Function:    main
  *
  * Purpose:     Main entry point.
@@ -1527,35 +922,15 @@ main(int argc, char *argv[])
     if (!rawoutstream)
         rawoutstream = stdout;
 
-    /* verify the SIGBUS and SIGSEGV handlers work properly */
-    if (verify_signal_handlers(SIGBUS, sigbus_handler) != 0) {
-        fprintf(stderr, "Signal handler %s for signal %d failed\n", "sigbus_handler", SIGBUS);
-    }
-    if (verify_signal_handlers(SIGSEGV, sigsegv_handler) != 0) {
-        fprintf(stderr, "Signal handler %s for signal %d failed\n", "sigsegv_handler", SIGSEGV);
-    }
-    if (verify_signal_handlers(SIGILL, sigill_handler) != 0) {
-        fprintf(stderr, "Signal handler %s for signal %d failed\n", "sigill_handler", SIGILL);
-    }
-
     print_header();
 
-    /* C89 integer types */
-    detect_C89_integers();
-
-    /* C99 integer types */
-    detect_C99_integers();
-
     /* C89 floating point types */
     detect_C89_floats();
 
     /* C99 floating point types */
     detect_C99_floats();
 
-    /* Detect structure alignment */
-    detect_alignments();
-
-    print_results(nd_g, d_g, na_g, m_g);
+    print_results(nd_g, d_g);
 
     if (rawoutstream && rawoutstream != stdout) {
         if (HDfclose(rawoutstream))
@@ -1566,5 +941,3 @@ main(int argc, char *argv[])
 
     return EXIT_SUCCESS;
 }
-
-H5_GCC_CLANG_DIAG_ON("cast-align")
diff --git a/test/cache.c b/test/cache.c
index 2f69157..45e6263 100644
--- a/test/cache.c
+++ b/test/cache.c
@@ -123,6 +123,21 @@ struct move_entry_test_spec {
     hbool_t is_protected;
 };
 
+struct pinned_single_entry_test_spec {
+    int          test_num;
+    int          entry_type;
+    int          entry_idx;
+    hbool_t      dirty_flag;
+    hbool_t      mark_dirty;
+    hbool_t      pop_mark_dirty_prot;
+    hbool_t      pop_mark_dirty_pinned;
+    hbool_t      unprotect_unpin;
+    unsigned int flags;
+    unsigned int flush_flags;
+    hbool_t      expected_serialized;
+    hbool_t      expected_destroyed;
+};
+
 /* private function declarations: */
 
 static unsigned smoke_check_1(int express_test, unsigned paged);
@@ -4829,7 +4844,11 @@ check_flush_cache__pe_multi_entry_test(H5F_t *file_ptr, int test_num, unsigned i
 static void
 check_flush_cache__flush_ops(H5F_t *file_ptr)
 {
-    H5C_t *cache_ptr = file_ptr->shared->cache;
+    const int                        max_num_spec  = 10;
+    const int                        max_num_check = 4;
+    struct fo_flush_cache_test_spec *spec          = NULL;
+    struct fo_flush_entry_check *    checks        = NULL;
+    H5C_t *                          cache_ptr     = file_ptr->shared->cache;
 
     if (cache_ptr == NULL) {
 
@@ -4842,85 +4861,105 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
         failure_mssg = "cache not empty at beginning of flush ops test.";
     }
 
+    spec = HDmalloc((size_t)max_num_spec * sizeof(struct fo_flush_cache_test_spec));
+    if (spec == NULL) {
+
+        pass         = FALSE;
+        failure_mssg = "couldn't allocate flush ops test spec array";
+    }
+
+    checks = HDmalloc((size_t)max_num_check * sizeof(struct fo_flush_entry_check));
+    if (checks == NULL) {
+
+        pass         = FALSE;
+        failure_mssg = "couldn't allocate flush ops test check array";
+    }
+
     if (pass) /* test #1 */
     {
         /* start with a very simple test, in which there are two entries
          * resident in cache, and the second entry dirties the first in
          * the flush callback.  No size changes, and no flush flags.
          */
-        int                             test_num                 = 1;
-        unsigned int                    flush_flags              = H5C__NO_FLAGS_SET;
-        int                             spec_size                = 2;
-        unsigned                        init_expected_index_len  = 2;
-        size_t                          init_expected_index_size = 2 * PICO_ENTRY_SIZE;
-        unsigned                        expected_index_len       = 2;
-        size_t                          expected_index_size      = 2 * PICO_ENTRY_SIZE;
-        struct fo_flush_cache_test_spec spec[2]                  = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ 0,
-             /* entry_index        = */ 0,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 0,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 1,
-             /* entry_type         = */ 0,
-             /* entry_index        = */ 1,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 1,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__DIRTY, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE}};
-        int                         check_size = 0;
-        struct fo_flush_entry_check checks[1]  = {{/* entry_num          = */ 0,
+        int          test_num                 = 1;
+        unsigned int flush_flags              = H5C__NO_FLAGS_SET;
+        int          spec_size                = 2;
+        int          check_size               = 0;
+        unsigned     init_expected_index_len  = 2;
+        size_t       init_expected_index_size = 2 * PICO_ENTRY_SIZE;
+        unsigned     expected_index_len       = 2;
+        size_t       expected_index_size      = 2 * PICO_ENTRY_SIZE;
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ 0,
+            /* entry_index        = */ 0,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 0,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[1] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 1,
+            /* entry_type         = */ 0,
+            /* entry_index        = */ 1,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 1,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__DIRTY, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ 0,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ (size_t)0,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ FALSE,
                                                   /* expected_serialized = */ FALSE,
-                                                  /* expected_destroyed = */ FALSE}};
+                                                  /* expected_destroyed = */ FALSE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -4936,79 +4975,85 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
          * Create two entries resident in cache, and have the second entry
          * dirty the first in the flush callback.
          */
-        int                             test_num                 = 2;
-        unsigned int                    flush_flags              = H5C__FLUSH_INVALIDATE_FLAG;
-        int                             spec_size                = 2;
-        unsigned                        init_expected_index_len  = 2;
-        size_t                          init_expected_index_size = 2 * PICO_ENTRY_SIZE;
-        unsigned                        expected_index_len       = 0;
-        size_t                          expected_index_size      = 0;
-        struct fo_flush_cache_test_spec spec[2]                  = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ PICO_ENTRY_TYPE,
-             /* entry_index        = */ 0,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 0,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 1,
-             /* entry_type         = */ PICO_ENTRY_TYPE,
-             /* entry_index        = */ 1,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 1,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:    flag:    size: order_ptr*/
-             {{FLUSH_OP__DIRTY, PICO_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE}};
-        int                         check_size = 0;
-        struct fo_flush_entry_check checks[1]  = {{/* entry_num          = */ 0,
+        int          test_num                 = 2;
+        unsigned int flush_flags              = H5C__FLUSH_INVALIDATE_FLAG;
+        int          spec_size                = 2;
+        int          check_size               = 0;
+        unsigned     init_expected_index_len  = 2;
+        size_t       init_expected_index_size = 2 * PICO_ENTRY_SIZE;
+        unsigned     expected_index_len       = 0;
+        size_t       expected_index_size      = 0;
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ PICO_ENTRY_TYPE,
+            /* entry_index        = */ 0,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 0,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+        spec[1] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 1,
+            /* entry_type         = */ PICO_ENTRY_TYPE,
+            /* entry_index        = */ 1,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 1,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:    flag:    size: order_ptr*/
+            {{FLUSH_OP__DIRTY, PICO_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ 0,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ (size_t)0,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ FALSE,
                                                   /* expected_serialized = */ FALSE,
-                                                  /* expected_destroyed = */ FALSE}};
+                                                  /* expected_destroyed = */ FALSE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -5021,53 +5066,58 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
          * which the call back function resizes the entry for which it has
          * been called.
          */
-        int                             test_num                 = 3;
-        unsigned int                    flush_flags              = H5C__NO_FLAGS_SET;
-        int                             spec_size                = 1;
-        unsigned                        init_expected_index_len  = 1;
-        size_t                          init_expected_index_size = VARIABLE_ENTRY_SIZE / 4;
-        unsigned                        expected_index_len       = 1;
-        size_t                          expected_index_size      = VARIABLE_ENTRY_SIZE / 2;
-        struct fo_flush_cache_test_spec spec[1]                  = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 0,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ TRUE,
-             /* new_size           = */ VARIABLE_ENTRY_SIZE / 4,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 1,
-             /* flush_ops          = */
-             /*    op_code:        type:            idx:    flag:    size: order_ptr:*/
-             {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE}};
-        int                         check_size = 0;
-        struct fo_flush_entry_check checks[1]  = {{/* entry_num          = */ 0,
+        int          test_num                 = 3;
+        unsigned int flush_flags              = H5C__NO_FLAGS_SET;
+        int          spec_size                = 1;
+        int          check_size               = 0;
+        unsigned     init_expected_index_len  = 1;
+        size_t       init_expected_index_size = VARIABLE_ENTRY_SIZE / 4;
+        unsigned     expected_index_len       = 1;
+        size_t       expected_index_size      = VARIABLE_ENTRY_SIZE / 2;
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 0,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ TRUE,
+            /* new_size           = */ VARIABLE_ENTRY_SIZE / 4,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 1,
+            /* flush_ops          = */
+            /*    op_code:        type:            idx:    flag:    size: order_ptr:*/
+            {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ 0,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ (size_t)0,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ FALSE,
                                                   /* expected_serialized = */ FALSE,
-                                                  /* expected_destroyed = */ FALSE}};
+                                                  /* expected_destroyed = */ FALSE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -5082,53 +5132,58 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
          * which the call back function resizes the entry for which it has
          * been called.
          */
-        int                             test_num                 = 4;
-        unsigned int                    flush_flags              = H5C__FLUSH_INVALIDATE_FLAG;
-        int                             spec_size                = 1;
-        unsigned                        init_expected_index_len  = 1;
-        size_t                          init_expected_index_size = VARIABLE_ENTRY_SIZE / 4;
-        unsigned                        expected_index_len       = 0;
-        size_t                          expected_index_size      = 0;
-        struct fo_flush_cache_test_spec spec[1]                  = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 0,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ TRUE,
-             /* new_size           = */ VARIABLE_ENTRY_SIZE / 4,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 1,
-             /* flush_ops          = */
-             /*    op_code:        type:            idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE}};
-        int                         check_size = 0;
-        struct fo_flush_entry_check checks[1]  = {{/* entry_num          = */ 0,
+        int          test_num                 = 4;
+        unsigned int flush_flags              = H5C__FLUSH_INVALIDATE_FLAG;
+        int          spec_size                = 1;
+        int          check_size               = 0;
+        unsigned     init_expected_index_len  = 1;
+        size_t       init_expected_index_size = VARIABLE_ENTRY_SIZE / 4;
+        unsigned     expected_index_len       = 0;
+        size_t       expected_index_size      = 0;
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 0,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ TRUE,
+            /* new_size           = */ VARIABLE_ENTRY_SIZE / 4,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 1,
+            /* flush_ops          = */
+            /*    op_code:        type:            idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ 0,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ (size_t)0,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ FALSE,
                                                   /* expected_serialized = */ FALSE,
-                                                  /* expected_destroyed = */ FALSE}};
+                                                  /* expected_destroyed = */ FALSE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -5150,53 +5205,58 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
          * be accompanied by a resize.  Note that as a result, this
          * test becomes redundant with later tests.
          */
-        int                             test_num                 = 5; /* and 6 */
-        unsigned int                    flush_flags              = H5C__NO_FLAGS_SET;
-        int                             spec_size                = 1;
-        unsigned                        init_expected_index_len  = 1;
-        size_t                          init_expected_index_size = VARIABLE_ENTRY_SIZE;
-        unsigned                        expected_index_len       = 1;
-        size_t                          expected_index_size      = VARIABLE_ENTRY_SIZE / 2;
-        struct fo_flush_cache_test_spec spec[1]                  = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 0,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 2,
-             /* flush_ops          = */
-             /*    op_code:        type:            idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE}};
-        int                         check_size = 0;
-        struct fo_flush_entry_check checks[1]  = {{/* entry_num          = */ 0,
+        int          test_num                 = 5; /* and 6 */
+        unsigned int flush_flags              = H5C__NO_FLAGS_SET;
+        int          spec_size                = 1;
+        int          check_size               = 0;
+        unsigned     init_expected_index_len  = 1;
+        size_t       init_expected_index_size = VARIABLE_ENTRY_SIZE;
+        unsigned     expected_index_len       = 1;
+        size_t       expected_index_size      = VARIABLE_ENTRY_SIZE / 2;
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 0,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 2,
+            /* flush_ops          = */
+            /*    op_code:        type:            idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ 0,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ (size_t)0,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ FALSE,
                                                   /* expected_serialized = */ FALSE,
-                                                  /* expected_destroyed = */ FALSE}};
+                                                  /* expected_destroyed = */ FALSE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -5242,53 +5302,58 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
          * be accompanied by a resize.  Note that as a result, this
          * test becomes redundant with later tests.
          */
-        int                             test_num                 = 7; /* and 8 */
-        unsigned int                    flush_flags              = H5C__NO_FLAGS_SET;
-        int                             spec_size                = 1;
-        unsigned                        init_expected_index_len  = 1;
-        size_t                          init_expected_index_size = VARIABLE_ENTRY_SIZE;
-        unsigned                        expected_index_len       = 1;
-        size_t                          expected_index_size      = VARIABLE_ENTRY_SIZE / 2;
-        struct fo_flush_cache_test_spec spec[1]                  = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 0,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 2,
-             /* flush_ops          = */
-             /*    op_code:        type:            idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE}};
-        int                         check_size = 0;
-        struct fo_flush_entry_check checks[1]  = {{/* entry_num          = */ 0,
+        int          test_num                 = 7; /* and 8 */
+        unsigned int flush_flags              = H5C__NO_FLAGS_SET;
+        int          spec_size                = 1;
+        int          check_size               = 0;
+        unsigned     init_expected_index_len  = 1;
+        size_t       init_expected_index_size = VARIABLE_ENTRY_SIZE;
+        unsigned     expected_index_len       = 1;
+        size_t       expected_index_size      = VARIABLE_ENTRY_SIZE / 2;
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 0,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 2,
+            /* flush_ops          = */
+            /*    op_code:        type:            idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ 0,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ (size_t)0,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ FALSE,
                                                   /* expected_serialized = */ FALSE,
-                                                  /* expected_destroyed = */ FALSE}};
+                                                  /* expected_destroyed = */ FALSE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -5330,53 +5395,58 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
          * Again, we run this entry twice, as the first run moves the entry
          * to its alternate address, and the second moves it back.
          */
-        int                             test_num                 = 9; /* and 10 */
-        unsigned int                    flush_flags              = H5C__NO_FLAGS_SET;
-        int                             spec_size                = 1;
-        unsigned                        init_expected_index_len  = 1;
-        size_t                          init_expected_index_size = VARIABLE_ENTRY_SIZE / 2;
-        unsigned                        expected_index_len       = 1;
-        size_t                          expected_index_size      = VARIABLE_ENTRY_SIZE / 4;
-        struct fo_flush_cache_test_spec spec[1]                  = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 0,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ TRUE,
-             /* new_size           = */ VARIABLE_ENTRY_SIZE / 2,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 2,
-             /* flush_ops          = */
-             /*    op_code:        type:            idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE}};
-        int                         check_size = 0;
-        struct fo_flush_entry_check checks[1]  = {{/* entry_num          = */ 0,
+        int          test_num                 = 9; /* and 10 */
+        unsigned int flush_flags              = H5C__NO_FLAGS_SET;
+        int          spec_size                = 1;
+        int          check_size               = 0;
+        unsigned     init_expected_index_len  = 1;
+        size_t       init_expected_index_size = VARIABLE_ENTRY_SIZE / 2;
+        unsigned     expected_index_len       = 1;
+        size_t       expected_index_size      = VARIABLE_ENTRY_SIZE / 4;
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 0,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ TRUE,
+            /* new_size           = */ VARIABLE_ENTRY_SIZE / 2,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 2,
+            /* flush_ops          = */
+            /*    op_code:        type:            idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ 0,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ (size_t)0,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ FALSE,
                                                   /* expected_serialized = */ FALSE,
-                                                  /* expected_destroyed = */ FALSE}};
+                                                  /* expected_destroyed = */ FALSE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -5416,53 +5486,58 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
          * Again, we run this entry twice, as the first run moves the entry to its
          * alternate address, and the second moves it back.
          */
-        int                             test_num                 = 11; /* and 12 */
-        unsigned int                    flush_flags              = H5C__NO_FLAGS_SET;
-        int                             spec_size                = 1;
-        unsigned                        init_expected_index_len  = 1;
-        size_t                          init_expected_index_size = VARIABLE_ENTRY_SIZE / 2;
-        unsigned                        expected_index_len       = 1;
-        size_t                          expected_index_size      = VARIABLE_ENTRY_SIZE / 4;
-        struct fo_flush_cache_test_spec spec[1]                  = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 0,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ TRUE,
-             /* new_size           = */ VARIABLE_ENTRY_SIZE / 2,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 2,
-             /* flush_ops          = */
-             /*    op_code:        type:            idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE}};
-        int                         check_size = 0;
-        struct fo_flush_entry_check checks[1]  = {{/* entry_num          = */ 0,
+        int          test_num                 = 11; /* and 12 */
+        unsigned int flush_flags              = H5C__NO_FLAGS_SET;
+        int          spec_size                = 1;
+        int          check_size               = 0;
+        unsigned     init_expected_index_len  = 1;
+        size_t       init_expected_index_size = VARIABLE_ENTRY_SIZE / 2;
+        unsigned     expected_index_len       = 1;
+        size_t       expected_index_size      = VARIABLE_ENTRY_SIZE / 4;
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 0,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ TRUE,
+            /* new_size           = */ VARIABLE_ENTRY_SIZE / 2,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 2,
+            /* flush_ops          = */
+            /*    op_code:        type:            idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ 0,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ (size_t)0,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ FALSE,
                                                   /* expected_serialized = */ FALSE,
-                                                  /* expected_destroyed = */ FALSE}};
+                                                  /* expected_destroyed = */ FALSE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -5504,65 +5579,70 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
          * At present, I am assured that this case will never occur, but
          * lets make sure we can handle it regardless.
          */
-        int                             test_num                 = 13;
-        unsigned int                    flush_flags              = H5C__NO_FLAGS_SET;
-        int                             spec_size                = 1;
-        unsigned                        init_expected_index_len  = 1;
-        size_t                          init_expected_index_size = 1 * PICO_ENTRY_SIZE;
-        unsigned                        expected_index_len       = 3;
-        size_t                          expected_index_size      = 3 * PICO_ENTRY_SIZE;
-        struct fo_flush_cache_test_spec spec[1]                  = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ 0,
-             /* entry_index        = */ 1,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 2,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__DIRTY, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, 0, 2, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE}};
-        int                         check_size = 2;
-        struct fo_flush_entry_check checks[2]  = {{/* entry_num          = */ 0,
+        int          test_num                 = 13;
+        unsigned int flush_flags              = H5C__NO_FLAGS_SET;
+        int          spec_size                = 1;
+        int          check_size               = 2;
+        unsigned     init_expected_index_len  = 1;
+        size_t       init_expected_index_size = 1 * PICO_ENTRY_SIZE;
+        unsigned     expected_index_len       = 3;
+        size_t       expected_index_size      = 3 * PICO_ENTRY_SIZE;
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ 0,
+            /* entry_index        = */ 1,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 2,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__DIRTY, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, 0, 2, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ PICO_ENTRY_TYPE,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ PICO_ENTRY_SIZE,
                                                   /* in_cache           = */ TRUE,
                                                   /* at_main_addr       = */ TRUE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ FALSE},
-                                                 {/* entry_num          = */ 1,
+                                                  /* expected_destroyed = */ FALSE};
+        checks[1] = (struct fo_flush_entry_check){/* entry_num          = */ 1,
                                                   /* entry_type         = */ PICO_ENTRY_TYPE,
                                                   /* entry_index        = */ 2,
                                                   /* expected_size      = */ PICO_ENTRY_SIZE,
                                                   /* in_cache           = */ TRUE,
                                                   /* at_main_addr       = */ TRUE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ FALSE}};
+                                                  /* expected_destroyed = */ FALSE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -5581,65 +5661,70 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
          * At present, I am assured that this case will never occur, but
          * lets make sure we can handle it regardless.
          */
-        int                             test_num                 = 14;
-        unsigned int                    flush_flags              = H5C__FLUSH_INVALIDATE_FLAG;
-        int                             spec_size                = 1;
-        unsigned                        init_expected_index_len  = 1;
-        size_t                          init_expected_index_size = 1 * PICO_ENTRY_SIZE;
-        unsigned                        expected_index_len       = 0;
-        size_t                          expected_index_size      = (size_t)0;
-        struct fo_flush_cache_test_spec spec[1]                  = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ 0,
-             /* entry_index        = */ 1,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 2,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__DIRTY, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, 0, 2, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE}};
-        int                         check_size = 2;
-        struct fo_flush_entry_check checks[2]  = {{/* entry_num          = */ 0,
+        int          test_num                 = 14;
+        unsigned int flush_flags              = H5C__FLUSH_INVALIDATE_FLAG;
+        int          spec_size                = 1;
+        int          check_size               = 2;
+        unsigned     init_expected_index_len  = 1;
+        size_t       init_expected_index_size = 1 * PICO_ENTRY_SIZE;
+        unsigned     expected_index_len       = 0;
+        size_t       expected_index_size      = (size_t)0;
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ 0,
+            /* entry_index        = */ 1,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 2,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__DIRTY, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, 0, 2, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ PICO_ENTRY_TYPE,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ PICO_ENTRY_SIZE,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ TRUE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ TRUE},
-                                                 {/* entry_num          = */ 1,
+                                                  /* expected_destroyed = */ TRUE};
+        checks[1] = (struct fo_flush_entry_check){/* entry_num          = */ 1,
                                                   /* entry_type         = */ PICO_ENTRY_TYPE,
                                                   /* entry_index        = */ 2,
                                                   /* expected_size      = */ PICO_ENTRY_SIZE,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ TRUE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ TRUE}};
+                                                  /* expected_destroyed = */ TRUE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -5658,63 +5743,68 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
         int          test_num                 = 15;
         unsigned int flush_flags              = H5C__NO_FLAGS_SET;
         int          spec_size                = 1;
+        int          check_size               = 2;
         unsigned     init_expected_index_len  = 1;
         size_t       init_expected_index_size = 1 * VARIABLE_ENTRY_SIZE;
         unsigned     expected_index_len       = 3;
         size_t       expected_index_size =
             VARIABLE_ENTRY_SIZE + (VARIABLE_ENTRY_SIZE / 4) + (VARIABLE_ENTRY_SIZE / 2);
-        struct fo_flush_cache_test_spec spec[1] = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 1,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 4,
-             /* flush_ops          = */
-             /*    op_code:        type:            idx:    flag:    size:    order_ptr: */
-             {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 2, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE}};
-        int                         check_size = 2;
-        struct fo_flush_entry_check checks[2]  = {{/* entry_num          = */ 0,
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 1,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 4,
+            /* flush_ops          = */
+            /*    op_code:        type:            idx:    flag:    size:    order_ptr: */
+            {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 2, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE / 4,
                                                   /* in_cache           = */ TRUE,
                                                   /* at_main_addr       = */ TRUE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ FALSE},
-                                                 {/* entry_num          = */ 1,
+                                                  /* expected_destroyed = */ FALSE};
+        checks[1] = (struct fo_flush_entry_check){/* entry_num          = */ 1,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 2,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE / 2,
                                                   /* in_cache           = */ TRUE,
                                                   /* at_main_addr       = */ TRUE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ FALSE}};
+                                                  /* expected_destroyed = */ FALSE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -5732,65 +5822,70 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
          * At present, I am assured that this case will never occur, but
          * lets make sure we can handle it regardless.
          */
-        int                             test_num                 = 16;
-        unsigned int                    flush_flags              = H5C__FLUSH_INVALIDATE_FLAG;
-        int                             spec_size                = 1;
-        unsigned                        init_expected_index_len  = 1;
-        size_t                          init_expected_index_size = 1 * VARIABLE_ENTRY_SIZE;
-        unsigned                        expected_index_len       = 0;
-        size_t                          expected_index_size      = (size_t)0;
-        struct fo_flush_cache_test_spec spec[1]                  = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 1,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 4,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 2, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE}};
-        int                         check_size = 2;
-        struct fo_flush_entry_check checks[2]  = {{/* entry_num          = */ 0,
+        int          test_num                 = 16;
+        unsigned int flush_flags              = H5C__FLUSH_INVALIDATE_FLAG;
+        int          spec_size                = 1;
+        int          check_size               = 2;
+        unsigned     init_expected_index_len  = 1;
+        size_t       init_expected_index_size = 1 * VARIABLE_ENTRY_SIZE;
+        unsigned     expected_index_len       = 0;
+        size_t       expected_index_size      = (size_t)0;
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 1,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 4,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 2, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE / 4,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ TRUE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ TRUE},
-                                                 {/* entry_num          = */ 1,
+                                                  /* expected_destroyed = */ TRUE};
+        checks[1] = (struct fo_flush_entry_check){/* entry_num          = */ 1,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 2,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE / 2,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ TRUE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ TRUE}};
+                                                  /* expected_destroyed = */ TRUE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -5809,63 +5904,68 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
         int          test_num                 = 17; /* and 18 */
         unsigned int flush_flags              = H5C__NO_FLAGS_SET;
         int          spec_size                = 1;
+        int          check_size               = 2;
         unsigned     init_expected_index_len  = 1;
         size_t       init_expected_index_size = 1 * VARIABLE_ENTRY_SIZE;
         unsigned     expected_index_len       = 3;
         size_t       expected_index_size =
             VARIABLE_ENTRY_SIZE + (VARIABLE_ENTRY_SIZE / 4) + (VARIABLE_ENTRY_SIZE / 2);
-        struct fo_flush_cache_test_spec spec[1] = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 1,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 6,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 2, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE}};
-        int                         check_size = 2;
-        struct fo_flush_entry_check checks[2]  = {{/* entry_num          = */ 0,
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 1,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 6,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 2, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE / 4,
                                                   /* in_cache           = */ TRUE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ FALSE},
-                                                 {/* entry_num          = */ 1,
+                                                  /* expected_destroyed = */ FALSE};
+        checks[1] = (struct fo_flush_entry_check){/* entry_num          = */ 1,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 2,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE / 2,
                                                   /* in_cache           = */ TRUE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ FALSE}};
+                                                  /* expected_destroyed = */ FALSE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -5908,63 +6008,68 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
         int          test_num                 = 19; /* and 20 */
         unsigned int flush_flags              = H5C__NO_FLAGS_SET;
         int          spec_size                = 1;
+        int          check_size               = 2;
         unsigned     init_expected_index_len  = 1;
         size_t       init_expected_index_size = 1 * VARIABLE_ENTRY_SIZE;
         unsigned     expected_index_len       = 3;
         size_t       expected_index_size =
             VARIABLE_ENTRY_SIZE + (VARIABLE_ENTRY_SIZE / 4) + (VARIABLE_ENTRY_SIZE / 2);
-        struct fo_flush_cache_test_spec spec[1] = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 1,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 6,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 2, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE}};
-        int                         check_size = 2;
-        struct fo_flush_entry_check checks[2]  = {{/* entry_num          = */ 0,
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 1,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 6,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 2, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE / 4,
                                                   /* in_cache           = */ TRUE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ FALSE},
-                                                 {/* entry_num          = */ 1,
+                                                  /* expected_destroyed = */ FALSE};
+        checks[1] = (struct fo_flush_entry_check){/* entry_num          = */ 1,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 2,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE / 2,
                                                   /* in_cache           = */ TRUE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ FALSE}};
+                                                  /* expected_destroyed = */ FALSE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -6018,165 +6123,173 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
         int          test_num                 = 21;
         unsigned int flush_flags              = H5C__FLUSH_MARKED_ENTRIES_FLAG;
         int          spec_size                = 4;
+        int          check_size               = 4;
         unsigned     init_expected_index_len  = 4;
         size_t       init_expected_index_size = (2 * VARIABLE_ENTRY_SIZE) + (2 * PICO_ENTRY_SIZE);
         unsigned     expected_index_len       = 6;
         size_t       expected_index_size      = (2 * VARIABLE_ENTRY_SIZE) + (VARIABLE_ENTRY_SIZE / 4) +
                                      (VARIABLE_ENTRY_SIZE / 2) + (2 * PICO_ENTRY_SIZE);
-        struct fo_flush_cache_test_spec spec[4] = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 1,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG | H5C__SET_FLUSH_MARKER_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 6,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 2, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 1,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 11,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 6,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 10, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 10, FALSE, 0, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 10, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 12, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 12, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 12, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ FALSE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 2,
-             /* entry_type         = */ PICO_ENTRY_TYPE,
-             /* entry_index        = */ 0,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG | H5C__SET_FLUSH_MARKER_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 0,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 3,
-             /* entry_type         = */ PICO_ENTRY_TYPE,
-             /* entry_index        = */ 1,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 0,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ FALSE,
-             /* expected_destroyed = */ FALSE}};
-        int                         check_size = 4;
-        struct fo_flush_entry_check checks[4]  = {{/* entry_num          = */ 0,
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 1,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG | H5C__SET_FLUSH_MARKER_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 6,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 2, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[1] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 1,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 11,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 6,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 10, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 10, FALSE, 0, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 10, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 12, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 12, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 12, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ FALSE,
+            /* expected_destroyed = */ FALSE};
+        spec[2] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 2,
+            /* entry_type         = */ PICO_ENTRY_TYPE,
+            /* entry_index        = */ 0,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG | H5C__SET_FLUSH_MARKER_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 0,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[3] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 3,
+            /* entry_type         = */ PICO_ENTRY_TYPE,
+            /* entry_index        = */ 1,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 0,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ FALSE,
+            /* expected_destroyed = */ FALSE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE / 4,
                                                   /* in_cache           = */ TRUE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ TRUE,
+                                                  /* is_dirty           = */ TRUE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ FALSE,
-                                                  /* expected_destroyed = */ FALSE},
-                                                 {/* entry_num          = */ 1,
+                                                  /* expected_destroyed = */ FALSE};
+        checks[1] = (struct fo_flush_entry_check){/* entry_num          = */ 1,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 2,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE / 2,
                                                   /* in_cache           = */ TRUE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ TRUE,
+                                                  /* is_dirty           = */ TRUE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ FALSE,
-                                                  /* expected_destroyed = */ FALSE},
-                                                 {/* entry_num          = */ 2,
+                                                  /* expected_destroyed = */ FALSE};
+        checks[2] = (struct fo_flush_entry_check){/* entry_num          = */ 2,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 10,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ TRUE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ FALSE,
                                                   /* expected_serialized = */ FALSE,
-                                                  /* expected_destroyed = */ FALSE},
-                                                 {/* entry_num          = */ 3,
+                                                  /* expected_destroyed = */ FALSE};
+        checks[3] = (struct fo_flush_entry_check){/* entry_num          = */ 3,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 12,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ TRUE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ FALSE,
                                                   /* expected_serialized = */ FALSE,
-                                                  /* expected_destroyed = */ FALSE}};
+                                                  /* expected_destroyed = */ FALSE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -6198,217 +6311,227 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
         int          test_num                 = 22;
         unsigned int flush_flags              = H5C__NO_FLAGS_SET;
         int          spec_size                = 6;
+        int          check_size               = 4;
         unsigned     init_expected_index_len  = 6;
         size_t       init_expected_index_size = (2 * VARIABLE_ENTRY_SIZE) + (4 * PICO_ENTRY_SIZE);
         unsigned     expected_index_len       = 10;
         size_t       expected_index_size      = (2 * VARIABLE_ENTRY_SIZE) + (2 * (VARIABLE_ENTRY_SIZE / 4)) +
                                      (2 * (VARIABLE_ENTRY_SIZE / 2)) + (4 * PICO_ENTRY_SIZE);
-        struct fo_flush_cache_test_spec spec[6] = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 1,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 6,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 2, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 1,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 11,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 6,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 10, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 10, FALSE, 0, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 10, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 12, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 12, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 12, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 2,
-             /* entry_type         = */ PICO_ENTRY_TYPE,
-             /* entry_index        = */ 0,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 0,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 3,
-             /* entry_type         = */ PICO_ENTRY_TYPE,
-             /* entry_index        = */ 1,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 0,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ FALSE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 4,
-             /* entry_type         = */ PICO_ENTRY_TYPE,
-             /* entry_index        = */ 10,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 1,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__DIRTY, PICO_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 5,
-             /* entry_type         = */ PICO_ENTRY_TYPE,
-             /* entry_index        = */ 20,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 1,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__DIRTY, PICO_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE}};
-        int                         check_size = 4;
-        struct fo_flush_entry_check checks[4]  = {{/* entry_num          = */ 0,
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 1,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 6,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 2, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[1] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 1,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 11,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 6,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 10, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 10, FALSE, 0, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 10, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 12, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 12, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 12, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[2] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 2,
+            /* entry_type         = */ PICO_ENTRY_TYPE,
+            /* entry_index        = */ 0,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 0,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[3] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 3,
+            /* entry_type         = */ PICO_ENTRY_TYPE,
+            /* entry_index        = */ 1,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 0,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ FALSE,
+            /* expected_destroyed = */ FALSE};
+        spec[4] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 4,
+            /* entry_type         = */ PICO_ENTRY_TYPE,
+            /* entry_index        = */ 10,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 1,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__DIRTY, PICO_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[5] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 5,
+            /* entry_type         = */ PICO_ENTRY_TYPE,
+            /* entry_index        = */ 20,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 1,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__DIRTY, PICO_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE / 4,
                                                   /* in_cache           = */ TRUE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ FALSE},
-                                                 {/* entry_num          = */ 1,
+                                                  /* expected_destroyed = */ FALSE};
+        checks[1] = (struct fo_flush_entry_check){/* entry_num          = */ 1,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 2,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE / 2,
                                                   /* in_cache           = */ TRUE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ FALSE},
-                                                 {/* entry_num          = */ 2,
+                                                  /* expected_destroyed = */ FALSE};
+        checks[2] = (struct fo_flush_entry_check){/* entry_num          = */ 2,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 10,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE / 4,
                                                   /* in_cache           = */ TRUE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ FALSE},
-                                                 {/* entry_num          = */ 3,
+                                                  /* expected_destroyed = */ FALSE};
+        checks[3] = (struct fo_flush_entry_check){/* entry_num          = */ 3,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 12,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE / 2,
                                                   /* in_cache           = */ TRUE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ FALSE}};
+                                                  /* expected_destroyed = */ FALSE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -6429,219 +6552,229 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
          * Also load entries that have flush ops on entries that are in
          * cache.
          */
-        int          test_num                   = 23;
-        unsigned int flush_flags                = H5C__FLUSH_INVALIDATE_FLAG;
-        int          spec_size                  = 6;
-        unsigned     init_expected_index_len    = 6;
-        size_t       init_expected_index_size   = (2 * VARIABLE_ENTRY_SIZE) + (4 * PICO_ENTRY_SIZE);
-        unsigned     expected_index_len         = 0;
-        size_t       expected_index_size        = 0;
-        struct fo_flush_cache_test_spec spec[6] = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 1,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 6,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 2, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 1,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 11,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 6,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 10, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 10, FALSE, 0, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 10, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 12, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 12, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 12, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 2,
-             /* entry_type         = */ PICO_ENTRY_TYPE,
-             /* entry_index        = */ 0,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 0,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 3,
-             /* entry_type         = */ PICO_ENTRY_TYPE,
-             /* entry_index        = */ 1,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 0,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ FALSE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 4,
-             /* entry_type         = */ PICO_ENTRY_TYPE,
-             /* entry_index        = */ 10,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 1,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__DIRTY, PICO_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 5,
-             /* entry_type         = */ PICO_ENTRY_TYPE,
-             /* entry_index        = */ 20,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 1,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__DIRTY, PICO_ENTRY_TYPE, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE}};
-        int                         check_size = 4;
-        struct fo_flush_entry_check checks[4]  = {{/* entry_num          = */ 0,
+        int          test_num                 = 23;
+        unsigned int flush_flags              = H5C__FLUSH_INVALIDATE_FLAG;
+        int          spec_size                = 6;
+        int          check_size               = 4;
+        unsigned     init_expected_index_len  = 6;
+        size_t       init_expected_index_size = (2 * VARIABLE_ENTRY_SIZE) + (4 * PICO_ENTRY_SIZE);
+        unsigned     expected_index_len       = 0;
+        size_t       expected_index_size      = 0;
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 1,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 6,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 0, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 2, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 2, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+        spec[1] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 1,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 11,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 6,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 10, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 10, FALSE, 0, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 10, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 12, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 12, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 12, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+        spec[2] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 2,
+            /* entry_type         = */ PICO_ENTRY_TYPE,
+            /* entry_index        = */ 0,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 0,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+        spec[3] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 3,
+            /* entry_type         = */ PICO_ENTRY_TYPE,
+            /* entry_index        = */ 1,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 0,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ FALSE,
+            /* expected_destroyed = */ TRUE};
+        spec[4] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 4,
+            /* entry_type         = */ PICO_ENTRY_TYPE,
+            /* entry_index        = */ 10,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 1,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__DIRTY, PICO_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+        spec[5] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 5,
+            /* entry_type         = */ PICO_ENTRY_TYPE,
+            /* entry_index        = */ 20,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 1,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__DIRTY, PICO_ENTRY_TYPE, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE / 4,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ TRUE},
-                                                 {/* entry_num          = */ 1,
+                                                  /* expected_destroyed = */ TRUE};
+        checks[1] = (struct fo_flush_entry_check){/* entry_num          = */ 1,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 2,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE / 2,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ TRUE},
-                                                 {/* entry_num          = */ 2,
+                                                  /* expected_destroyed = */ TRUE};
+        checks[2] = (struct fo_flush_entry_check){/* entry_num          = */ 2,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 10,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE / 4,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ TRUE},
-                                                 {/* entry_num          = */ 3,
+                                                  /* expected_destroyed = */ TRUE};
+        checks[3] = (struct fo_flush_entry_check){/* entry_num          = */ 3,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 12,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE / 2,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ TRUE}};
+                                                  /* expected_destroyed = */ TRUE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -6658,105 +6791,112 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
         /* Pico entries 50 and 150 pin pico entry 100, and also dirty
          * pico entry 100 on flush.
          */
-        int                             test_num                 = 24;
-        unsigned int                    flush_flags              = H5C__NO_FLAGS_SET;
-        int                             spec_size                = 3;
-        unsigned                        init_expected_index_len  = 3;
-        size_t                          init_expected_index_size = 3 * PICO_ENTRY_SIZE;
-        unsigned                        expected_index_len       = 3;
-        size_t                          expected_index_size      = 3 * PICO_ENTRY_SIZE;
-        struct fo_flush_cache_test_spec spec[3]                  = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ PICO_ENTRY_TYPE,
-             /* entry_index        = */ 100,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 0,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 1,
-             /* entry_type         = */ PICO_ENTRY_TYPE,
-             /* entry_index        = */ 50,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 1,
-             /* pin_type           = */ {PICO_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {100, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 1,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__DIRTY, PICO_ENTRY_TYPE, 100, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 2,
-             /* entry_type         = */ PICO_ENTRY_TYPE,
-             /* entry_index        = */ 150,
-             /* insert_flag        = */ TRUE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 1,
-             /* pin_type           = */ {PICO_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {100, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 1,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__DIRTY, PICO_ENTRY_TYPE, 100, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ FALSE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE}};
-        int                         check_size = 0;
-        struct fo_flush_entry_check checks[1]  = {{/* entry_num          = */ 0,
+        int          test_num                 = 24;
+        unsigned int flush_flags              = H5C__NO_FLAGS_SET;
+        int          spec_size                = 3;
+        int          check_size               = 0;
+        unsigned     init_expected_index_len  = 3;
+        size_t       init_expected_index_size = 3 * PICO_ENTRY_SIZE;
+        unsigned     expected_index_len       = 3;
+        size_t       expected_index_size      = 3 * PICO_ENTRY_SIZE;
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ PICO_ENTRY_TYPE,
+            /* entry_index        = */ 100,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 0,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[1] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 1,
+            /* entry_type         = */ PICO_ENTRY_TYPE,
+            /* entry_index        = */ 50,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 1,
+            /* pin_type           = */ {PICO_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {100, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 1,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__DIRTY, PICO_ENTRY_TYPE, 100, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[2] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 2,
+            /* entry_type         = */ PICO_ENTRY_TYPE,
+            /* entry_index        = */ 150,
+            /* insert_flag        = */ TRUE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 1,
+            /* pin_type           = */ {PICO_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {100, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 1,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__DIRTY, PICO_ENTRY_TYPE, 100, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ FALSE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ 0,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ (size_t)0,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ FALSE,
                                                   /* expected_serialized = */ FALSE,
-                                                  /* expected_destroyed = */ FALSE}};
+                                                  /* expected_destroyed = */ FALSE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -6770,105 +6910,112 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
          * Pico entries 50 and 150 pin pico entry 100, and also dirty
          * pico entry 100 on flush.
          */
-        int                             test_num                 = 25;
-        unsigned int                    flush_flags              = H5C__FLUSH_INVALIDATE_FLAG;
-        int                             spec_size                = 3;
-        unsigned                        init_expected_index_len  = 3;
-        size_t                          init_expected_index_size = 3 * PICO_ENTRY_SIZE;
-        unsigned                        expected_index_len       = 0;
-        size_t                          expected_index_size      = (size_t)0;
-        struct fo_flush_cache_test_spec spec[3]                  = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ PICO_ENTRY_TYPE,
-             /* entry_index        = */ 100,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 0,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 1,
-             /* entry_type         = */ PICO_ENTRY_TYPE,
-             /* entry_index        = */ 50,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 1,
-             /* pin_type           = */ {PICO_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {100, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 1,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__DIRTY, PICO_ENTRY_TYPE, 100, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 2,
-             /* entry_type         = */ PICO_ENTRY_TYPE,
-             /* entry_index        = */ 150,
-             /* insert_flag        = */ TRUE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 1,
-             /* pin_type           = */ {PICO_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {100, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 1,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__DIRTY, PICO_ENTRY_TYPE, 100, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ FALSE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE}};
-        int                         check_size = 0;
-        struct fo_flush_entry_check checks[1]  = {{/* entry_num          = */ 0,
+        int          test_num                 = 25;
+        unsigned int flush_flags              = H5C__FLUSH_INVALIDATE_FLAG;
+        int          spec_size                = 3;
+        int          check_size               = 0;
+        unsigned     init_expected_index_len  = 3;
+        size_t       init_expected_index_size = 3 * PICO_ENTRY_SIZE;
+        unsigned     expected_index_len       = 0;
+        size_t       expected_index_size      = (size_t)0;
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ PICO_ENTRY_TYPE,
+            /* entry_index        = */ 100,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 0,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+        spec[1] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 1,
+            /* entry_type         = */ PICO_ENTRY_TYPE,
+            /* entry_index        = */ 50,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 1,
+            /* pin_type           = */ {PICO_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {100, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 1,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__DIRTY, PICO_ENTRY_TYPE, 100, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+        spec[2] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 2,
+            /* entry_type         = */ PICO_ENTRY_TYPE,
+            /* entry_index        = */ 150,
+            /* insert_flag        = */ TRUE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 1,
+            /* pin_type           = */ {PICO_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {100, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 1,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__DIRTY, PICO_ENTRY_TYPE, 100, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ FALSE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ 0,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ (size_t)0,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ FALSE,
                                                   /* expected_serialized = */ FALSE,
-                                                  /* expected_destroyed = */ FALSE}};
+                                                  /* expected_destroyed = */ FALSE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -6952,313 +7099,325 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
          *         dirties    (VET, 650)
          *         dirties (VET, 750)
          */
-        int                             test_num                 = 26;
-        unsigned int                    flush_flags              = H5C__NO_FLAGS_SET;
-        int                             spec_size                = 10;
-        unsigned                        init_expected_index_len  = 10;
-        size_t                          init_expected_index_size = 10 * VARIABLE_ENTRY_SIZE;
-        unsigned                        expected_index_len       = 13;
-        size_t                          expected_index_size      = 9 * VARIABLE_ENTRY_SIZE;
-        struct fo_flush_cache_test_spec spec[10]                 = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 200,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 0,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 1,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 2100,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 0,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 2,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 2300,
-             /* insert_flag        = */ TRUE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 0,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ FALSE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 3,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 1000,
-             /* insert_flag        = */ TRUE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 4,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 100, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 200, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 300, FALSE, 0, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 300, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ FALSE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 4,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 2000,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 3,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2100, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 2200, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 2300, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 5,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 350,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 2,
-             /* pin_type           = */ {VARIABLE_ENTRY_TYPE, VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {1000, 2000, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 3,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 1000, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2000, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 350, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 6,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 450,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 2,
-             /* pin_type           = */ {VARIABLE_ENTRY_TYPE, VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {1000, 2000, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 3,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 1000, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2000, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 450, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 7,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 650,
-             /* insert_flag        = */ TRUE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 2,
-             /* pin_type           = */ {VARIABLE_ENTRY_TYPE, VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {1000, 2000, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 3,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 1000, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2000, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 650, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ FALSE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 8,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 750,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 2,
-             /* pin_type           = */ {VARIABLE_ENTRY_TYPE, VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {1000, 2000, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 3,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 1000, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2000, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 750, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 9,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 500,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 4,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 350, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 450, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 650, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 750, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE}};
-        int                         check_size = 3;
-        struct fo_flush_entry_check checks[3]  = {{/* entry_num          = */ 0,
+        int          test_num                 = 26;
+        unsigned int flush_flags              = H5C__NO_FLAGS_SET;
+        int          spec_size                = 10;
+        int          check_size               = 3;
+        unsigned     init_expected_index_len  = 10;
+        size_t       init_expected_index_size = 10 * VARIABLE_ENTRY_SIZE;
+        unsigned     expected_index_len       = 13;
+        size_t       expected_index_size      = 9 * VARIABLE_ENTRY_SIZE;
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 200,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 0,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[1] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 1,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 2100,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 0,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[2] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 2,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 2300,
+            /* insert_flag        = */ TRUE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 0,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ FALSE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[3] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 3,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 1000,
+            /* insert_flag        = */ TRUE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 4,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 100, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 200, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 300, FALSE, 0, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 300, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ FALSE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[4] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 4,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 2000,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 3,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2100, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 2200, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 2300, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[5] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 5,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 350,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 2,
+            /* pin_type           = */ {VARIABLE_ENTRY_TYPE, VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {1000, 2000, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 3,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 1000, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2000, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 350, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[6] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 6,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 450,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 2,
+            /* pin_type           = */ {VARIABLE_ENTRY_TYPE, VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {1000, 2000, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 3,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 1000, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2000, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 450, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[7] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 7,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 650,
+            /* insert_flag        = */ TRUE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 2,
+            /* pin_type           = */ {VARIABLE_ENTRY_TYPE, VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {1000, 2000, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 3,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 1000, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2000, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 650, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ FALSE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[8] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 8,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 750,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 2,
+            /* pin_type           = */ {VARIABLE_ENTRY_TYPE, VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {1000, 2000, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 3,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 1000, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2000, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 750, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[9] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 9,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 500,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 4,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 350, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 450, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 650, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 750, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 100,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE,
                                                   /* in_cache           = */ TRUE,
                                                   /* at_main_addr       = */ TRUE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ FALSE},
-                                                 {/* entry_num          = */ 1,
+                                                  /* expected_destroyed = */ FALSE};
+        checks[1] = (struct fo_flush_entry_check){/* entry_num          = */ 1,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 300,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE,
                                                   /* in_cache           = */ TRUE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ FALSE},
-                                                 {/* entry_num          = */ 2,
+                                                  /* expected_destroyed = */ FALSE};
+        checks[2] = (struct fo_flush_entry_check){/* entry_num          = */ 2,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 2200,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE / 2,
                                                   /* in_cache           = */ TRUE,
                                                   /* at_main_addr       = */ TRUE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ FALSE}
-
-        };
+                                                  /* expected_destroyed = */ FALSE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -7348,313 +7507,325 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
          *         dirties    (VET, 650)
          *         dirties (VET, 750)
          */
-        int                             test_num                 = 27;
-        unsigned int                    flush_flags              = H5C__FLUSH_INVALIDATE_FLAG;
-        int                             spec_size                = 10;
-        unsigned                        init_expected_index_len  = 10;
-        size_t                          init_expected_index_size = 10 * VARIABLE_ENTRY_SIZE;
-        unsigned                        expected_index_len       = 0;
-        size_t                          expected_index_size      = (size_t)0;
-        struct fo_flush_cache_test_spec spec[10]                 = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 200,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 0,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 1,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 2100,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 0,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 2,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 2300,
-             /* insert_flag        = */ TRUE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 0,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ FALSE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 3,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 1000,
-             /* insert_flag        = */ TRUE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 4,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 100, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 200, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 300, FALSE, 0, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 300, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ FALSE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 4,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 2000,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 3,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2100, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 2200, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 2300, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 5,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 350,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 2,
-             /* pin_type           = */ {VARIABLE_ENTRY_TYPE, VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {1000, 2000, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 3,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 1000, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2000, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 350, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 6,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 450,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 2,
-             /* pin_type           = */ {VARIABLE_ENTRY_TYPE, VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {1000, 2000, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 3,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 1000, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2000, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 450, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 7,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 650,
-             /* insert_flag        = */ TRUE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 2,
-             /* pin_type           = */ {VARIABLE_ENTRY_TYPE, VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {1000, 2000, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 3,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 1000, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2000, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 650, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ FALSE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 8,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 750,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 2,
-             /* pin_type           = */ {VARIABLE_ENTRY_TYPE, VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {1000, 2000, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 3,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 1000, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2000, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 750, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 9,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 500,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 4,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 350, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 450, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 650, FALSE, 0, NULL},
-              {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 750, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE}};
-        int                         check_size = 3;
-        struct fo_flush_entry_check checks[3]  = {{/* entry_num          = */ 0,
+        int          test_num                 = 27;
+        unsigned int flush_flags              = H5C__FLUSH_INVALIDATE_FLAG;
+        int          spec_size                = 10;
+        int          check_size               = 3;
+        unsigned     init_expected_index_len  = 10;
+        size_t       init_expected_index_size = 10 * VARIABLE_ENTRY_SIZE;
+        unsigned     expected_index_len       = 0;
+        size_t       expected_index_size      = (size_t)0;
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 200,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 0,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+        spec[1] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 1,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 2100,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 0,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+        spec[2] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 2,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 2300,
+            /* insert_flag        = */ TRUE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 0,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ FALSE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+        spec[3] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 3,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 1000,
+            /* insert_flag        = */ TRUE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 4,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 100, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 200, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 300, FALSE, 0, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 300, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ FALSE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+        spec[4] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 4,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 2000,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 3,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2100, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 2200, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 2300, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+        spec[5] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 5,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 350,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 2,
+            /* pin_type           = */ {VARIABLE_ENTRY_TYPE, VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {1000, 2000, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 3,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 1000, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2000, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 350, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+        spec[6] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 6,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 450,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 2,
+            /* pin_type           = */ {VARIABLE_ENTRY_TYPE, VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {1000, 2000, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 3,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 1000, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2000, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 450, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+        spec[7] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 7,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 650,
+            /* insert_flag        = */ TRUE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 2,
+            /* pin_type           = */ {VARIABLE_ENTRY_TYPE, VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {1000, 2000, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 3,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 1000, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2000, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 650, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ FALSE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+        spec[8] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 8,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 750,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 2,
+            /* pin_type           = */ {VARIABLE_ENTRY_TYPE, VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {1000, 2000, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 3,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 1000, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 2000, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 750, FALSE, VARIABLE_ENTRY_SIZE / 4, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+        spec[9] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 9,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 500,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 4,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 350, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 450, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 650, FALSE, 0, NULL},
+             {FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 750, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 100,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ TRUE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ TRUE},
-                                                 {/* entry_num          = */ 1,
+                                                  /* expected_destroyed = */ TRUE};
+        checks[1] = (struct fo_flush_entry_check){/* entry_num          = */ 1,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 300,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ TRUE},
-                                                 {/* entry_num          = */ 2,
+                                                  /* expected_destroyed = */ TRUE};
+        checks[2] = (struct fo_flush_entry_check){/* entry_num          = */ 2,
                                                   /* entry_type         = */ VARIABLE_ENTRY_TYPE,
                                                   /* entry_index        = */ 2200,
                                                   /* expected_size      = */ VARIABLE_ENTRY_SIZE / 2,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ TRUE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ TRUE,
                                                   /* expected_serialized = */ TRUE,
-                                                  /* expected_destroyed = */ TRUE}
-
-        };
+                                                  /* expected_destroyed = */ TRUE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -7669,157 +7840,166 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
          * and resizes itself, and dirties an entry which it has
          * pinned.
          */
-        int                             test_num                 = 28;
-        unsigned int                    flush_flags              = H5C__NO_FLAGS_SET;
-        int                             spec_size                = 5;
-        unsigned                        init_expected_index_len  = 5;
-        size_t                          init_expected_index_size = 3 * VARIABLE_ENTRY_SIZE;
-        unsigned                        expected_index_len       = 5;
-        size_t                          expected_index_size      = 4 * VARIABLE_ENTRY_SIZE;
-        struct fo_flush_cache_test_spec spec[5]                  = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 100,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 0,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 1,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 200,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ TRUE,
-             /* new_size           = */ VARIABLE_ENTRY_SIZE / 2,
-             /* num_pins           = */ 1,
-             /* pin_type           = */ {VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {100, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 3,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 100, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 200, FALSE, VARIABLE_ENTRY_SIZE, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 200, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 2,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 300,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ TRUE,
-             /* new_size           = */ VARIABLE_ENTRY_SIZE / 4,
-             /* num_pins           = */ 1,
-             /* pin_type           = */ {VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {400, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 3,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 400, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 300, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 300, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 3,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 400,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 0,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE},
-            {/* entry_num          = */ 4,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 500,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ TRUE,
-             /* new_size           = */ VARIABLE_ENTRY_SIZE / 4,
-             /* num_pins           = */ 1,
-             /* pin_type           = */ {VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {100, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 3,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 100, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 500, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 500, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ FALSE}};
-        int                         check_size = 0;
-        struct fo_flush_entry_check checks[1]  = {{/* entry_num          = */ 0,
+        int          test_num                 = 28;
+        unsigned int flush_flags              = H5C__NO_FLAGS_SET;
+        int          spec_size                = 5;
+        int          check_size               = 0;
+        unsigned     init_expected_index_len  = 5;
+        size_t       init_expected_index_size = 3 * VARIABLE_ENTRY_SIZE;
+        unsigned     expected_index_len       = 5;
+        size_t       expected_index_size      = 4 * VARIABLE_ENTRY_SIZE;
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 100,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 0,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[1] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 1,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 200,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ TRUE,
+            /* new_size           = */ VARIABLE_ENTRY_SIZE / 2,
+            /* num_pins           = */ 1,
+            /* pin_type           = */ {VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {100, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 3,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 100, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 200, FALSE, VARIABLE_ENTRY_SIZE, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 200, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[2] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 2,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 300,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ TRUE,
+            /* new_size           = */ VARIABLE_ENTRY_SIZE / 4,
+            /* num_pins           = */ 1,
+            /* pin_type           = */ {VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {400, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 3,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 400, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 300, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 300, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[3] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 3,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 400,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 0,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+        spec[4] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 4,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 500,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ TRUE,
+            /* new_size           = */ VARIABLE_ENTRY_SIZE / 4,
+            /* num_pins           = */ 1,
+            /* pin_type           = */ {VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {100, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 3,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 100, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 500, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 500, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ FALSE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ 0,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ 0,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ FALSE,
                                                   /* expected_serialized = */ FALSE,
-                                                  /* expected_destroyed = */ FALSE}};
+                                                  /* expected_destroyed = */ FALSE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -7836,157 +8016,166 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
          * and resizes itself, and dirties an entry which it has
          * pinned.
          */
-        int                             test_num                 = 29;
-        unsigned int                    flush_flags              = H5C__FLUSH_INVALIDATE_FLAG;
-        int                             spec_size                = 5;
-        unsigned                        init_expected_index_len  = 5;
-        size_t                          init_expected_index_size = 3 * VARIABLE_ENTRY_SIZE;
-        unsigned                        expected_index_len       = 0;
-        size_t                          expected_index_size      = 0;
-        struct fo_flush_cache_test_spec spec[5]                  = {
-            {/* entry_num          = */ 0,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 100,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 0,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 1,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 200,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ TRUE,
-             /* new_size           = */ VARIABLE_ENTRY_SIZE / 2,
-             /* num_pins           = */ 1,
-             /* pin_type           = */ {VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {100, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 3,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 100, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 200, FALSE, VARIABLE_ENTRY_SIZE, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 200, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 2,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 300,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ TRUE,
-             /* new_size           = */ VARIABLE_ENTRY_SIZE / 4,
-             /* num_pins           = */ 1,
-             /* pin_type           = */ {VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {400, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 3,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 400, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 300, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 300, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 3,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 400,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__NO_FLAGS_SET,
-             /* resize_flag        = */ FALSE,
-             /* new_size           = */ 0,
-             /* num_pins           = */ 0,
-             /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 0,
-             /* flush_ops          = */
-             /*    op_code:        type:    idx:    flag:    size: order_ptr: */
-             {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE},
-            {/* entry_num          = */ 4,
-             /* entry_type         = */ VARIABLE_ENTRY_TYPE,
-             /* entry_index        = */ 500,
-             /* insert_flag        = */ FALSE,
-             /* flags          = */ H5C__DIRTIED_FLAG,
-             /* resize_flag        = */ TRUE,
-             /* new_size           = */ VARIABLE_ENTRY_SIZE / 4,
-             /* num_pins           = */ 1,
-             /* pin_type           = */ {VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0},
-             /* pin_idx            = */ {100, 0, 0, 0, 0, 0, 0, 0},
-             /* num_flush_ops      = */ 3,
-             /* flush_ops          = */
-             /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
-             {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 100, FALSE, 0, NULL},
-              {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 500, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
-              {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 500, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
-              {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
-             /* expected_deserialized = */ TRUE,
-             /* expected_serialized = */ TRUE,
-             /* expected_destroyed = */ TRUE}};
-        int                         check_size = 0;
-        struct fo_flush_entry_check checks[1]  = {{/* entry_num          = */ 0,
+        int          test_num                 = 29;
+        unsigned int flush_flags              = H5C__FLUSH_INVALIDATE_FLAG;
+        int          spec_size                = 5;
+        int          check_size               = 0;
+        unsigned     init_expected_index_len  = 5;
+        size_t       init_expected_index_size = 3 * VARIABLE_ENTRY_SIZE;
+        unsigned     expected_index_len       = 0;
+        size_t       expected_index_size      = 0;
+
+        HDassert(spec_size <= max_num_spec);
+        HDassert(check_size <= max_num_check);
+
+        spec[0] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 0,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 100,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 0,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+        spec[1] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 1,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 200,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ TRUE,
+            /* new_size           = */ VARIABLE_ENTRY_SIZE / 2,
+            /* num_pins           = */ 1,
+            /* pin_type           = */ {VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {100, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 3,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 100, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 200, FALSE, VARIABLE_ENTRY_SIZE, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 200, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+        spec[2] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 2,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 300,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ TRUE,
+            /* new_size           = */ VARIABLE_ENTRY_SIZE / 4,
+            /* num_pins           = */ 1,
+            /* pin_type           = */ {VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {400, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 3,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 400, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 300, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 300, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+        spec[3] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 3,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 400,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__NO_FLAGS_SET,
+            /* resize_flag        = */ FALSE,
+            /* new_size           = */ 0,
+            /* num_pins           = */ 0,
+            /* pin_type           = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {0, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 0,
+            /* flush_ops          = */
+            /*    op_code:        type:    idx:    flag:    size: order_ptr: */
+            {{FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+        spec[4] = (struct fo_flush_cache_test_spec){
+            /* entry_num          = */ 4,
+            /* entry_type         = */ VARIABLE_ENTRY_TYPE,
+            /* entry_index        = */ 500,
+            /* insert_flag        = */ FALSE,
+            /* flags              = */ H5C__DIRTIED_FLAG,
+            /* resize_flag        = */ TRUE,
+            /* new_size           = */ VARIABLE_ENTRY_SIZE / 4,
+            /* num_pins           = */ 1,
+            /* pin_type           = */ {VARIABLE_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0},
+            /* pin_idx            = */ {100, 0, 0, 0, 0, 0, 0, 0},
+            /* num_flush_ops      = */ 3,
+            /* flush_ops          = */
+            /*    op_code:        type:        idx:        flag:    size:    order_ptr: */
+            {{FLUSH_OP__DIRTY, VARIABLE_ENTRY_TYPE, 100, FALSE, 0, NULL},
+             {FLUSH_OP__RESIZE, VARIABLE_ENTRY_TYPE, 500, FALSE, VARIABLE_ENTRY_SIZE / 2, NULL},
+             {FLUSH_OP__MOVE, VARIABLE_ENTRY_TYPE, 500, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL},
+             {FLUSH_OP__NO_OP, 0, 0, FALSE, 0, NULL}},
+            /* expected_deserialized = */ TRUE,
+            /* expected_serialized = */ TRUE,
+            /* expected_destroyed = */ TRUE};
+
+        checks[0] = (struct fo_flush_entry_check){/* entry_num          = */ 0,
                                                   /* entry_type         = */ 0,
                                                   /* entry_index        = */ 0,
                                                   /* expected_size      = */ 0,
                                                   /* in_cache           = */ FALSE,
                                                   /* at_main_addr       = */ FALSE,
-                                                  /* is_dirty              = */ FALSE,
+                                                  /* is_dirty           = */ FALSE,
                                                   /* is_protected       = */ FALSE,
                                                   /* is_pinned          = */ FALSE,
                                                   /* expected_deserialized = */ FALSE,
                                                   /* expected_serialized = */ FALSE,
-                                                  /* expected_destroyed = */ FALSE}};
+                                                  /* expected_destroyed = */ FALSE};
 
         check_flush_cache__flush_op_test(file_ptr, test_num, flush_flags, spec_size, spec,
                                          init_expected_index_len, init_expected_index_size,
@@ -7995,6 +8184,9 @@ check_flush_cache__flush_ops(H5F_t *file_ptr)
         reset_entries();
     }
 
+    HDfree(checks);
+    HDfree(spec);
+
     /* finally finish up with the flush ops eviction test */
     check_flush_cache__flush_op_eviction_test(file_ptr);
 
@@ -8420,1013 +8612,125 @@ check_flush_cache__flush_op_test(H5F_t *file_ptr, int test_num, unsigned int flu
 static void
 check_flush_cache__flush_op_eviction_test(H5F_t *file_ptr)
 {
-    H5C_t *                      cache_ptr = file_ptr->shared->cache;
-    int                          i;
-    int                          num_variable_entries = 10;
-    int                          num_monster_entries  = 31;
-    int                          num_large_entries    = 0;
-    test_entry_t *               entry_ptr;
-    test_entry_t *               base_addr;
-    struct expected_entry_status expected[10 + 31 + 14] = {
+    struct expected_entry_status *expected  = NULL;
+    H5C_t *                       cache_ptr = file_ptr->shared->cache;
+    int                           i;
+    const int                     num_variable_entries = 10;
+    const int                     num_monster_entries  = 31;
+    int                           num_large_entries    = 14;
+    const int     num_total_entries = num_variable_entries + num_monster_entries + num_large_entries;
+    test_entry_t *entry_ptr;
+    test_entry_t *base_addr;
+
+    expected = HDmalloc((size_t)num_total_entries * sizeof(struct expected_entry_status));
+    if (expected == NULL) {
+
+        pass         = FALSE;
+        failure_mssg = "couldn't allocate expected entry status array\n";
+    }
+
+    if (expected) {
         /* the expected array is used to maintain a table of the expected status of every
          * entry used in this test.  Note that since the function that processes this
          * array only processes as much of it as it is told to, we don't have to
          * worry about maintaining the status of entries that we haven't used yet.
          */
-        /* entry            entry                in    at main flush dep flush dep child flush   flush
-           flush */
-        /* type:            index:    size:            cache:    addr:    dirty:    prot:    pinned: dsrlzd:
-           srlzd:    dest:  par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order:     corked: */
-        {VARIABLE_ENTRY_TYPE,
-         0,
-         VARIABLE_ENTRY_SIZE / 4,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {VARIABLE_ENTRY_TYPE,
-         1,
-         VARIABLE_ENTRY_SIZE / 4,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {VARIABLE_ENTRY_TYPE,
-         2,
-         VARIABLE_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {VARIABLE_ENTRY_TYPE,
-         3,
-         VARIABLE_ENTRY_SIZE / 4,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {VARIABLE_ENTRY_TYPE,
-         4,
-         VARIABLE_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {VARIABLE_ENTRY_TYPE,
-         5,
-         VARIABLE_ENTRY_SIZE / 4,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {VARIABLE_ENTRY_TYPE,
-         6,
-         VARIABLE_ENTRY_SIZE / 2,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {VARIABLE_ENTRY_TYPE,
-         7,
-         VARIABLE_ENTRY_SIZE / 2,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {VARIABLE_ENTRY_TYPE,
-         8,
-         VARIABLE_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {VARIABLE_ENTRY_TYPE,
-         9,
-         VARIABLE_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         0,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         1,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         2,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         3,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         4,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         5,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         6,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         7,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         8,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         9,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         10,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         11,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         12,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         13,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         14,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         15,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         16,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         17,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         18,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         19,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         20,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         21,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         22,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         23,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         24,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         25,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         26,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         27,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         28,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         29,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {MONSTER_ENTRY_TYPE,
-         30,
-         MONSTER_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {LARGE_ENTRY_TYPE,
-         0,
-         LARGE_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {LARGE_ENTRY_TYPE,
-         1,
-         LARGE_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {LARGE_ENTRY_TYPE,
-         2,
-         LARGE_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {LARGE_ENTRY_TYPE,
-         3,
-         LARGE_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {LARGE_ENTRY_TYPE,
-         4,
-         LARGE_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {LARGE_ENTRY_TYPE,
-         5,
-         LARGE_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {LARGE_ENTRY_TYPE,
-         6,
-         LARGE_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {LARGE_ENTRY_TYPE,
-         7,
-         LARGE_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {LARGE_ENTRY_TYPE,
-         8,
-         LARGE_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {LARGE_ENTRY_TYPE,
-         9,
-         LARGE_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {LARGE_ENTRY_TYPE,
-         10,
-         LARGE_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {LARGE_ENTRY_TYPE,
-         11,
-         LARGE_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {LARGE_ENTRY_TYPE,
-         12,
-         LARGE_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE},
-        {LARGE_ENTRY_TYPE,
-         13,
-         LARGE_ENTRY_SIZE,
-         TRUE,
-         TRUE,
-         TRUE,
-         FALSE,
-         FALSE,
-         TRUE,
-         FALSE,
-         FALSE,
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         {0, 0, 0, 0, 0, 0, 0, 0},
-         0,
-         0,
-         0,
-         -1,
-         FALSE}};
+        for (i = 0; i < num_variable_entries; i++) {
+            expected[i].entry_type   = VARIABLE_ENTRY_TYPE;
+            expected[i].entry_index  = (int)(i);
+            expected[i].size         = VARIABLE_ENTRY_SIZE;
+            expected[i].in_cache     = TRUE;
+            expected[i].at_main_addr = TRUE;
+            expected[i].is_dirty     = TRUE;
+            expected[i].is_protected = FALSE;
+            expected[i].is_pinned    = FALSE;
+            expected[i].deserialized = TRUE;
+            expected[i].serialized   = FALSE;
+            expected[i].destroyed    = FALSE;
+
+            HDmemset(expected[i].flush_dep_par_type, 0, sizeof(expected[i].flush_dep_par_type));
+            HDmemset(expected[i].flush_dep_par_idx, 0, sizeof(expected[i].flush_dep_par_idx));
+
+            expected[i].flush_dep_npar       = 0;
+            expected[i].flush_dep_nchd       = 0;
+            expected[i].flush_dep_ndirty_chd = 0;
+            expected[i].flush_order          = -1;
+            expected[i].is_corked            = FALSE;
+        }
+
+        /* NOTE: special cases for particular variable entries */
+        expected[0].size      = VARIABLE_ENTRY_SIZE / 4;
+        expected[0].is_pinned = TRUE;
+
+        expected[1].size = VARIABLE_ENTRY_SIZE / 4;
+
+        expected[2].is_dirty = FALSE;
+
+        expected[3].size = VARIABLE_ENTRY_SIZE / 4;
+
+        expected[4].is_dirty = FALSE;
+
+        expected[5].size = VARIABLE_ENTRY_SIZE / 4;
+
+        expected[6].size = VARIABLE_ENTRY_SIZE / 2;
+
+        expected[7].size = VARIABLE_ENTRY_SIZE / 2;
+
+        expected[8].is_dirty = FALSE;
+
+        expected[9].is_dirty  = FALSE;
+        expected[9].is_pinned = TRUE;
+
+        for (; i < num_variable_entries + num_monster_entries; i++) {
+            expected[i].entry_type   = MONSTER_ENTRY_TYPE;
+            expected[i].entry_index  = (int)(i - num_variable_entries);
+            expected[i].size         = MONSTER_ENTRY_SIZE;
+            expected[i].in_cache     = TRUE;
+            expected[i].at_main_addr = TRUE;
+            expected[i].is_dirty     = TRUE;
+            expected[i].is_protected = FALSE;
+            expected[i].is_pinned    = FALSE;
+            expected[i].deserialized = TRUE;
+            expected[i].serialized   = FALSE;
+            expected[i].destroyed    = FALSE;
+
+            HDmemset(expected[i].flush_dep_par_type, 0, sizeof(expected[i].flush_dep_par_type));
+            HDmemset(expected[i].flush_dep_par_idx, 0, sizeof(expected[i].flush_dep_par_idx));
+
+            expected[i].flush_dep_npar       = 0;
+            expected[i].flush_dep_nchd       = 0;
+            expected[i].flush_dep_ndirty_chd = 0;
+            expected[i].flush_order          = -1;
+            expected[i].is_corked            = FALSE;
+        }
+
+        for (; i < num_total_entries; i++) {
+            expected[i].entry_type   = LARGE_ENTRY_TYPE;
+            expected[i].entry_index  = (int)(i - num_monster_entries - num_variable_entries);
+            expected[i].size         = LARGE_ENTRY_SIZE;
+            expected[i].in_cache     = TRUE;
+            expected[i].at_main_addr = TRUE;
+            expected[i].is_dirty     = TRUE;
+            expected[i].is_protected = FALSE;
+            expected[i].is_pinned    = FALSE;
+            expected[i].deserialized = TRUE;
+            expected[i].serialized   = FALSE;
+            expected[i].destroyed    = FALSE;
+
+            HDmemset(expected[i].flush_dep_par_type, 0, sizeof(expected[i].flush_dep_par_type));
+            HDmemset(expected[i].flush_dep_par_idx, 0, sizeof(expected[i].flush_dep_par_idx));
+
+            expected[i].flush_dep_npar       = 0;
+            expected[i].flush_dep_nchd       = 0;
+            expected[i].flush_dep_ndirty_chd = 0;
+            expected[i].flush_order          = -1;
+            expected[i].is_corked            = FALSE;
+        }
+
+        HDassert(i == num_total_entries);
+
+        pass = TRUE;
+    }
 
     if (pass) {
 
@@ -10536,6 +9840,8 @@ check_flush_cache__flush_op_eviction_test(H5F_t *file_ptr)
         reset_entries();
     }
 
+    HDfree(expected);
+
 } /* check_flush_cache__flush_op_eviction_test() */
 
 /*-------------------------------------------------------------------------
@@ -11606,8 +10912,17 @@ check_flush_cache__single_entry(H5F_t *file_ptr)
 
     if (pass) {
 
-        int i;
-        struct pinned_single_entry_test_spec {
+        struct pinned_single_entry_test_spec *spec = NULL;
+        size_t                                i;
+
+        spec = HDmalloc(256 * sizeof(struct pinned_single_entry_test_spec));
+        if (spec == NULL) {
+
+            pass         = FALSE;
+            failure_mssg = "couldn't allocated pinned single entry test spec array";
+        }
+
+        for (i = 0; i < 256; i++) {
             int          test_num;
             int          entry_type;
             int          entry_idx;
@@ -11620,529 +10935,89 @@ check_flush_cache__single_entry(H5F_t *file_ptr)
             unsigned int flush_flags;
             hbool_t      expected_serialized;
             hbool_t      expected_destroyed;
-        } spec[256] =
-            /*                                           pop    pop
-             *                         ent unprot        mark   mark
-             *  test  entry            -ry dirty  mark   dirty  dirty  unprot flush expect expect num   type
-             * idx  flag  dirty  prot   pinned unpin  flags                       flags srlzd  destroy
+
+            test_num   = (int)(i + 1);
+            entry_type = PICO_ENTRY_TYPE;
+            entry_idx  = 0;
+
+            /* Generate alternating sequences of TRUE/FALSE */
+            dirty_flag            = (i / 16) % 2;
+            mark_dirty            = (i / 8) % 2;
+            pop_mark_dirty_prot   = (i / 4) % 2;
+            pop_mark_dirty_pinned = (i / 2) % 2;
+            unprotect_unpin       = i % 2;
+
+            /* Generate alternating sequences of H5C__NO_FLAGS_SET
+             * and H5C__SET_FLUSH_MARKER_FLAG
+             */
+            if ((i / 32) % 2)
+                flags = H5C__SET_FLUSH_MARKER_FLAG;
+            else
+                flags = H5C__NO_FLAGS_SET;
+
+            /*
+             * Generate sequences of H5C__NO_FLAGS_SET,
+             * H5C__FLUSH_MARKED_ENTRIES_FLAG, H5C__FLUSH_CLEAR_ONLY_FLAG
+             * and H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG
              */
-            {{1, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, FALSE, FALSE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              FALSE, FALSE},
-             {2, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, FALSE, TRUE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              FALSE, FALSE},
-             {3, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, TRUE, FALSE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {4, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, TRUE, TRUE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {5, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, FALSE, FALSE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {6, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, FALSE, TRUE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {7, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, TRUE, FALSE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {8, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, TRUE, TRUE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {9, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, FALSE, FALSE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {10, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, FALSE, TRUE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {11, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, TRUE, FALSE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {12, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, TRUE, TRUE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {13, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, FALSE, FALSE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {14, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, FALSE, TRUE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {15, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, TRUE, FALSE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {16, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, TRUE, TRUE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {17, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, FALSE, FALSE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {18, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, FALSE, TRUE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {19, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, TRUE, FALSE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {20, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, TRUE, TRUE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {21, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, FALSE, FALSE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {22, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, FALSE, TRUE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {23, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, TRUE, FALSE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {24, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, TRUE, TRUE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {25, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, FALSE, FALSE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {26, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, FALSE, TRUE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {27, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, TRUE, FALSE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {28, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, TRUE, TRUE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {29, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, FALSE, FALSE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {30, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, FALSE, TRUE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {31, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, TRUE, FALSE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {32, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, TRUE, TRUE, H5C__NO_FLAGS_SET, H5C__NO_FLAGS_SET,
-              TRUE, FALSE},
-             {33, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, FALSE, FALSE},
-             {34, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, FALSE, FALSE},
-             {35, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {36, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {37, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {38, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {39, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {40, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {41, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {42, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {43, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {44, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {45, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {46, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {47, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {48, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {49, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {50, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {51, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {52, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {53, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {54, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {55, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {56, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {57, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {58, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {59, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {60, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {61, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {62, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {63, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {64, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__NO_FLAGS_SET, TRUE, FALSE},
-             {65, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {66, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {67, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {68, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {69, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {70, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {71, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {72, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {73, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {74, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {75, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {76, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {77, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {78, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {79, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {80, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {81, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {82, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {83, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {84, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {85, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {86, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {87, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {88, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {89, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {90, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {91, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {92, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {93, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {94, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {95, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {96, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {97, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {98, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {99, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {100, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {101, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {102, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {103, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {104, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {105, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {106, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {107, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {108, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, FALSE, FALSE},
-             {109, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {110, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {111, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {112, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {113, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {114, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {115, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {116, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {117, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {118, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {119, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {120, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {121, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {122, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {123, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {124, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {125, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {126, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {127, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {128, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG, TRUE, FALSE},
-             {129, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {130, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {131, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {132, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {133, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {134, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {135, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {136, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {137, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {138, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {139, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {140, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {141, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {142, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {143, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {144, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {145, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {146, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {147, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {148, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {149, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {150, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {151, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {152, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {153, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {154, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {155, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {156, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {157, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {158, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {159, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {160, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {161, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {162, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {163, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {164, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {165, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {166, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {167, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {168, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {169, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {170, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {171, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {172, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {173, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {174, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {175, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {176, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {177, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {178, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {179, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {180, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {181, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {182, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {183, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {184, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {185, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {186, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {187, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {188, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {189, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {190, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {191, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {192, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {193, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {194, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {195, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {196, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {197, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {198, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {199, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {200, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {201, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {202, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {203, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {204, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {205, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {206, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {207, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {208, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {209, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {210, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {211, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {212, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {213, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {214, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {215, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {216, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {217, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {218, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {219, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {220, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {221, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, FALSE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {222, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, FALSE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {223, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, TRUE, FALSE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {224, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, TRUE, TRUE, H5C__NO_FLAGS_SET,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {225, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {226, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {227, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {228, PICO_ENTRY_TYPE, 0, FALSE, FALSE, FALSE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {229, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {230, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {231, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {232, PICO_ENTRY_TYPE, 0, FALSE, FALSE, TRUE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {233, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {234, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {235, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {236, PICO_ENTRY_TYPE, 0, FALSE, TRUE, FALSE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {237, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {238, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {239, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {240, PICO_ENTRY_TYPE, 0, FALSE, TRUE, TRUE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {241, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {242, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {243, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {244, PICO_ENTRY_TYPE, 0, TRUE, FALSE, FALSE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {245, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {246, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {247, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {248, PICO_ENTRY_TYPE, 0, TRUE, FALSE, TRUE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {249, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {250, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {251, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {252, PICO_ENTRY_TYPE, 0, TRUE, TRUE, FALSE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {253, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, FALSE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {254, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, FALSE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {255, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, TRUE, FALSE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE},
-             {256, PICO_ENTRY_TYPE, 0, TRUE, TRUE, TRUE, TRUE, TRUE, H5C__SET_FLUSH_MARKER_FLAG,
-              H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG, FALSE, FALSE}};
+            switch (i / 64) {
+                case 0:
+                    flush_flags = H5C__NO_FLAGS_SET;
+                    break;
+                case 1:
+                    flush_flags = H5C__FLUSH_MARKED_ENTRIES_FLAG;
+                    break;
+                case 2:
+                    flush_flags = H5C__FLUSH_CLEAR_ONLY_FLAG;
+                    break;
+                case 3:
+                    flush_flags = H5C__FLUSH_MARKED_ENTRIES_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG;
+                    break;
+                default:
+                    flush_flags = H5C__NO_FLAGS_SET;
+                    break;
+            }
+
+            expected_serialized = FALSE;
+            if (0 == (flush_flags & H5C__FLUSH_CLEAR_ONLY_FLAG)) {
+                if (flush_flags & H5C__FLUSH_MARKED_ENTRIES_FLAG) {
+                    if (flags & H5C__SET_FLUSH_MARKER_FLAG) {
+                        if (mark_dirty && pop_mark_dirty_prot) {
+                            expected_serialized = TRUE;
+                        }
+                        else if (dirty_flag || pop_mark_dirty_prot) {
+                            expected_serialized = TRUE;
+                        }
+                    }
+                }
+                else {
+                    if (dirty_flag || mark_dirty || pop_mark_dirty_prot || pop_mark_dirty_pinned)
+                        expected_serialized = TRUE;
+                }
+            }
+
+            expected_destroyed = FALSE;
+
+            spec[i] = (struct pinned_single_entry_test_spec){
+                test_num,
+                entry_type,
+                entry_idx,
+                dirty_flag,
+                mark_dirty,
+                pop_mark_dirty_prot,
+                pop_mark_dirty_pinned,
+                unprotect_unpin,
+                flags,
+                flush_flags,
+                expected_serialized,
+                expected_destroyed,
+            };
+        }
 
         i = 0;
         while (pass && (i < 256)) {
             check_flush_cache__pinned_single_entry_test(
-                /* file_ptr             */ file_ptr,
+                /* file_ptr              */ file_ptr,
                 /* test_num              */ spec[i].test_num,
                 /* entry_type            */ spec[i].entry_type,
                 /* entry_idx             */ spec[i].entry_idx,
@@ -12157,6 +11032,8 @@ check_flush_cache__single_entry(H5F_t *file_ptr)
                 /* expected_destroyed    */ spec[i].expected_destroyed);
             i++;
         }
+
+        HDfree(spec);
     }
 
 } /* check_flush_cache__single_entry() */
@@ -26870,182 +25747,57 @@ check_auto_cache_resize_aux_fcns(unsigned paged)
 static unsigned
 check_metadata_blizzard_absence(hbool_t fill_via_insertion, unsigned paged)
 {
-    int     entry_type    = HUGE_ENTRY_TYPE;
-    size_t  entry_size    = HUGE_ENTRY_SIZE; /* 16 KB */
-    H5F_t * file_ptr      = NULL;
-    H5C_t * cache_ptr     = NULL;
-    hbool_t show_progress = FALSE;
-    int32_t checkpoint    = 0;
-    int32_t entry_idx     = 0;
-    int32_t i;
+    struct expected_entry_status *expected      = NULL;
+    int                           entry_type    = HUGE_ENTRY_TYPE;
+    size_t                        entry_size    = HUGE_ENTRY_SIZE; /* 16 KB */
+    H5F_t *                       file_ptr      = NULL;
+    H5C_t *                       cache_ptr     = NULL;
+    hbool_t                       show_progress = FALSE;
+    int32_t                       checkpoint    = 0;
+    int32_t                       entry_idx     = 0;
+    int32_t                       i;
 
     /* Expected deserialized status of entries depends on how they get into
      * the cache. Insertions = not deserialized, protect/unprotect = deserialized.
      */
     hbool_t deserialized = (hbool_t) !(fill_via_insertion);
 
-    /* Set up the expected array. This is used to maintain a table of the
-     * expected status of every entry used in this test.
-     */
-    /* clang-format off */
-    struct expected_entry_status expected[150] =
-    {
-      /* entry        entry            in    at main                                                flush dep flush dep child flush   flush       flush */
-      /* type:        index:    size:        cache:    addr:    dirty:    prot:    pinned:    dsrlzd:    srlzd:    dest:  par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order:     corked: */
-      { HUGE_ENTRY_TYPE, 0,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 1,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 2,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 3,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 4,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 5,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 6,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 7,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 8,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 9,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 10,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 11,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 12,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 13,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 14,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 15,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 16,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 17,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 18,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 19,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 20,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 21,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 22,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 23,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 24,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 25,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 26,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 27,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 28,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 29,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 30,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 31,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 32,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 33,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 34,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 35,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 36,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 37,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 38,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 39,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 40,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 41,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 42,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 43,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 44,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 45,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 46,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 47,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 48,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 49,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 50,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 51,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 52,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 53,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 54,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 55,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 56,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 57,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 58,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 59,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 60,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 61,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 62,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 63,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 64,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 65,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 66,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 67,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 68,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 69,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 70,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 71,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 72,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 73,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 74,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 75,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 76,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 77,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 78,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 79,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 80,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 81,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 82,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 83,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 84,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 85,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 86,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 87,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 88,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 89,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 90,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 91,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 92,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 93,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 94,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 95,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 96,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 97,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 98,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 99,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 100,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 101,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 102,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 103,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 104,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 105,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 106,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 107,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 108,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 109,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 110,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 111,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 112,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 113,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 114,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 115,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 116,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 117,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 118,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 119,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 120,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 121,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 122,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 123,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 124,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 125,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 126,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 127,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 128,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 129,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 130,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 131,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 132,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 133,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 134,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 135,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 136,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 137,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 138,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 139,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 140,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 141,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 142,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 143,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 144,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 145,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 146,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 147,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 148,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 149,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE}
-    };
-    /* clang-format on */
+    expected = HDmalloc(150 * sizeof(struct expected_entry_status));
+    if (expected == NULL) {
 
-    pass = TRUE;
+        pass         = FALSE;
+        failure_mssg = "couldn't allocate expected entry status array\n";
+    }
+
+    if (expected) {
+        /* Set up the expected array. This is used to maintain a table of the
+         * expected status of every entry used in this test.
+         */
+        for (i = 0; i < 150; i++) {
+            expected[i].entry_type   = HUGE_ENTRY_TYPE;
+            expected[i].entry_index  = (int)i;
+            expected[i].size         = HUGE_ENTRY_SIZE;
+            expected[i].in_cache     = FALSE;
+            expected[i].at_main_addr = TRUE;
+            expected[i].is_dirty     = FALSE;
+            expected[i].is_protected = FALSE;
+            expected[i].is_pinned    = FALSE;
+            expected[i].deserialized = FALSE;
+            expected[i].serialized   = FALSE;
+            expected[i].destroyed    = FALSE;
+
+            HDmemset(expected[i].flush_dep_par_type, 0, sizeof(expected[i].flush_dep_par_type));
+            HDmemset(expected[i].flush_dep_par_idx, 0, sizeof(expected[i].flush_dep_par_idx));
+
+            expected[i].flush_dep_npar       = 0;
+            expected[i].flush_dep_nchd       = 0;
+            expected[i].flush_dep_ndirty_chd = 0;
+            expected[i].flush_order          = -1;
+            expected[i].is_corked            = FALSE;
+        }
+
+        pass = TRUE;
+    }
 
     reset_entries();
 
@@ -27686,6 +26438,8 @@ check_metadata_blizzard_absence(hbool_t fill_via_insertion, unsigned paged)
     if (show_progress) /* 12 */
         HDfprintf(stdout, "%s: check point %d -- pass %d\n", __func__, checkpoint++, pass);
 
+    HDfree(expected);
+
     if (pass) {
         PASSED();
     }
@@ -32857,183 +31611,58 @@ done:
 static unsigned
 check_metadata_cork(hbool_t fill_via_insertion, unsigned paged)
 {
-    const char *fcn_name      = "check_metadata_cork";
-    int         entry_type    = HUGE_ENTRY_TYPE;
-    size_t      entry_size    = HUGE_ENTRY_SIZE; /* 16 KB */
-    H5F_t *     file_ptr      = NULL;
-    H5C_t *     cache_ptr     = NULL;
-    hbool_t     show_progress = FALSE;
-    int32_t     checkpoint    = 0;
-    int32_t     entry_idx     = 0;
-    int32_t     i;
+    struct expected_entry_status *expected      = NULL;
+    const char *                  fcn_name      = "check_metadata_cork";
+    int                           entry_type    = HUGE_ENTRY_TYPE;
+    size_t                        entry_size    = HUGE_ENTRY_SIZE; /* 16 KB */
+    H5F_t *                       file_ptr      = NULL;
+    H5C_t *                       cache_ptr     = NULL;
+    hbool_t                       show_progress = FALSE;
+    int32_t                       checkpoint    = 0;
+    int32_t                       entry_idx     = 0;
+    int32_t                       i;
 
     /* Expected deserialized status of entries depends on how they get into
      * the cache. Insertions = not deserialized, protect/unprotect = deserialized.
      */
     hbool_t deserialized = (hbool_t) !(fill_via_insertion);
 
-    /* Set up the expected array. This is used to maintain a table of the
-     * expected status of every entry used in this test.
-     */
-    /* clang-format off */
-    struct expected_entry_status expected[150] =
-    {
-      /* entry            entry        in    at main                                                flush dep flush dep child flush   flush       flush */
-      /* type:        index:    size:        cache:    addr:    dirty:    prot:    pinned:    dsrlzd:    srlzd:    dest:  par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order: corked: */
-      { HUGE_ENTRY_TYPE, 0,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 1,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 2,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 3,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 4,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 5,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 6,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 7,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 8,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 9,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 10,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 11,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 12,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 13,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 14,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 15,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 16,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 17,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 18,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 19,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 20,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 21,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 22,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 23,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 24,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 25,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 26,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 27,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 28,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 29,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 30,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 31,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 32,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 33,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 34,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 35,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 36,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 37,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 38,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 39,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 40,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 41,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 42,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 43,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 44,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 45,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 46,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 47,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 48,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 49,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 50,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 51,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 52,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 53,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 54,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 55,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 56,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 57,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 58,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 59,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 60,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 61,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 62,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 63,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 64,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 65,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 66,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 67,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 68,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 69,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 70,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 71,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 72,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 73,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 74,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 75,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 76,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 77,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 78,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 79,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 80,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 81,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 82,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 83,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 84,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 85,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 86,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 87,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 88,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 89,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 90,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 91,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 92,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 93,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 94,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 95,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 96,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 97,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 98,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 99,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 100,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 101,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 102,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 103,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 104,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 105,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 106,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 107,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 108,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 109,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 110,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 111,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 112,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 113,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 114,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 115,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 116,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 117,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 118,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 119,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 120,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 121,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 122,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 123,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 124,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 125,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 126,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 127,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 128,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 129,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 130,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 131,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 132,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 133,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 134,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 135,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 136,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 137,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 138,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 139,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 140,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 141,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 142,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 143,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 144,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 145,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 146,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 147,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 148,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE},
-      { HUGE_ENTRY_TYPE, 149,    HUGE_ENTRY_SIZE, FALSE,    TRUE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE,    FALSE, {0,0,0,0,0,0,0,0},       {0,0,0,0,0,0,0,0},      0, 0, 0,          -1, FALSE}
-    } ;
-    /* clang-format on */
+    expected = HDmalloc(150 * sizeof(struct expected_entry_status));
+    if (expected == NULL) {
 
-    pass = TRUE;
+        pass         = FALSE;
+        failure_mssg = "couldn't allocate expected entry status array\n";
+    }
+
+    if (expected) {
+        /* Set up the expected array. This is used to maintain a table of the
+         * expected status of every entry used in this test.
+         */
+        for (i = 0; i < 150; i++) {
+            expected[i].entry_type   = HUGE_ENTRY_TYPE;
+            expected[i].entry_index  = (int)i;
+            expected[i].size         = HUGE_ENTRY_SIZE;
+            expected[i].in_cache     = FALSE;
+            expected[i].at_main_addr = TRUE;
+            expected[i].is_dirty     = FALSE;
+            expected[i].is_protected = FALSE;
+            expected[i].is_pinned    = FALSE;
+            expected[i].deserialized = FALSE;
+            expected[i].serialized   = FALSE;
+            expected[i].destroyed    = FALSE;
+
+            HDmemset(expected[i].flush_dep_par_type, 0, sizeof(expected[i].flush_dep_par_type));
+            HDmemset(expected[i].flush_dep_par_idx, 0, sizeof(expected[i].flush_dep_par_idx));
+
+            expected[i].flush_dep_npar       = 0;
+            expected[i].flush_dep_nchd       = 0;
+            expected[i].flush_dep_ndirty_chd = 0;
+            expected[i].flush_order          = -1;
+            expected[i].is_corked            = FALSE;
+        }
+
+        pass = TRUE;
+    }
 
     reset_entries();
 
@@ -33542,6 +32171,8 @@ check_metadata_cork(hbool_t fill_via_insertion, unsigned paged)
     if (show_progress) /* 13 */
         HDfprintf(stdout, "%s: check point %d -- pass %d\n", fcn_name, checkpoint++, pass);
 
+    HDfree(expected);
+
     if (pass) {
         PASSED();
     }
@@ -33688,24 +32319,50 @@ check_entry_deletions_during_scans(unsigned paged)
 static void
 cedds__expunge_dirty_entry_in_flush_test(H5F_t *file_ptr)
 {
-    H5C_t *cache_ptr = file_ptr->shared->cache;
-    int    i;
-    /* clang-format off */
-    struct expected_entry_status expected[36] =
-    {
-      /* the expected array is used to maintain a table of the expected status of every
-       * entry used in this test.  Note that since the function that processes this
-       * array only processes as much of it as it is told to, we don't have to
-       * worry about maintaining the status of entries that we haven't used yet.
-       */
-      /* entry            entry                in    at main                                                   flush dep flush dep child flush   flush       flush */
-      /* type:            index:    size:            cache:    addr:    dirty:    prot:    pinned:    dsrlzd:    srlzd:    dest:     par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order:     corked: */
-      { HUGE_ENTRY_TYPE,     0,    HUGE_ENTRY_SIZE,     TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE,  {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { HUGE_ENTRY_TYPE,     1,    HUGE_ENTRY_SIZE,     TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE,  {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { HUGE_ENTRY_TYPE,     2,    HUGE_ENTRY_SIZE,     TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE,  {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { HUGE_ENTRY_TYPE,     3,    HUGE_ENTRY_SIZE,     TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE,  {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE}
-    };
-    /* clang-format on */
+    struct expected_entry_status *expected  = NULL;
+    H5C_t *                       cache_ptr = file_ptr->shared->cache;
+    int                           i;
+
+    expected = HDmalloc(36 * sizeof(struct expected_entry_status));
+    if (expected == NULL) {
+
+        pass         = FALSE;
+        failure_mssg = "couldn't allocate expected entry status array\n";
+    }
+
+    if (expected) {
+        /* the expected array is used to maintain a table of the expected status of every
+         * entry used in this test.  Note that since the function that processes this
+         * array only processes as much of it as it is told to, we don't have to
+         * worry about maintaining the status of entries that we haven't used yet.
+         */
+        for (i = 0; i < 36; i++) {
+            expected[i].entry_type   = HUGE_ENTRY_TYPE;
+            expected[i].entry_index  = (int)i;
+            expected[i].size         = HUGE_ENTRY_SIZE;
+            expected[i].in_cache     = TRUE;
+            expected[i].at_main_addr = TRUE;
+            expected[i].is_dirty     = TRUE;
+            expected[i].is_protected = FALSE;
+            expected[i].is_pinned    = FALSE;
+            expected[i].deserialized = TRUE;
+            expected[i].serialized   = FALSE;
+            expected[i].destroyed    = FALSE;
+
+            for (size_t j = 0; j < MAX_FLUSH_DEP_PARS; j++) {
+                expected[i].flush_dep_par_type[j] = -1;
+                expected[i].flush_dep_par_idx[j]  = -1;
+            }
+
+            expected[i].flush_dep_npar       = 0;
+            expected[i].flush_dep_nchd       = 0;
+            expected[i].flush_dep_ndirty_chd = 0;
+            expected[i].flush_order          = -1;
+            expected[i].is_corked            = FALSE;
+        }
+
+        pass = TRUE;
+    }
 
     if (pass) {
 
@@ -33860,6 +32517,8 @@ cedds__expunge_dirty_entry_in_flush_test(H5F_t *file_ptr)
         /* reset cache min clean size to its expected value */
         cache_ptr->min_clean_size = (1 * 1024 * 1024);
 
+    HDfree(expected);
+
 } /* cedds__expunge_dirty_entry_in_flush_test() */
 
 /*-------------------------------------------------------------------------
@@ -33900,58 +32559,60 @@ cedds__expunge_dirty_entry_in_flush_test(H5F_t *file_ptr)
 static void
 cedds__H5C_make_space_in_cache(H5F_t *file_ptr)
 {
-    H5C_t *   cache_ptr = file_ptr->shared->cache;
-    int       i;
-    const int num_huge_entries    = 4;
-    const int num_monster_entries = 32;
-    /* clang-format off */
-    struct expected_entry_status expected[36] =
-    {
-      /* the expected array is used to maintain a table of the expected status of every
-       * entry used in this test.  Note that since the function that processes this
-       * array only processes as much of it as it is told to, we don't have to
-       * worry about maintaining the status of entries that we haven't used yet.
-       */
-      /* entry            entry                in    at main                                                flush dep flush dep child flush   flush       flush */
-      /* type:            index:    size:            cache:    addr:    dirty:    prot:    pinned:    dsrlzd:    srlzd:    dest:  par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order:     corked: */
-      { HUGE_ENTRY_TYPE,     0,    HUGE_ENTRY_SIZE,     TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { HUGE_ENTRY_TYPE,     1,    HUGE_ENTRY_SIZE,     TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { HUGE_ENTRY_TYPE,     2,    HUGE_ENTRY_SIZE,     TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { HUGE_ENTRY_TYPE,     3,    HUGE_ENTRY_SIZE,     TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    0,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    1,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    2,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    3,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    4,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    5,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    6,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    7,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    8,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    9,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    10,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    11,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    12,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    13,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    14,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    15,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    16,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    17,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    18,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    19,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    20,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    21,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    22,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    23,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    24,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    25,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    26,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    27,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    28,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    29,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    30,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    31,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-    };
-    /* clang-format on */
+    struct expected_entry_status *expected  = NULL;
+    H5C_t *                       cache_ptr = file_ptr->shared->cache;
+    int                           i;
+    const int                     num_huge_entries    = 4;
+    const int                     num_monster_entries = 32;
+
+    expected = HDmalloc(36 * sizeof(struct expected_entry_status));
+    if (expected == NULL) {
+
+        pass         = FALSE;
+        failure_mssg = "couldn't allocate expected entry status array\n";
+    }
+
+    if (expected) {
+        /* the expected array is used to maintain a table of the expected status of every
+         * entry used in this test.  Note that since the function that processes this
+         * array only processes as much of it as it is told to, we don't have to
+         * worry about maintaining the status of entries that we haven't used yet.
+         */
+        for (i = 0; i < 36; i++) {
+            if (i < num_huge_entries) {
+                expected[i].entry_type  = HUGE_ENTRY_TYPE;
+                expected[i].entry_index = (int)i;
+                expected[i].size        = HUGE_ENTRY_SIZE;
+            }
+            else {
+                expected[i].entry_type  = MONSTER_ENTRY_TYPE;
+                expected[i].entry_index = (int)(i - num_huge_entries);
+                expected[i].size        = MONSTER_ENTRY_SIZE;
+            }
+
+            expected[i].in_cache     = TRUE;
+            expected[i].at_main_addr = TRUE;
+            expected[i].is_dirty     = TRUE;
+            expected[i].is_protected = FALSE;
+            expected[i].is_pinned    = FALSE;
+            expected[i].deserialized = TRUE;
+            expected[i].serialized   = FALSE;
+            expected[i].destroyed    = FALSE;
+
+            for (size_t j = 0; j < MAX_FLUSH_DEP_PARS; j++) {
+                expected[i].flush_dep_par_type[j] = -1;
+                expected[i].flush_dep_par_idx[j]  = -1;
+            }
+
+            expected[i].flush_dep_npar       = 0;
+            expected[i].flush_dep_nchd       = 0;
+            expected[i].flush_dep_ndirty_chd = 0;
+            expected[i].flush_order          = -1;
+            expected[i].is_corked            = FALSE;
+        }
+
+        pass = TRUE;
+    }
 
     if (pass) {
 
@@ -34218,6 +32879,8 @@ cedds__H5C_make_space_in_cache(H5F_t *file_ptr)
         /* reset cache min clean size to its expected value */
         cache_ptr->min_clean_size = (1 * 1024 * 1024);
 
+    HDfree(expected);
+
 } /* cedds__H5C_make_space_in_cache() */
 
 /*-------------------------------------------------------------------------
@@ -34258,55 +32921,12 @@ cedds__H5C_make_space_in_cache(H5F_t *file_ptr)
 static void
 cedds__H5C__autoadjust__ageout__evict_aged_out_entries(H5F_t *file_ptr)
 {
-    H5C_t *cache_ptr = file_ptr->shared->cache;
-    int    i;
-    herr_t result;
-    /* clang-format off */
-    struct expected_entry_status expected[36] =
-    {
-      /* the expected array is used to maintain a table of the expected status of every
-       * entry used in this test.  Note that since the function that processes this
-       * array only processes as much of it as it is told to, we don't have to
-       * worry about maintaining the status of entries that we haven't used yet.
-       */
-      /* entry            entry                in    at main                                                flush dep flush dep child flush   flush       flush */
-      /* type:            index:    size:            cache:    addr:    dirty:    prot:    pinned:    dsrlzd:    srlzd:    dest:  par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order:    corked: */
-      { MONSTER_ENTRY_TYPE,    0,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    TRUE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    1,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    2,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    3,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    4,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    5,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    6,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    7,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    8,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    9,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    10,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    11,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    12,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    13,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    14,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    15,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    16,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    17,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    18,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    19,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    20,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    21,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    22,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    23,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    24,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    25,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    26,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    27,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    28,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    29,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    30,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-      { MONSTER_ENTRY_TYPE,    31,    MONSTER_ENTRY_SIZE,    TRUE,    TRUE,    FALSE,    FALSE,    FALSE,    TRUE,    FALSE,    FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1},     0, 0, 0, -1, FALSE},
-    };
-    /* clang-format on */
-    H5C_auto_size_ctl_t saved_auto_size_ctl;
-    H5C_auto_size_ctl_t test_auto_size_ctl = {
+    struct expected_entry_status *expected  = NULL;
+    H5C_t *                       cache_ptr = file_ptr->shared->cache;
+    int                           i;
+    herr_t                        result;
+    H5C_auto_size_ctl_t           saved_auto_size_ctl;
+    H5C_auto_size_ctl_t           test_auto_size_ctl = {
         /* int32_t     version                = */ H5C__CURR_AUTO_SIZE_CTL_VER,
         /* H5C_auto_resize_report_fcn rpt_fcn = */ test_rpt_fcn,
 
@@ -34348,6 +32968,50 @@ cedds__H5C__autoadjust__ageout__evict_aged_out_entries(H5F_t *file_ptr)
         /* hbool_t     apply_empty_reserve    = */ TRUE,
         /* double      empty_reserve          = */ 0.05};
 
+    expected = HDmalloc(36 * sizeof(struct expected_entry_status));
+    if (expected == NULL) {
+
+        pass         = FALSE;
+        failure_mssg = "couldn't allocate expected entry status array\n";
+    }
+
+    if (expected) {
+        /* the expected array is used to maintain a table of the expected status of every
+         * entry used in this test.  Note that since the function that processes this
+         * array only processes as much of it as it is told to, we don't have to
+         * worry about maintaining the status of entries that we haven't used yet.
+         */
+        for (i = 0; i < 36; i++) {
+            expected[i].entry_type   = MONSTER_ENTRY_TYPE;
+            expected[i].entry_index  = (int)i;
+            expected[i].size         = MONSTER_ENTRY_SIZE;
+            expected[i].in_cache     = TRUE;
+            expected[i].at_main_addr = TRUE;
+
+            /* NOTE: special case for first entry */
+            expected[i].is_dirty = (i == 0);
+
+            expected[i].is_protected = FALSE;
+            expected[i].is_pinned    = FALSE;
+            expected[i].deserialized = TRUE;
+            expected[i].serialized   = FALSE;
+            expected[i].destroyed    = FALSE;
+
+            for (size_t j = 0; j < MAX_FLUSH_DEP_PARS; j++) {
+                expected[i].flush_dep_par_type[j] = -1;
+                expected[i].flush_dep_par_idx[j]  = -1;
+            }
+
+            expected[i].flush_dep_npar       = 0;
+            expected[i].flush_dep_nchd       = 0;
+            expected[i].flush_dep_ndirty_chd = 0;
+            expected[i].flush_order          = -1;
+            expected[i].is_corked            = FALSE;
+        }
+
+        pass = TRUE;
+    }
+
     if (pass) {
 
         if (cache_ptr == NULL) {
@@ -34614,6 +33278,8 @@ cedds__H5C__autoadjust__ageout__evict_aged_out_entries(H5F_t *file_ptr)
         /* reset cache min clean size to its expected value */
         cache_ptr->min_clean_size = (1 * 1024 * 1024);
 
+    HDfree(expected);
+
 } /* cedds__H5C__autoadjust__ageout__evict_aged_out_entries() */
 
 /*-------------------------------------------------------------------------
diff --git a/test/chunk_info.c b/test/chunk_info.c
index b19f3df..f041c46 100644
--- a/test/chunk_info.c
+++ b/test/chunk_info.c
@@ -179,11 +179,18 @@ verify_get_chunk_info(hid_t dset, hid_t dspace, hsize_t chk_index, hsize_t exp_c
 
     if (H5Dget_chunk_info(dset, dspace, chk_index, out_offset, &read_flt_msk, &addr, &size) < 0)
         TEST_ERROR;
-    CHECK(addr, HADDR_UNDEF, "H5Dget_chunk_info");
-    VERIFY(size, exp_chk_size, "H5Dget_chunk_info, chunk size");
-    VERIFY(read_flt_msk, exp_flt_msk, "H5Dget_chunk_info, filter mask");
-    VERIFY(out_offset[0], exp_offset[0], "H5Dget_chunk_info, offset[0]");
-    VERIFY(out_offset[1], exp_offset[1], "H5Dget_chunk_info, offset[1]");
+
+    if (HADDR_UNDEF == addr)
+        FAIL_PUTS_ERROR("address cannot be HADDR_UNDEF");
+    if (size != exp_chk_size)
+        FAIL_PUTS_ERROR("unexpected chunk size");
+    if (read_flt_msk != exp_flt_msk)
+        FAIL_PUTS_ERROR("unexpected filter mask");
+    if (out_offset[0] != exp_offset[0])
+        FAIL_PUTS_ERROR("unexpected offset[0]");
+    if (out_offset[1] != exp_offset[1])
+        FAIL_PUTS_ERROR("unexpected offset[1]");
+
     return SUCCEED;
 
 error:
@@ -213,9 +220,14 @@ verify_get_chunk_info_by_coord(hid_t dset, hsize_t *offset, hsize_t exp_chk_size
     /* Get info of the chunk at logical coordinates specified by offset */
     if (H5Dget_chunk_info_by_coord(dset, offset, &read_flt_msk, &addr, &size) < 0)
         TEST_ERROR;
-    CHECK(addr, HADDR_UNDEF, "H5Dget_chunk_info_by_coord");
-    VERIFY(size, exp_chk_size, "H5Dget_chunk_info_by_coord, chunk size");
-    VERIFY(read_flt_msk, exp_flt_msk, "H5Dget_chunk_info_by_coord, filter mask");
+
+    if (HADDR_UNDEF == addr)
+        FAIL_PUTS_ERROR("address cannot be HADDR_UNDEF");
+    if (size != exp_chk_size)
+        FAIL_PUTS_ERROR("unexpected chunk size");
+    if (read_flt_msk != exp_flt_msk)
+        FAIL_PUTS_ERROR("unexpected filter mask");
+
     return SUCCEED;
 
 error:
@@ -245,8 +257,12 @@ verify_empty_chunk_info(hid_t dset, hsize_t *offset)
     /* Get info of the chunk at logical coordinates specified by offset */
     if (H5Dget_chunk_info_by_coord(dset, offset, &read_flt_msk, &addr, &size) < 0)
         TEST_ERROR;
-    VERIFY(addr, HADDR_UNDEF, "H5Dget_chunk_info_by_coord, chunk address");
-    VERIFY(size, EMPTY_CHK_SIZE, "H5Dget_chunk_info_by_coord, chunk size");
+
+    if (HADDR_UNDEF != addr)
+        FAIL_PUTS_ERROR("address was not HADDR_UNDEF");
+    if (EMPTY_CHK_SIZE != size)
+        FAIL_PUTS_ERROR("size was not EMPTY_CHK_SIZE");
+
     return SUCCEED;
 
 error:
@@ -428,12 +444,14 @@ verify_idx_nchunks(hid_t dset, hid_t dspace, H5D_chunk_index_t exp_idx_type, hsi
     /* Get and verify the number of chunks */
     if (H5Dget_num_chunks(dset, dspace, &nchunks) < 0)
         TEST_ERROR;
-    VERIFY(nchunks, exp_num_chunks, "H5Dget_num_chunks, number of chunks");
+    if (nchunks != exp_num_chunks)
+        FAIL_PUTS_ERROR("unexpected number of chunks");
 
     /* Get and verify the number of chunks again, passing in H5S_ALL */
     if (H5Dget_num_chunks(dset, H5S_ALL, &nchunks) < 0)
         TEST_ERROR;
-    VERIFY(nchunks, exp_num_chunks, "H5Dget_num_chunks, number of chunks");
+    if (nchunks != exp_num_chunks)
+        FAIL_PUTS_ERROR("unexpected number of chunks");
 
     return SUCCEED;
 
@@ -603,7 +621,8 @@ test_get_chunk_info_highest_v18(hid_t fapl)
     /* Get and verify the number of chunks written */
     if (H5Dget_num_chunks(dset, dspace, &nchunks) < 0)
         TEST_ERROR;
-    VERIFY(nchunks, NUM_CHUNKS_WRITTEN, "H5Dget_num_chunks, number of chunks");
+    if (NUM_CHUNKS_WRITTEN != nchunks)
+        FAIL_PUTS_ERROR("unexpected number of chunks");
 
     /* Get and verify info of the last written chunk again, passing in H5S_ALL
        this time */
@@ -666,7 +685,8 @@ test_get_chunk_info_highest_v18(hid_t fapl)
     /* Verify that the number of chunks is 0 */
     if (H5Dget_num_chunks(dset, dspace, &nchunks) < 0)
         TEST_ERROR;
-    VERIFY(nchunks, NO_CHUNK_WRITTEN, "H5Dget_num_chunks, number of chunks");
+    if (NO_CHUNK_WRITTEN != nchunks)
+        FAIL_PUTS_ERROR("unexpected number of chunks");
 
     /* Attempt to get info of a chunk from an empty dataset, should fail */
     chk_index = OUTOFRANGE_CHK_INDEX;
@@ -1128,7 +1148,8 @@ test_chunk_info_fixed_array(const char *filename, hid_t fapl)
     /* Get and verify the number of chunks written */
     if (H5Dget_num_chunks(dset, dspace, &nchunks) < 0)
         TEST_ERROR;
-    VERIFY(nchunks, NUM_CHUNKS_WRITTEN, "H5Dget_num_chunks, number of chunks");
+    if (NUM_CHUNKS_WRITTEN != nchunks)
+        FAIL_PUTS_ERROR("unexpected number of chunks");
 
     /* Get and verify info of each written chunk */
     chk_index = 0;
@@ -1271,7 +1292,8 @@ test_chunk_info_extensible_array(const char *filename, hid_t fapl)
     /* Get and verify the number of chunks written */
     if (H5Dget_num_chunks(dset, dspace, &nchunks) < 0)
         TEST_ERROR;
-    VERIFY(nchunks, NUM_CHUNKS_WRITTEN, "H5Dget_num_chunks, number of chunks");
+    if (NUM_CHUNKS_WRITTEN != nchunks)
+        FAIL_PUTS_ERROR("unexpected number of chunks");
 
     /* Get and verify info of each written chunk */
     chk_index = 0;
@@ -1419,7 +1441,8 @@ test_chunk_info_version2_btrees(const char *filename, hid_t fapl)
     /* Get and verify the number of chunks written */
     if (H5Dget_num_chunks(dset, dspace, &nchunks) < 0)
         TEST_ERROR;
-    VERIFY(nchunks, NUM_CHUNKS_WRITTEN, "H5Dget_num_chunks, number of chunks");
+    if (NUM_CHUNKS_WRITTEN != nchunks)
+        FAIL_PUTS_ERROR("unexpected number of chunks");
 
     /* Go through all written chunks, get their info and verify the values */
     chk_index = 0;
@@ -1602,7 +1625,8 @@ test_basic_query(hid_t fapl)
     /* Get the number of chunks and verify that no chunk has been written */
     if (H5Dget_num_chunks(dset, dspace, &nchunks) < 0)
         TEST_ERROR;
-    VERIFY(nchunks, NO_CHUNK_WRITTEN, "H5Dget_num_chunks, number of chunks");
+    if (NO_CHUNK_WRITTEN != nchunks)
+        FAIL_PUTS_ERROR("unexpected number of chunks");
 
     /* Initialize the array of chunk data for the single chunk */
     for (ii = 0; ii < CHUNK_NX; ii++)
@@ -1618,7 +1642,8 @@ test_basic_query(hid_t fapl)
     /* Get and verify that one chunk had been written */
     if (H5Dget_num_chunks(dset, dspace, &nchunks) < 0)
         TEST_ERROR;
-    VERIFY(nchunks, ONE_CHUNK_WRITTEN, "H5Dget_num_chunks, number of chunks");
+    if (ONE_CHUNK_WRITTEN != nchunks)
+        FAIL_PUTS_ERROR("unexpected number of chunks");
 
     /* Get and verify info of the first and only chunk */
     if (verify_get_chunk_info(dset, H5S_ALL, 0, CHK_SIZE, offset, flt_msk) == FAIL)
@@ -1649,7 +1674,8 @@ test_basic_query(hid_t fapl)
     /* Get and verify that two chunks had been written */
     if (H5Dget_num_chunks(dset, dspace, &nchunks) < 0)
         TEST_ERROR;
-    VERIFY(nchunks, TWO_CHUNKS_WRITTEN, "H5Dget_num_chunks, number of chunks");
+    if (TWO_CHUNKS_WRITTEN != nchunks)
+        FAIL_PUTS_ERROR("unexpected number of chunks");
 
     /* Get and verify info of the first written chunk in the dataset, its
        offset should be (0,0) */
@@ -1685,20 +1711,28 @@ test_basic_query(hid_t fapl)
     if (H5Dchunk_iter(dset, H5P_DEFAULT, &iter_cb, &udata) < 0)
         TEST_ERROR;
 
-    VERIFY(udata.last_index, 1, "Iterator did not iterate all chunks");
-    VERIFY(chunk_infos[0].offset[0], 0, "Offset mismatch");
-    VERIFY(chunk_infos[0].offset[1], 0, "Offset mismatch");
-    VERIFY(chunk_infos[0].filter_mask, 0, "Filter mismatch");
-    VERIFY(chunk_infos[0].nbytes, 96, "Size mismatch");
+    if (udata.last_index != 1)
+        FAIL_PUTS_ERROR("Iterator did not iterate over all chunks");
+    if (chunk_infos[0].offset[0] != 0)
+        FAIL_PUTS_ERROR("offset[0] mismatch");
+    if (chunk_infos[0].offset[1] != 0)
+        FAIL_PUTS_ERROR("offset[1] mismatch");
+    if (chunk_infos[0].filter_mask != 0)
+        FAIL_PUTS_ERROR("filter mask mismatch");
+    if (chunk_infos[0].nbytes != 96)
+        FAIL_PUTS_ERROR("size mismatch");
 
-    VERIFY(chunk_infos[1].offset[0], 1, "Offset mismatch");
-    VERIFY(chunk_infos[1].offset[1], 1, "Offset mismatch");
+    if (chunk_infos[1].offset[0] != 1)
+        FAIL_PUTS_ERROR("offset[0] mismatch");
+    if (chunk_infos[1].offset[1] != 1)
+        FAIL_PUTS_ERROR("offset[1] mismatch");
 
     /* Iterate and stop after one iteration */
     cptr = &(chunk_infos[0]);
     if (H5Dchunk_iter(dset, H5P_DEFAULT, &iter_cb_stop, &cptr) < 0)
         TEST_ERROR;
-    VERIFY(cptr, &(chunk_infos[1]), "Verification of halted iterator failed\n");
+    if (cptr != &(chunk_infos[1]))
+        FAIL_PUTS_ERROR("Verification of halted iterator failed");
 
     /* Iterate and fail after one iteration */
     cptr = &(chunk_infos[0]);
@@ -1709,7 +1743,8 @@ test_basic_query(hid_t fapl)
     H5E_END_TRY;
     if (ret >= 0)
         TEST_ERROR;
-    VERIFY(cptr, &(chunk_infos[1]), "Verification of halted iterator failed\n");
+    if (cptr != &(chunk_infos[1]))
+        FAIL_PUTS_ERROR("Verification of halted iterator failed");
 
     /* Release resourse */
     if (H5Dclose(dset) < 0)
@@ -2102,7 +2137,8 @@ test_flt_msk_with_skip_compress(hid_t fapl)
     /* Get and verify the number of chunks written */
     if (H5Dget_num_chunks(dset, H5S_ALL, &nchunks) < 0)
         TEST_ERROR;
-    VERIFY(nchunks, ONE_CHUNK_WRITTEN, "H5Dget_num_chunks, number of chunks");
+    if (ONE_CHUNK_WRITTEN != nchunks)
+        FAIL_PUTS_ERROR("unexpected number of chunks");
 
     /* Get and verify info of the first and only chunk */
     chk_index = 0;
diff --git a/test/objcopy_ref.c b/test/objcopy_ref.c
index d10adf6..ef20cb4 100644
--- a/test/objcopy_ref.c
+++ b/test/objcopy_ref.c
@@ -939,8 +939,10 @@ compare_data(hid_t parent1, hid_t parent2, hid_t pid, hid_t tid, size_t nelmts,
             H5R_ref_t *ref_buf1, *ref_buf2; /* Aliases for buffers to compare */
 
             /* Loop over elements in buffers */
+            H5_GCC_CLANG_DIAG_OFF("cast-qual")
             ref_buf1 = (H5R_ref_t *)buf1;
             ref_buf2 = (H5R_ref_t *)buf2;
+            H5_GCC_CLANG_DIAG_ON("cast-qual")
             for (u = 0; u < nelmts; u++, ref_buf1++, ref_buf2++) {
                 hid_t      obj1_id, obj2_id;     /* IDs for objects referenced */
                 H5O_type_t obj1_type, obj2_type; /* Types of objects referenced */
diff --git a/test/page_buffer.c b/test/page_buffer.c
index a97e245..35743d0 100644
--- a/test/page_buffer.c
+++ b/test/page_buffer.c
@@ -97,36 +97,51 @@ error:
 static int
 swmr_fapl_augment(hid_t fapl, const char *filename, uint32_t max_lag)
 {
-    H5F_vfd_swmr_config_t config = {.version                = H5F__CURR_VFD_SWMR_CONFIG_VERSION,
-                                    .tick_len               = 4,
-                                    .max_lag                = max_lag,
-                                    .writer                 = true,
-                                    .maintain_metadata_file = true,
-                                    .generate_updater_files = false,
-                                    .md_pages_reserved      = 128};
-    char *                bname  = NULL;
-    char *                dname  = NULL;
+    H5F_vfd_swmr_config_t *config = NULL;
+    char *                 bname  = NULL;
+    char *                 dname  = NULL;
+
+    if (NULL == (config = HDcalloc(1, sizeof(H5F_vfd_swmr_config_t))))
+        goto error;
+
+    config->version                = H5F__CURR_VFD_SWMR_CONFIG_VERSION;
+    config->tick_len               = 4;
+    config->max_lag                = max_lag;
+    config->writer                 = TRUE;
+    config->maintain_metadata_file = TRUE;
+    config->generate_updater_files = FALSE;
+    config->md_pages_reserved      = 128;
 
     if (H5_dirname(filename, &dname) < 0) {
         HDfprintf(stderr, "H5_dirname() failed\n");
-        return -1;
+        goto error;
     }
     if (H5_basename(filename, &bname) < 0) {
         HDfprintf(stderr, "H5_basename() failed\n");
-        return -1;
+        goto error;
     }
-    HDsnprintf(config.md_file_path, sizeof(config.md_file_path), "%s", dname);
-    HDsnprintf(config.md_file_name, sizeof(config.md_file_name), "%s.shadow", bname);
+    HDsnprintf(config->md_file_path, sizeof(config->md_file_path), "%s", dname);
+    HDsnprintf(config->md_file_name, sizeof(config->md_file_name), "%s.shadow", bname);
 
     HDfree(dname);
     HDfree(bname);
 
     /* Enable VFD SWMR configuration */
-    if (H5Pset_vfd_swmr_config(fapl, &config) < 0) {
+    if (H5Pset_vfd_swmr_config(fapl, config) < 0) {
         HDfprintf(stderr, "H5Pset_vrd_swmr_config failed\n");
-        return -1;
+        goto error;
     }
+
+    HDfree(config);
+
     return 0;
+
+error:
+    HDfree(dname);
+    HDfree(bname);
+    HDfree(config);
+
+    return -1;
 }
 
 static bool
diff --git a/test/test_swmr.sh.in b/test/test_swmr.sh.in
index cdf9d0b..012b024 100644
--- a/test/test_swmr.sh.in
+++ b/test/test_swmr.sh.in
@@ -171,7 +171,7 @@ do
         $testdir/swmr_generator -q $compress $index_type
         if test $? -ne 0; then
             echo generator had error
-            nerrors=$((nerrors + 1))
+            nerrors=`expr $nerrors + 1`
         fi
 
         # Launch the Generator with SWMR_WRITE
@@ -179,7 +179,7 @@ do
         $testdir/swmr_generator -q -s $compress $index_type
         if test $? -ne 0; then
             echo generator had error
-            nerrors=$((nerrors + 1))
+            nerrors=`expr $nerrors + 1`
         fi
 
         # Check for error and exit if one occurred
@@ -217,7 +217,7 @@ do
             seed=""
             $testdir/swmr_reader -q $Nsecs_add $seed 2>&1 |tee swmr_reader.out.$n &
             pid_readers="$pid_readers $!"
-            n=$((n + 1))
+            n=`expr $n + 1`
         done
         $DPRINT pid_readers=$pid_readers
         $IFDEBUG ps
@@ -229,7 +229,7 @@ do
             wait $xpid
             if test $? -ne 0; then
                 echo reader had error
-                nerrors=$((nerrors + 1))
+                nerrors=`expr $nerrors + 1`
             fi
         done
 
@@ -238,7 +238,7 @@ do
         wait $pid_writer
         if test $? -ne 0; then
             echo writer had error
-            nerrors=$((nerrors + 1))
+            nerrors=`expr $nerrors + 1`
         fi
 
         # Check for error and exit if one occurred
@@ -263,7 +263,7 @@ do
         $testdir/swmr_generator -q -s $compress $index_type
         if test $? -ne 0; then
             echo generator had error
-            nerrors=$((nerrors + 1))
+            nerrors=`expr $nerrors + 1`
         fi
 
         # Remove any possible writer message file before launching writer
@@ -289,7 +289,7 @@ do
             seed=""
             $testdir/swmr_reader -q $Nsecs_add $seed 2>&1 |tee swmr_reader.out.$n &
             pid_readers="$pid_readers $!"
-            n=$((n + 1))
+            n=`expr $n + 1`
         done
         $DPRINT pid_readers=$pid_readers
         $IFDEBUG ps
@@ -301,7 +301,7 @@ do
             wait $xpid
             if test $? -ne 0; then
                 echo reader had error
-                nerrors=$((nerrors + 1))
+                nerrors=`expr $nerrors + 1`
             fi
         done
 
@@ -310,7 +310,7 @@ do
         wait $pid_writer
         if test $? -ne 0; then
             echo writer had error
-            nerrors=$((nerrors + 1))
+            nerrors=`expr $nerrors + 1`
         fi
 
         # Check for error and exit if one occurred
@@ -352,7 +352,7 @@ do
             seed=""
             $testdir/swmr_remove_reader -q $Nsecs_rem $seed 2>&1 |tee swmr_reader.out.$n &
             pid_readers="$pid_readers $!"
-            n=$((n + 1))
+            n=`expr $n + 1`
         done
         $DPRINT pid_readers=$pid_readers
         $IFDEBUG ps
@@ -364,7 +364,7 @@ do
             wait $xpid
             if test $? -ne 0; then
                 echo reader had error
-                nerrors=$((nerrors + 1))
+                nerrors=`expr $nerrors + 1`
             fi
         done
 
@@ -373,7 +373,7 @@ do
         wait $pid_writer
         if test $? -ne 0; then
             echo writer had error
-            nerrors=$((nerrors + 1))
+            nerrors=`expr $nerrors + 1`
         fi
 
         # Check for error and exit if one occurred
@@ -398,7 +398,7 @@ do
         $testdir/swmr_generator -q $compress $index_type
         if test $? -ne 0; then
             echo generator had error
-            nerrors=$((nerrors + 1))
+            nerrors=`expr $nerrors + 1`
         fi
 
         # Launch the Writer (not in parallel - just to rebuild the datasets)
@@ -407,7 +407,7 @@ do
         $testdir/swmr_writer -q $Nrecords $seed
         if test $? -ne 0; then
             echo writer had error
-            nerrors=$((nerrors + 1))
+            nerrors=`expr $nerrors + 1`
         fi
 
         # Remove any possible writer message file before launching writer
@@ -433,7 +433,7 @@ do
             seed=""
             $testdir/swmr_remove_reader -q $Nsecs_addrem $seed 2>&1 |tee swmr_reader.out.$n &
             pid_readers="$pid_readers $!"
-            n=$((n + 1))
+            n=`expr $n + 1`
         done
         $DPRINT pid_readers=$pid_readers
         $IFDEBUG ps
@@ -445,7 +445,7 @@ do
             wait $xpid
             if test $? -ne 0; then
                 echo reader had error
-                nerrors=$((nerrors + 1))
+                nerrors=`expr $nerrors + 1`
             fi
         done
 
@@ -454,7 +454,7 @@ do
         wait $pid_writer
         if test $? -ne 0; then
             echo writer had error
-            nerrors=$((nerrors + 1))
+            nerrors=`expr $nerrors + 1`
         fi
 
         # Check for error and exit if one occurred
@@ -482,7 +482,7 @@ do
         $testdir/swmr_generator -q $compress $index_type $seed
         if test $? -ne 0; then
             echo generator had error
-            nerrors=$((nerrors + 1))
+            nerrors=`expr $nerrors + 1`
         fi
 
         # Remove any possible writer message file before launching writer
@@ -504,7 +504,7 @@ do
             # The sparse reader spits out a LOT of data so it's set to 'quiet'
             $testdir/swmr_sparse_reader -q $Nrecs_spa 2>&1 |tee swmr_reader.out.$n &
             pid_readers="$pid_readers $!"
-            n=$((n + 1))
+            n=`expr $n + 1`
         done
         $DPRINT pid_readers=$pid_readers
         $IFDEBUG ps
@@ -514,7 +514,7 @@ do
         wait $pid_writer
         if test $? -ne 0; then
             echo writer had error
-            nerrors=$((nerrors + 1))
+            nerrors=`expr $nerrors + 1`
         fi
 
         # Collect exit code of the readers
@@ -523,7 +523,7 @@ do
             wait $xpid
             if test $? -ne 0; then
                 echo reader had error
-                nerrors=$((nerrors + 1))
+                nerrors=`expr $nerrors + 1`
             fi
         done
 
diff --git a/test/vfd_swmr.c b/test/vfd_swmr.c
index 94c4910..8297961 100644
--- a/test/vfd_swmr.c
+++ b/test/vfd_swmr.c
@@ -95,7 +95,10 @@ static const char *namebases[] = {FILENAME, FILENAME2, FILENAME3, FNAME, NULL};
 /* Size of "flags" field in the updater file header */
 #define UD_SIZE_2 2
 
-#define Swap2Bytes(val) ((((val) >> 8) & 0x00FF) | (((val) << 8) & 0xFF00))
+/* Note that bitwise operations often perform integral promotion, so you have
+ * to cast the result to avoid warnings.
+ */
+#define Swap2Bytes(val) (uint16_t)((((val) >> 8) & 0x00FF) | (((val) << 8) & 0xFF00))
 
 #define Swap8Bytes(val)                                                                                      \
     ((((val) >> 56) & 0x00000000000000FF) | (((val) >> 40) & 0x000000000000FF00) |                           \
@@ -4861,14 +4864,14 @@ error:
 static unsigned
 test_updater_generate_md_checksums(hid_t orig_fapl, hbool_t file_create)
 {
-    char                    filename[FILE_NAME_LEN]; /* Filename to use */
-    hid_t                   fid  = H5I_INVALID_HID;  /* File ID */
-    hid_t                   fcpl = H5I_INVALID_HID;  /* File creation property list ID */
-    hid_t                   fapl = H5I_INVALID_HID;  /* File access property list ID */
-    H5F_vfd_swmr_config_t   config;                  /* Configuration for VFD SWMR */
-    H5F_generate_md_ck_cb_t cb_info;                 /* Callback */
-    H5F_t *                 f = NULL;                /* Internal file object pointer */
-    char *                  md_file_path_name;
+    char                    filename[FILE_NAME_LEN];  /* Filename to use */
+    hid_t                   fid    = H5I_INVALID_HID; /* File ID */
+    hid_t                   fcpl   = H5I_INVALID_HID; /* File creation property list ID */
+    hid_t                   fapl   = H5I_INVALID_HID; /* File access property list ID */
+    H5F_vfd_swmr_config_t * config = NULL;            /* Configuration for VFD SWMR */
+    H5F_generate_md_ck_cb_t cb_info;                  /* Callback */
+    H5F_t *                 f                 = NULL; /* Internal file object pointer */
+    char *                  md_file_path_name = NULL;
 
     if (file_create) {
         TESTING("VFD SWMR updater generate checksums for metadata file with H5Fcreate");
@@ -4879,16 +4882,19 @@ test_updater_generate_md_checksums(hid_t orig_fapl, hbool_t file_create)
 
     h5_fixname(namebase4, orig_fapl, filename, sizeof(filename));
 
+    if (NULL == (config = HDmalloc(sizeof(H5F_vfd_swmr_config_t))))
+        TEST_ERROR;
+
     /* config, tick_len, max_lag, presume_posix_semantics, writer,
      * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
      * md_file_path, md_file_name, updater_file_path */
-    init_vfd_swmr_config(&config, 4, 7, FALSE, TRUE, TRUE, TRUE, TRUE, 2, NULL, MD_FILE, UD_FILE);
+    init_vfd_swmr_config(config, 4, 7, FALSE, TRUE, TRUE, TRUE, TRUE, 2, NULL, MD_FILE, UD_FILE);
 
     if ((fapl = H5Pcopy(orig_fapl)) < 0)
         FAIL_STACK_ERROR;
 
     /* fapl, use_latest_format, only_meta_page, page_buf_size, config */
-    if (vfd_swmr_fapl_augment(fapl, TRUE, FALSE, 4096, &config) < 0)
+    if (vfd_swmr_fapl_augment(fapl, TRUE, FALSE, 4096, config) < 0)
         FAIL_STACK_ERROR;
 
     if ((fcpl = vfd_swmr_create_fcpl(H5F_FSPACE_STRATEGY_PAGE, 4096)) < 0) {
@@ -4935,11 +4941,13 @@ test_updater_generate_md_checksums(hid_t orig_fapl, hbool_t file_create)
         FAIL_STACK_ERROR;
 
     /* Verify contents of checksum file and updater files */
-    if (verify_ud_chk(md_file_path_name, config.updater_file_path) < 0)
+    if (verify_ud_chk(md_file_path_name, config->updater_file_path) < 0)
         TEST_ERROR;
 
     /*  It's important to clean up the checksum and updater files. */
-    clean_chk_ud_files(md_file_path_name, config.updater_file_path);
+    clean_chk_ud_files(md_file_path_name, config->updater_file_path);
+
+    HDfree(config);
 
     PASSED();
 
@@ -4955,7 +4963,10 @@ error:
     H5E_END_TRY;
 
     /*  It's important to clean up the chechsum and updater files. */
-    clean_chk_ud_files(md_file_path_name, config.updater_file_path);
+    if (md_file_path_name && config)
+        clean_chk_ud_files(md_file_path_name, config->updater_file_path);
+
+    HDfree(config);
 
     return 1;
 
diff --git a/test/vfd_swmr_attrdset_writer.c b/test/vfd_swmr_attrdset_writer.c
index 85ceb01..2602abe 100644
--- a/test/vfd_swmr_attrdset_writer.c
+++ b/test/vfd_swmr_attrdset_writer.c
@@ -66,16 +66,6 @@ typedef struct {
     hbool_t      use_vfd_swmr;       /* For -S option */
 } state_t;
 
-/* Initializations for state_t */
-#define ALL_HID_INITIALIZER                                                                                  \
-    (state_t)                                                                                                \
-    {                                                                                                        \
-        .file = H5I_INVALID_HID, .one_by_one_sid = H5I_INVALID_HID, .filename = "",                          \
-        .filetype = H5T_NATIVE_UINT32, .asteps = 0, .csteps = 1, .dattrs = 0, .use_np = TRUE,                \
-        .use_vfd_swmr = TRUE, .compact = FALSE, .contig = FALSE, .chunked = FALSE, .vl_attr = FALSE,         \
-        .mod_attr = FALSE, .update_interval = READER_WAIT_TICKS                                              \
-    }
-
 /* Structure to hold info for different dataset types */
 typedef struct {
     hid_t    compact_did;          /* ID for compact dataset */
@@ -226,7 +216,23 @@ state_init(state_t *s, int argc, const char *const *argv)
     const char *           s_opts   = "pgkvmbqSNa:d:u:c:";
     struct h5_long_options l_opts[] = {{NULL, 0, '\0'}};
 
-    *s = ALL_HID_INITIALIZER;
+    s->file            = H5I_INVALID_HID;
+    s->one_by_one_sid  = H5I_INVALID_HID;
+    s->filetype        = H5T_NATIVE_UINT32;
+    s->asteps          = 0;
+    s->csteps          = 1;
+    s->dattrs          = 0;
+    s->use_np          = TRUE;
+    s->use_vfd_swmr    = TRUE;
+    s->compact         = FALSE;
+    s->contig          = FALSE;
+    s->chunked         = FALSE;
+    s->vl_attr         = FALSE;
+    s->mod_attr        = FALSE;
+    s->update_interval = READER_WAIT_TICKS;
+
+    HDmemset(s->filename, 0, PATH_MAX);
+    HDmemset(s->progname, 0, PATH_MAX);
 
     if (H5_basename(argv[0], &tfile) < 0) {
         HDprintf("H5_basename failed\n");
@@ -1956,21 +1962,30 @@ error:
 int
 main(int argc, char **argv)
 {
-    hid_t                 fapl   = H5I_INVALID_HID;
-    hid_t                 fcpl   = H5I_INVALID_HID;
-    hbool_t               writer = FALSE;
-    state_t               s;
-    const char *          personality;
-    H5F_vfd_swmr_config_t config;
-    np_state_t            np;
-    dsets_state_t         ds;
-
-    if (!state_init(&s, argc, (const char *const *)argv)) {
+    hid_t                  fapl   = H5I_INVALID_HID;
+    hid_t                  fcpl   = H5I_INVALID_HID;
+    hbool_t                writer = FALSE;
+    state_t *              s      = NULL;
+    const char *           personality;
+    H5F_vfd_swmr_config_t *config = NULL;
+    np_state_t             np;
+    dsets_state_t          ds;
+
+    if (NULL == (s = HDcalloc(1, sizeof(state_t)))) {
+        HDprintf("memory allocation failed");
+        TEST_ERROR;
+    }
+    if (NULL == (config = HDcalloc(1, sizeof(H5F_vfd_swmr_config_t)))) {
+        HDprintf("memory allocation failed");
+        TEST_ERROR;
+    }
+
+    if (!state_init(s, argc, (const char *const *)argv)) {
         HDprintf("state_init() failed\n");
         TEST_ERROR;
     }
 
-    personality = HDstrstr(s.progname, "vfd_swmr_attrdset_");
+    personality = HDstrstr(s->progname, "vfd_swmr_attrdset_");
 
     if (personality != NULL && HDstrcmp(personality, "vfd_swmr_attrdset_writer") == 0)
         writer = TRUE;
@@ -1984,10 +1999,10 @@ main(int argc, char **argv)
     /* config, tick_len, max_lag, presume_posix_semantics, writer,
      * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
      * md_file_path, md_file_name, updater_file_path */
-    init_vfd_swmr_config(&config, 4, 7, FALSE, writer, TRUE, FALSE, TRUE, 128, "./", "attrdset-shadow", NULL);
+    init_vfd_swmr_config(config, 4, 7, FALSE, writer, TRUE, FALSE, TRUE, 128, "./", "attrdset-shadow", NULL);
 
     /* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
-    if ((fapl = vfd_swmr_create_fapl(TRUE, s.use_vfd_swmr, TRUE, 4096, &config)) < 0) {
+    if ((fapl = vfd_swmr_create_fapl(TRUE, s->use_vfd_swmr, TRUE, 4096, config)) < 0) {
         HDprintf("vfd_swmr_create_fapl() failed\n");
         TEST_ERROR;
     }
@@ -1999,41 +2014,41 @@ main(int argc, char **argv)
     }
 
     if (writer) {
-        if ((s.file = H5Fcreate(s.filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0) {
+        if ((s->file = H5Fcreate(s->filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0) {
             HDprintf("H5Fcreate failed\n");
             TEST_ERROR;
         }
 
-        if (!create_dsets(&s, &ds)) {
+        if (!create_dsets(s, &ds)) {
             HDprintf("create_dsets() failed\n");
             TEST_ERROR;
         }
     }
     else {
-        if ((s.file = H5Fopen(s.filename, H5F_ACC_RDONLY, fapl)) < 0) {
+        if ((s->file = H5Fopen(s->filename, H5F_ACC_RDONLY, fapl)) < 0) {
             HDprintf("H5Fopen failed\n");
             TEST_ERROR;
         }
-        if (!open_dsets(&s, &ds)) {
+        if (!open_dsets(s, &ds)) {
             HDprintf("open_dsets() failed\n");
             TEST_ERROR;
         }
     }
 
     /* Initiailze named pipes */
-    if (s.use_np && !np_init(&np, writer)) {
+    if (s->use_np && !np_init(&np, writer)) {
         HDprintf("np_init() failed\n");
         TEST_ERROR;
     }
 
     if (writer) {
-        if (!perform_dsets_operations(&s, &ds, &config, &np)) {
+        if (!perform_dsets_operations(s, &ds, config, &np)) {
             HDprintf("perform_dsets_operations() failed\n");
             TEST_ERROR;
         }
     }
     else {
-        if (!verify_dsets_operations(&s, &ds, &config, &np)) {
+        if (!verify_dsets_operations(s, &ds, config, &np)) {
             HDprintf("verify_dsets_operations() failed\n");
             TEST_ERROR;
         }
@@ -2054,21 +2069,24 @@ main(int argc, char **argv)
         TEST_ERROR;
     }
 
-    if (H5Fclose(s.file) < 0) {
+    if (H5Fclose(s->file) < 0) {
         HDprintf("H5Fclose failed\n");
         TEST_ERROR;
     }
 
-    if (H5Sclose(s.one_by_one_sid) < 0) {
+    if (H5Sclose(s->one_by_one_sid) < 0) {
         HDprintf("H5Sclose failed\n");
         TEST_ERROR;
     }
 
-    if (s.use_np && !np_close(&np, writer)) {
+    if (s->use_np && !np_close(&np, writer)) {
         HDprintf("np_close() failed\n");
         TEST_ERROR;
     }
 
+    HDfree(s);
+    HDfree(config);
+
     return EXIT_SUCCESS;
 
 error:
@@ -2076,22 +2094,25 @@ error:
     {
         H5Pclose(fapl);
         H5Pclose(fcpl);
-        H5Fclose(s.file);
-        H5Sclose(s.one_by_one_sid);
+        H5Fclose(s->file);
+        H5Sclose(s->one_by_one_sid);
     }
     H5E_END_TRY;
 
-    if (s.use_np && np.fd_writer_to_reader >= 0)
+    if (s->use_np && np.fd_writer_to_reader >= 0)
         HDclose(np.fd_writer_to_reader);
 
-    if (s.use_np && np.fd_reader_to_writer >= 0)
+    if (s->use_np && np.fd_reader_to_writer >= 0)
         HDclose(np.fd_reader_to_writer);
 
-    if (s.use_np && !writer) {
+    if (s->use_np && !writer) {
         HDremove(np.fifo_writer_to_reader);
         HDremove(np.fifo_reader_to_writer);
     }
 
+    HDfree(s);
+    HDfree(config);
+
     return EXIT_FAILURE;
 } /* main */
 
diff --git a/test/vfd_swmr_bigset_writer.c b/test/vfd_swmr_bigset_writer.c
index 508fc3b..9f39c77 100644
--- a/test/vfd_swmr_bigset_writer.c
+++ b/test/vfd_swmr_bigset_writer.c
@@ -129,20 +129,22 @@ typedef struct _sources {
     hid_t ul, ur, bl, br;
 } sources_t;
 
-#define MANY_FILES 4
+#define N_FILES 4
 
 typedef struct {
     hid_t *     dataset;
     sources_t * sources;
-    hid_t       file[MANY_FILES];
+    hid_t       file[N_FILES];
     hid_t       dapl, filetype, memspace, one_by_one_sid, quadrant_dcpl;
     unsigned    ndatasets;
-    const char *filename[MANY_FILES];
+    const char *filename[N_FILES];
     char        progname[PATH_MAX];
     struct {
         quadrant_t ul, ur, bl, br, src;
     } quadrants;
-    unsigned int depth, cols, rows;
+    unsigned int depth;
+    unsigned int cols;
+    unsigned int rows;
     unsigned int asteps;
     unsigned int nsteps;
     unsigned int part_chunk;
@@ -187,61 +189,10 @@ typedef struct {
     struct timespec time;
 } exchange_info_t;
 
-/* Initializations for np_state_t */
-#define NP_INITIALIZER                                                                                       \
-    (np_state_t)                                                                                             \
-    {                                                                                                        \
-        .fifo_writer_to_reader = "./fifo_bigset_writer_to_reader",                                           \
-        .fifo_reader_to_writer = "./fifo_bigset_reader_to_writer", .fd_writer_to_reader = -1,                \
-        .fd_reader_to_writer = -1, .notify = 0, .verify = 0                                                  \
-    }
-
-static inline state_t
-state_initializer(void)
-{
-    return (state_t){.memspace         = H5I_INVALID_HID,
-                     .dapl             = H5I_INVALID_HID,
-                     .file             = {H5I_INVALID_HID, H5I_INVALID_HID, H5I_INVALID_HID, H5I_INVALID_HID},
-                     .filetype         = H5T_NATIVE_UINT32,
-                     .one_by_one_sid   = H5I_INVALID_HID,
-                     .quadrant_dcpl    = H5I_INVALID_HID,
-                     .depth            = DEPTH,
-                     .rows             = ROWS,
-                     .cols             = COLS,
-                     .ndatasets        = 5,
-                     .asteps           = 10,
-                     .nsteps           = 100,
-                     .part_chunk       = 0,
-                     .skip_chunk       = SKIP_CHUNK,
-                     .over_extend      = 1,
-                     .filename         = {"", "", "", ""},
-                     .expand_2d        = false,
-                     .test_3d          = false,
-                     .vds              = vds_off,
-                     .use_vfd_swmr     = true,
-                     .use_legacy_swmr  = false,
-                     .use_named_pipe   = true,
-                     .use_aux_proc     = false,
-                     .do_perf          = false,
-                     .cross_chunk_read = false,
-                     .writer           = true,
-                     .fixed_array      = false,
-                     .one_dee_max_dims = {ROWS, H5S_UNLIMITED},
-                     .chunk_dims       = {ROWS, COLS},
-                     .fsp_size         = FSP_SIZE,
-                     .page_buf_size    = PAGE_BUF_SIZE,
-                     .tick_len         = TICK_LEN,
-                     .max_lag          = MAX_LAG,
-                     .flush_raw_data   = false,
-                     .mdc_init_size    = 0,
-                     .chunk_cache_size = 0,
-                     .deflate_level    = 0,
-                     .ival             = (struct timespec){.tv_sec = MAX_READ_LEN_IN_SECONDS, .tv_nsec = 0}};
-}
-
 static bool state_init(state_t *, int, char **);
 
-static hsize_t two_dee_max_dims[RANK2], three_dee_max_dims[RANK3];
+static hsize_t two_dee_max_dims[RANK2];
+static hsize_t three_dee_max_dims[RANK3];
 
 static void
 usage(const char *progname)
@@ -324,7 +275,6 @@ state_init(state_t *s, int argc, char **argv)
 {
     unsigned long     tmp;
     int               opt;
-    unsigned          i;
     const hsize_t     dims  = 1;
     char *            tfile = NULL;
     char *            end;
@@ -336,7 +286,49 @@ state_init(state_t *s, int argc, char **argv)
     const char *           s_opts   = "ACFMNPRSTVa:bc:d:e:f:g:j:k:l:m:n:o:p:qr:s:tu:v:w:";
     struct h5_long_options l_opts[] = {{NULL, 0, '\0'}};
 
-    *s = state_initializer();
+    s->memspace         = H5I_INVALID_HID;
+    s->dapl             = H5I_INVALID_HID;
+    s->filetype         = H5T_NATIVE_UINT32;
+    s->one_by_one_sid   = H5I_INVALID_HID;
+    s->quadrant_dcpl    = H5I_INVALID_HID;
+    s->depth            = DEPTH;
+    s->rows             = ROWS;
+    s->cols             = COLS;
+    s->ndatasets        = 5;
+    s->asteps           = 10;
+    s->nsteps           = 100;
+    s->part_chunk       = 0;
+    s->skip_chunk       = SKIP_CHUNK;
+    s->over_extend      = 1;
+    s->expand_2d        = false;
+    s->test_3d          = false;
+    s->vds              = vds_off;
+    s->use_vfd_swmr     = true;
+    s->use_legacy_swmr  = false;
+    s->use_named_pipe   = true;
+    s->use_aux_proc     = false;
+    s->do_perf          = false;
+    s->cross_chunk_read = false;
+    s->writer = true, s->fixed_array = false, s->one_dee_max_dims[0] = ROWS;
+    s->one_dee_max_dims[1] = H5S_UNLIMITED;
+    s->chunk_dims[0]       = ROWS;
+    s->chunk_dims[1]       = COLS;
+    s->fsp_size            = FSP_SIZE;
+    s->page_buf_size       = PAGE_BUF_SIZE;
+    s->tick_len            = TICK_LEN;
+    s->max_lag             = MAX_LAG;
+    s->flush_raw_data      = false;
+    s->mdc_init_size       = 0;
+    s->chunk_cache_size    = 0;
+    s->deflate_level       = 0;
+
+    s->ival.tv_sec  = MAX_READ_LEN_IN_SECONDS;
+    s->ival.tv_nsec = 0;
+
+    for (int i = 0; i < N_FILES; i++) {
+        s->file[i]     = H5I_INVALID_HID;
+        s->filename[i] = "";
+    }
 
     if (H5_basename(argv[0], &tfile) < 0) {
         HDfprintf(stderr, "H5_basename failed\n");
@@ -448,9 +440,10 @@ state_init(state_t *s, int argc, char **argv)
                     s->part_chunk = (unsigned)tmp;
                 else if (opt == 'l') {
                     /* Translate the tick number to time represented by the timespec struct */
-                    float    time = (float)(((unsigned)tmp * TICK_LEN) / 10.0);
-                    unsigned sec  = (unsigned)time;
-                    unsigned nsec = (unsigned)((time - sec) * 10 * 1000 * 1000);
+                    unsigned n_ticks = (unsigned)tmp * TICK_LEN;
+                    float    time    = (float)n_ticks / 10.0F;
+                    long     sec     = (long)time;
+                    long     nsec    = (long)((time - (float)sec) * 10 * 1000 * 1000);
 
                     s->ival.tv_sec  = sec;
                     s->ival.tv_nsec = nsec;
@@ -666,7 +659,7 @@ state_init(state_t *s, int argc, char **argv)
         TEST_ERROR;
     }
 
-    for (i = 0; i < s->ndatasets; i++) {
+    for (unsigned i = 0; i < s->ndatasets; i++) {
         s->dataset[i]    = H5I_INVALID_HID;
         s->sources[i].ul = s->sources[i].ur = s->sources[i].bl = s->sources[i].br = H5I_INVALID_HID;
     }
@@ -938,7 +931,12 @@ error:
 static bool
 np_init(np_state_t *np, bool writer)
 {
-    *np = NP_INITIALIZER;
+    np->fifo_writer_to_reader = "./fifo_bigset_writer_to_reader";
+    np->fifo_reader_to_writer = "./fifo_bigset_reader_to_writer";
+    np->fd_writer_to_reader   = -1;
+    np->fd_reader_to_writer   = -1;
+    np->notify                = 0;
+    np->verify                = 0;
 
     /*
      * Use two named pipes(FIFO) to coordinate the writer and reader for
@@ -1028,11 +1026,11 @@ error:
 
 /* Wait for the writer's notice before starting validation */
 static int
-reader_verify(np_state_t np, int verify)
+reader_verify(np_state_t *np, int verify)
 {
     int notify;
 
-    if (HDread(np.fd_writer_to_reader, &notify, sizeof(int)) < 0) {
+    if (HDread(np->fd_writer_to_reader, &notify, sizeof(int)) < 0) {
         HDfprintf(stderr, "HDread failed\n");
         TEST_ERROR;
     }
@@ -1103,7 +1101,7 @@ error:
  * This time period is from the writer finishing dataset creation to the reader finishing
  * the validation of dataset creation */
 static int
-reader_check_time_and_notify_writer(np_state_t *np, state_t s)
+reader_check_time_and_notify_writer(np_state_t *np, state_t *s)
 {
     struct timespec last = {0, 0};
 
@@ -1116,7 +1114,7 @@ reader_check_time_and_notify_writer(np_state_t *np, state_t s)
     /* If the dataset validation takes longer than the expected time, issue a warning.
      * This time period is from the writer finishing dataset creation to the reader finishing
      * the validation of dataset creation */
-    if (below_speed_limit(&last, &(s.ival))) {
+    if (below_speed_limit(&last, &(s->ival))) {
         AT();
         HDfprintf(stderr, "Warning: dataset validation took too long to finish\n");
     }
@@ -1242,14 +1240,13 @@ md_ck_cb(char *md_file_path, uint64_t updater_seq_num)
     if (chk_fp && HDfclose(chk_fp) != 0)
         FAIL_STACK_ERROR;
 
-    if (buf)
-        HDfree(buf);
+    HDfree(buf);
 
     return 0;
 
 error:
-    if (buf)
-        HDfree(buf);
+    HDfree(buf);
+
     if (md_fp)
         HDfclose(md_fp);
     if (chk_fp)
@@ -1580,13 +1577,13 @@ error:
 }
 
 static bool
-create_dsets(state_t s)
+create_dsets(state_t *s)
 {
     struct timespec start_time, end_time;
     unsigned int    which;
 
     /* For checking the time spent in dataset creation.  It's for running the writer alone */
-    if (s.do_perf) {
+    if (s->do_perf) {
         if (HDclock_gettime(CLOCK_MONOTONIC, &start_time) == -1) {
             HDfprintf(stderr, "HDclock_gettime failed");
             TEST_ERROR;
@@ -1596,14 +1593,14 @@ create_dsets(state_t s)
     /* Create NDATASETS datasets as the reader is doing verification.  So no communication with
      * the reader during the creation of datasets.
      */
-    for (which = 0; which < s.ndatasets; which++)
-        if (!create_extensible_dset(&s, which)) {
+    for (which = 0; which < s->ndatasets; which++)
+        if (!create_extensible_dset(s, which)) {
             HDfprintf(stderr, "create_extensible_dset failed: number %u\n", which);
             TEST_ERROR;
         }
 
     /* For checking the time spent in dataset creation.  It's for running the writer alone */
-    if (s.do_perf) {
+    if (s->do_perf) {
         if (HDclock_gettime(CLOCK_MONOTONIC, &end_time) == -1) {
             HDfprintf(stderr, "HDclock_gettime failed");
             TEST_ERROR;
@@ -1642,7 +1639,7 @@ error:
 }
 
 static mat_t *
-newmat(state_t s)
+newmat(state_t *s)
 {
     mat_t *mat;
 
@@ -1650,31 +1647,31 @@ newmat(state_t s)
      * If partial chunk is enabled, the chunk size along the growing dimension
      * is replaced with the partial size
      */
-    if (s.test_3d) {
-        if (s.part_chunk) {
-            mat        = HDmalloc(sizeof(*mat) + (s.part_chunk * s.rows * s.cols - 1) * sizeof(mat->elt[0]));
-            mat->depth = s.part_chunk;
+    if (s->test_3d) {
+        if (s->part_chunk) {
+            mat = HDmalloc(sizeof(*mat) + (s->part_chunk * s->rows * s->cols - 1) * sizeof(mat->elt[0]));
+            mat->depth = s->part_chunk;
         }
         else {
-            mat        = HDmalloc(sizeof(*mat) + (s.depth * s.rows * s.cols - 1) * sizeof(mat->elt[0]));
-            mat->depth = s.depth;
+            mat        = HDmalloc(sizeof(*mat) + (s->depth * s->rows * s->cols - 1) * sizeof(mat->elt[0]));
+            mat->depth = s->depth;
         }
 
-        mat->rows = s.rows;
-        mat->cols = s.cols;
+        mat->rows = s->rows;
+        mat->cols = s->cols;
     }
     else {
-        if (s.part_chunk && !s.expand_2d) {
-            mat        = HDmalloc(sizeof(*mat) + (s.rows * s.part_chunk - 1) * sizeof(mat->elt[0]));
+        if (s->part_chunk && !s->expand_2d) {
+            mat        = HDmalloc(sizeof(*mat) + (s->rows * s->part_chunk - 1) * sizeof(mat->elt[0]));
             mat->depth = 1;
-            mat->rows  = s.rows;
-            mat->cols  = s.part_chunk;
+            mat->rows  = s->rows;
+            mat->cols  = s->part_chunk;
         }
         else {
-            mat        = HDmalloc(sizeof(*mat) + (s.rows * s.cols - 1) * sizeof(mat->elt[0]));
+            mat        = HDmalloc(sizeof(*mat) + (s->rows * s->cols - 1) * sizeof(mat->elt[0]));
             mat->depth = 1;
-            mat->rows  = s.rows;
-            mat->cols  = s.cols;
+            mat->rows  = s->rows;
+            mat->cols  = s->cols;
         }
     }
 
@@ -1771,7 +1768,7 @@ verify_matrix(mat_t *mat, unsigned int which, base_t base)
 }
 
 static unsigned int
-calc_total_steps(state_t s)
+calc_total_steps(state_t *s)
 {
     unsigned int total_steps = 0;
 
@@ -1781,20 +1778,20 @@ calc_total_steps(state_t s)
      * 60.  When the size of the partial chunk along the growing dimension is 5
      * (treated as the new chunk size), the number of steps becomes 12.
      */
-    if (s.test_3d) {
-        if (s.part_chunk)
-            total_steps = s.nsteps * s.depth / s.part_chunk;
+    if (s->test_3d) {
+        if (s->part_chunk)
+            total_steps = s->nsteps * s->depth / s->part_chunk;
         else
-            total_steps = s.nsteps;
+            total_steps = s->nsteps;
     }
-    else if (s.expand_2d) {
-        total_steps = s.nsteps;
+    else if (s->expand_2d) {
+        total_steps = s->nsteps;
     }
     else {
-        if (s.part_chunk)
-            total_steps = s.nsteps * s.cols / s.part_chunk;
+        if (s->part_chunk)
+            total_steps = s->nsteps * s->cols / s->part_chunk;
         else
-            total_steps = s.nsteps;
+            total_steps = s->nsteps;
     }
 
     return total_steps;
@@ -2010,7 +2007,6 @@ verify_extensible_dset(state_t *s, unsigned int which, mat_t *mat, unsigned fini
     hsize_t      size2[RANK2], size3[RANK3];
     base_t       base, last;
     unsigned int nchunks, step, ofs;
-    int          i;
     h5_retry_t   retry;
     hbool_t      do_try; /* more tries remain */
 
@@ -2173,7 +2169,7 @@ error:
 }
 
 static bool
-verify_dsets(state_t s, np_state_t *np, mat_t *mat)
+verify_dsets(state_t *s, np_state_t *np, mat_t *mat)
 {
     unsigned        finished_step = 0;
     unsigned        which;
@@ -2189,16 +2185,16 @@ verify_dsets(state_t s, np_state_t *np, mat_t *mat)
         /* Receive the notice of the writer finishing creation,
          * including the number of chunks finished and the timestamp
          */
-        if (s.use_named_pipe && HDread(np->fd_writer_to_reader, &last, sizeof(last)) < 0) {
+        if (s->use_named_pipe && HDread(np->fd_writer_to_reader, &last, sizeof(last)) < 0) {
             HDfprintf(stderr, "HDread failed\n");
             TEST_ERROR;
         }
 
-        for (which = 0; which < s.ndatasets; which++) {
+        for (which = 0; which < s->ndatasets; which++) {
             /* Verify the chunks starting from the finished one in last round
              * to the ones written in this round
              */
-            if (!verify_extensible_dset(&s, which, mat, finished_step, last.step)) {
+            if (!verify_extensible_dset(s, which, mat, finished_step, last.step)) {
                 HDfprintf(stderr, "verify_extensible_dset failed\n");
                 TEST_ERROR;
             }
@@ -2210,7 +2206,7 @@ verify_dsets(state_t s, np_state_t *np, mat_t *mat)
         /* Make sure the chunk verification doesn't take longer than the expected time.
          * This time period is from the writer finishing chunks to the reader finishing
          * the validation of the chunks */
-        if (s.use_named_pipe && below_speed_limit(&(last.time), &(s.ival))) {
+        if (s->use_named_pipe && below_speed_limit(&(last.time), &(s->ival))) {
             AT();
             HDfprintf(stderr, "Warning: verify_extensible_dset took too long to finish\n");
         }
@@ -2218,7 +2214,7 @@ verify_dsets(state_t s, np_state_t *np, mat_t *mat)
         /* For checking the time lapse between the writer's finishing writing a batch of chunks
          * within a tick and the reader's finishing verifying those chunks
          */
-        if (s.use_named_pipe && s.do_perf) {
+        if (s->use_named_pipe && s->do_perf) {
             if (HDclock_gettime(CLOCK_MONOTONIC, &end_time) == -1) {
                 HDfprintf(stderr, "HDclock_gettime failed");
                 TEST_ERROR;
@@ -2238,7 +2234,7 @@ verify_dsets(state_t s, np_state_t *np, mat_t *mat)
     } while (finished_step < total_steps);
 
     /* Print out the performance information */
-    if (s.use_named_pipe && s.do_perf && counter)
+    if (s->use_named_pipe && s->do_perf && counter)
         HDfprintf(stdout, "Dataset verification: mean time = %lf, max time = %lf, min time = %lf\n",
                   total_time / (double)counter, max_time, min_time);
 
@@ -2456,20 +2452,20 @@ error:
 }
 
 static bool
-write_dsets(state_t s, np_state_t *np, mat_t *mat)
+write_dsets(state_t *s, np_state_t *np, mat_t *mat)
 {
     unsigned           last_step, step, total_steps, which;
     unsigned long long old_tick_num;
     H5F_t *            f = NULL;
     struct timespec    start_time, end_time;
 
-    if (NULL == (f = (H5F_t *)H5VL_object(s.file[0]))) {
+    if (NULL == (f = (H5F_t *)H5VL_object(s->file[0]))) {
         HDfprintf(stderr, "H5VL_object failed\n");
         TEST_ERROR;
     }
 
     /* For checking the time spent in writing data.  It's for running the writer alone */
-    if (s.do_perf) {
+    if (s->do_perf) {
         if (HDclock_gettime(CLOCK_MONOTONIC, &start_time) == -1) {
             HDfprintf(stderr, "HDclock_gettime failed");
             TEST_ERROR;
@@ -2488,10 +2484,10 @@ write_dsets(state_t s, np_state_t *np, mat_t *mat)
     for (step = 0; step < total_steps; step++) {
         /* Write as many as chunks before the tick number changes */
         if (f->shared->tick_num == old_tick_num) {
-            if (!s.skip_chunk || (s.skip_chunk && step % s.skip_chunk != 0)) {
-                for (which = 0; which < s.ndatasets; which++) {
+            if (!s->skip_chunk || (s->skip_chunk && step % s->skip_chunk != 0)) {
+                for (which = 0; which < s->ndatasets; which++) {
                     dbgf(2, "step %d which %d\n", step, which);
-                    if (!write_extensible_dset(&s, which, step, mat)) {
+                    if (!write_extensible_dset(s, which, step, mat)) {
                         HDfprintf(stderr, "write_extensible_dset failed\n");
                         TEST_ERROR;
                     }
@@ -2504,7 +2500,7 @@ write_dsets(state_t s, np_state_t *np, mat_t *mat)
          */
         if (f->shared->tick_num > old_tick_num || step == (total_steps - 1)) {
             last_step = step + 1;
-            if (s.use_named_pipe && notify_reader(np, last_step) < 0) {
+            if (s->use_named_pipe && notify_reader(np, last_step) < 0) {
                 HDfprintf(stderr, "notify_reader failed\n");
                 TEST_ERROR;
             }
@@ -2514,7 +2510,7 @@ write_dsets(state_t s, np_state_t *np, mat_t *mat)
     }
 
     /* For checking the time spent in writing data.  It's for running the writer alone */
-    if (s.do_perf) {
+    if (s->do_perf) {
         double throughput;
         double time_passed;
 
@@ -2526,13 +2522,13 @@ write_dsets(state_t s, np_state_t *np, mat_t *mat)
         time_passed = TIME_PASSED(start_time, end_time);
 
         /* Calculate the write speed */
-        if (s.test_3d)
+        if (s->test_3d)
             throughput =
-                ((double)(sizeof(unsigned int) * s.depth * s.rows * s.cols * s.nsteps * s.ndatasets)) /
+                ((double)(sizeof(unsigned int) * s->depth * s->rows * s->cols * s->nsteps * s->ndatasets)) /
                 time_passed;
         else
             throughput =
-                ((double)(sizeof(unsigned int) * s.rows * s.cols * s.nsteps * s.ndatasets)) / time_passed;
+                ((double)(sizeof(unsigned int) * s->rows * s->cols * s->nsteps * s->ndatasets)) / time_passed;
 
         /* Print out the performance information */
         HDfprintf(stdout,
@@ -2550,14 +2546,20 @@ error:
 int
 main(int argc, char **argv)
 {
-    mat_t *    mat  = NULL;
-    hid_t      fcpl = H5I_INVALID_HID;
-    unsigned   which;
-    state_t    s;
-    np_state_t np;
-    size_t     i;
-
-    if (!state_init(&s, argc, argv)) {
+    mat_t *                mat    = NULL;
+    hid_t                  fcpl   = H5I_INVALID_HID;
+    state_t *              s      = NULL;
+    np_state_t *           np     = NULL;
+    H5F_vfd_swmr_config_t *config = NULL;
+
+    if (NULL == (s = HDcalloc(1, sizeof(state_t))))
+        TEST_ERROR;
+    if (NULL == (np = HDcalloc(1, sizeof(np_state_t))))
+        TEST_ERROR;
+    if (NULL == (config = HDcalloc(1, sizeof(H5F_vfd_swmr_config_t))))
+        TEST_ERROR;
+
+    if (!state_init(s, argc, argv)) {
         HDfprintf(stderr, "state_init failed\n");
         TEST_ERROR;
     }
@@ -2568,18 +2570,19 @@ main(int argc, char **argv)
     }
 
     /* Set fs_strategy (file space strategy) and fs_page_size (file space page size) */
-    if ((fcpl = vfd_swmr_create_fcpl(H5F_FSPACE_STRATEGY_PAGE, s.fsp_size)) < 0) {
+    if ((fcpl = vfd_swmr_create_fcpl(H5F_FSPACE_STRATEGY_PAGE, s->fsp_size)) < 0) {
         HDfprintf(stderr, "vfd_swmr_create_fcpl failed\n");
         TEST_ERROR;
     }
 
-    for (i = 0; i < NELMTS(s.file); i++) {
-        hid_t                 fapl;
-        H5F_vfd_swmr_config_t config;
-        H5AC_cache_config_t   mdc_config;
+    for (size_t i = 0; i < NELMTS(s->file); i++) {
+        hid_t               fapl;
+        H5AC_cache_config_t mdc_config;
+
+        HDmemset(config, 0, sizeof(H5F_vfd_swmr_config_t));
 
-        if (s.vds != vds_multi && i > 0) {
-            s.file[i] = s.file[0];
+        if (s->vds != vds_multi && i > 0) {
+            s->file[i] = s->file[0];
             continue;
         }
 
@@ -2591,29 +2594,29 @@ main(int argc, char **argv)
 
         /* If using the auxiliary process, the writer creates the updater files.
          * The reader uses the metadata file generated by the auxiliary process. */
-        if (s.writer) {
-            init_vfd_swmr_config(&config, s.tick_len, s.max_lag, FALSE, s.writer, FALSE, TRUE,
-                                 s.flush_raw_data, 128, "./", "bigset-shadow-%zu", "bigset_updater", i);
+        if (s->writer) {
+            init_vfd_swmr_config(config, s->tick_len, s->max_lag, FALSE, s->writer, FALSE, TRUE,
+                                 s->flush_raw_data, 128, "./", "bigset-shadow-%zu", "bigset_updater", i);
         }
         else {
-            init_vfd_swmr_config(&config, s.tick_len, s.max_lag, FALSE, s.writer, TRUE, FALSE,
-                                 s.flush_raw_data, 128, "./", "mdfile", NULL);
+            init_vfd_swmr_config(config, s->tick_len, s->max_lag, FALSE, s->writer, TRUE, FALSE,
+                                 s->flush_raw_data, 128, "./", "mdfile", NULL);
         }
 #else
 
-        if (s.vds == vds_multi || s.vds == vds_single) {
-            init_vfd_swmr_config(&config, s.tick_len, s.max_lag, TRUE, s.writer, TRUE, FALSE,
-                                 s.flush_raw_data, 128, "", "", NULL);
+        if (s->vds == vds_multi || s->vds == vds_single) {
+            init_vfd_swmr_config(config, s->tick_len, s->max_lag, TRUE, s->writer, TRUE, FALSE,
+                                 s->flush_raw_data, 128, "", "%s", NULL, "");
         }
         else {
-            init_vfd_swmr_config(&config, s.tick_len, s.max_lag, FALSE, s.writer, TRUE, FALSE,
-                                 s.flush_raw_data, 128, "./", "bigset-shadow-%zu", NULL, i);
+            init_vfd_swmr_config(config, s->tick_len, s->max_lag, FALSE, s->writer, TRUE, FALSE,
+                                 s->flush_raw_data, 128, "./", "bigset-shadow-%zu", NULL, i);
         }
 
 #endif
 
         /* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
-        if ((fapl = vfd_swmr_create_fapl(true, s.use_vfd_swmr, true, s.page_buf_size, &config)) < 0) {
+        if ((fapl = vfd_swmr_create_fapl(true, s->use_vfd_swmr, true, s->page_buf_size, config)) < 0) {
             HDfprintf(stderr, "vfd_swmr_create_fapl failed");
             TEST_ERROR;
         }
@@ -2621,7 +2624,7 @@ main(int argc, char **argv)
         /* Set the initial size for the metadata cache between 1 and 32 in megabytes.
          * Zero means using the default value, which is no-op.
          */
-        if (s.mdc_init_size) {
+        if (s->mdc_init_size) {
             mdc_config.version = H5AC__CURR_CACHE_CONFIG_VERSION;
 
             if (H5Pget_mdc_config(fapl, &mdc_config) < 0) {
@@ -2631,7 +2634,7 @@ main(int argc, char **argv)
 
             /* Convert the value to megabytes */
             mdc_config.set_initial_size = TRUE;
-            mdc_config.initial_size     = s.mdc_init_size * 1024 * 1024;
+            mdc_config.initial_size     = s->mdc_init_size * 1024 * 1024;
 
             if (H5Pset_mdc_config(fapl, &mdc_config) < 0) {
                 HDfprintf(stderr, "H5Pset_mdc_config failed");
@@ -2652,11 +2655,11 @@ main(int argc, char **argv)
         }
 #endif
 
-        s.file[i] = s.writer ? H5Fcreate(s.filename[i], H5F_ACC_TRUNC, fcpl, fapl)
-                             : H5Fopen(s.filename[i], H5F_ACC_RDONLY, fapl);
+        s->file[i] = s->writer ? H5Fcreate(s->filename[i], H5F_ACC_TRUNC, fcpl, fapl)
+                               : H5Fopen(s->filename[i], H5F_ACC_RDONLY, fapl);
 
-        if (s.file[i] == H5I_INVALID_HID) {
-            HDfprintf(stderr, s.writer ? "H5Fcreate failed" : "H5Fopen failed");
+        if (s->file[i] == H5I_INVALID_HID) {
+            HDfprintf(stderr, s->writer ? "H5Fcreate failed" : "H5Fopen failed");
             TEST_ERROR;
         }
 
@@ -2667,15 +2670,15 @@ main(int argc, char **argv)
     }
 
     /* Initiailze named pipes */
-    if (s.use_named_pipe && !np_init(&np, s.writer)) {
+    if (s->use_named_pipe && !np_init(np, s->writer)) {
         HDfprintf(stderr, "np_init() failed\n");
         TEST_ERROR;
     }
 
-    if (s.writer) {
+    if (s->writer) {
         /* Writer tells reader to start */
-        np.notify = 1;
-        if (s.use_named_pipe && HDwrite(np.fd_writer_to_reader, &np.notify, sizeof(int)) < 0) {
+        np->notify = 1;
+        if (s->use_named_pipe && HDwrite(np->fd_writer_to_reader, &(np->notify), sizeof(int)) < 0) {
             HDfprintf(stderr, "HDwrite failed\n");
             TEST_ERROR;
         }
@@ -2687,18 +2690,16 @@ main(int argc, char **argv)
         }
 
         /* Call H5Fvfd_swmr_end_tick to end the tick.  No communication with the reader in this step */
-        if (s.use_vfd_swmr && s.use_named_pipe) {
-            unsigned long j;
-
-            if (s.vds != vds_multi) {
-                if (H5Fvfd_swmr_end_tick(s.file[0]) < 0) {
+        if (s->use_vfd_swmr && s->use_named_pipe) {
+            if (s->vds != vds_multi) {
+                if (H5Fvfd_swmr_end_tick(s->file[0]) < 0) {
                     HDfprintf(stderr, "H5Fvfd_swmr_end_tick failed\n");
                     TEST_ERROR;
                 }
             }
             else {
-                for (j = 0; j < NELMTS(s.file); j++)
-                    if (H5Fvfd_swmr_end_tick(s.file[j]) < 0) {
+                for (unsigned long j = 0; j < NELMTS(s->file); j++)
+                    if (H5Fvfd_swmr_end_tick(s->file[j]) < 0) {
                         HDfprintf(stderr, "H5Fvfd_swmr_end_tick failed\n");
                         TEST_ERROR;
                     }
@@ -2707,29 +2708,29 @@ main(int argc, char **argv)
 
         /* Notify the reader of finishing dataset creation by sending the timestamp
          * and wait for the reader to finish validation before proceeding */
-        np.verify = 2;
-        if (s.use_named_pipe && notify_and_wait_for_reader(&s, &np) < 0) {
+        np->verify = 2;
+        if (s->use_named_pipe && notify_and_wait_for_reader(s, np) < 0) {
             HDfprintf(stderr, "notify_and_wait_for_reader failed\n");
             TEST_ERROR;
         }
 
         /* Enable the Legacy SWMR writing mode if specified */
-        if (s.use_legacy_swmr && H5Fstart_swmr_write(s.file[0]) < 0) {
+        if (s->use_legacy_swmr && H5Fstart_swmr_write(s->file[0]) < 0) {
             HDfprintf(stderr, "failed to start the Legacy SWMR writing mode\n");
             TEST_ERROR;
         }
 
         /* Start to write chunks.  The writer writes as many chunks as possible within a tick, then
          * notify the reader.  But it doesn't receive back the reader's notice. */
-        if (!write_dsets(s, &np, mat)) {
+        if (!write_dsets(s, np, mat)) {
             HDfprintf(stderr, "write_dsets failed");
             TEST_ERROR;
         }
     }
     else {
         /* Wait for the writer's notice before starting the validation of dataset creation */
-        np.verify = 1;
-        if (s.use_named_pipe && reader_verify(np, np.verify) < 0) {
+        np->verify = 1;
+        if (s->use_named_pipe && reader_verify(np, np->verify) < 0) {
             HDfprintf(stderr, "reader_verify failed\n");
             TEST_ERROR;
         }
@@ -2737,7 +2738,7 @@ main(int argc, char **argv)
         /* Open all the datasets as the writer is creating them.  No communication with
          * the writer during this step.
          */
-        if (!open_extensible_dset(&s)) {
+        if (!open_extensible_dset(s)) {
             HDfprintf(stderr, "open_extensible_dset failed\n");
             TEST_ERROR;
         }
@@ -2746,8 +2747,8 @@ main(int argc, char **argv)
          * Make sure the dataset creation doesn't take longer than the expected time.
          * This time period is from the writer finishing dataset creation to the reader finishing
          * the validation of dataset creation */
-        np.notify = 2;
-        if (s.use_named_pipe && reader_check_time_and_notify_writer(&np, s) < 0) {
+        np->notify = 2;
+        if (s->use_named_pipe && reader_check_time_and_notify_writer(np, s) < 0) {
             HDfprintf(stderr, "reader_check_time_and_notify_writer failed\n");
             TEST_ERROR;
         }
@@ -2755,14 +2756,14 @@ main(int argc, char **argv)
         /* Once the reader starts to verify the datasets, it doesn't notify the writer any info.
          * Both the reader and writer finish by themselves.
          */
-        if (!verify_dsets(s, &np, mat)) {
+        if (!verify_dsets(s, np, mat)) {
             HDfprintf(stderr, "verify_dsets failed\n");
             TEST_ERROR;
         }
     }
 
-    for (which = 0; which < s.ndatasets; which++)
-        if (!close_extensible_dset(&s, which)) {
+    for (unsigned which = 0; which < s->ndatasets; which++)
+        if (!close_extensible_dset(s, which)) {
             HDfprintf(stderr, "close_extensible_dset failed\n");
             TEST_ERROR;
         }
@@ -2772,18 +2773,20 @@ main(int argc, char **argv)
         TEST_ERROR;
     }
 
-    if (s.use_named_pipe && !np_close(&np, s.writer)) {
+    if (s->use_named_pipe && !np_close(np, s->writer)) {
         HDfprintf(stderr, "np_close() failed\n");
         TEST_ERROR;
     }
 
-    if (!state_destroy(&s)) {
+    if (!state_destroy(s)) {
         HDfprintf(stderr, "state_destroy failed\n");
         TEST_ERROR;
     }
 
-    if (mat)
-        HDfree(mat);
+    HDfree(mat);
+    HDfree(s);
+    HDfree(np);
+    HDfree(config);
 
     return EXIT_SUCCESS;
 
@@ -2792,24 +2795,26 @@ error:
     {
         H5Pclose(fcpl);
 
-        for (i = 0; i < NELMTS(s.file); i++)
-            H5Fclose(s.file[i]);
+        for (size_t i = 0; i < NELMTS(s->file); i++)
+            H5Fclose(s->file[i]);
     }
     H5E_END_TRY;
 
-    if (s.use_named_pipe && np.fd_writer_to_reader >= 0)
-        HDclose(np.fd_writer_to_reader);
+    if (s->use_named_pipe && np->fd_writer_to_reader >= 0)
+        HDclose(np->fd_writer_to_reader);
 
-    if (s.use_named_pipe && np.fd_reader_to_writer >= 0)
-        HDclose(np.fd_reader_to_writer);
+    if (s->use_named_pipe && np->fd_reader_to_writer >= 0)
+        HDclose(np->fd_reader_to_writer);
 
-    if (s.use_named_pipe && !s.writer) {
-        HDremove(np.fifo_writer_to_reader);
-        HDremove(np.fifo_reader_to_writer);
+    if (s->use_named_pipe && !s->writer) {
+        HDremove(np->fifo_writer_to_reader);
+        HDremove(np->fifo_reader_to_writer);
     }
 
-    if (mat)
-        HDfree(mat);
+    HDfree(mat);
+    HDfree(s);
+    HDfree(np);
+    HDfree(config);
 
     return EXIT_FAILURE;
 }
diff --git a/test/vfd_swmr_dsetchks_writer.c b/test/vfd_swmr_dsetchks_writer.c
index 8847afd..a97f84f 100644
--- a/test/vfd_swmr_dsetchks_writer.c
+++ b/test/vfd_swmr_dsetchks_writer.c
@@ -93,17 +93,6 @@ typedef struct {
     unsigned int ydecrs; /* -y <ydecrs> option */
 } state_t;
 
-/* Initializations for state_t */
-#define ALL_HID_INITIALIZER                                                                                  \
-    (state_t)                                                                                                \
-    {                                                                                                        \
-        .filename = "", .file = H5I_INVALID_HID, .filetype = H5T_NATIVE_UINT32,                              \
-        .update_interval = READER_WAIT_TICKS, .csteps = 1, .use_np = true, .use_vfd_swmr = true,             \
-        .use_filter = false, .flush_raw_data = true, .single_index = false, .implicit_index = false,         \
-        .fa_index = false, .ea_index = false, .bt2_index = false, .rows = 10, .cols = 5, .gwrites = 0,       \
-        .pwrites = 0, .twrites = 0, .lwrites = 0, .xincrs = 0, .ydecrs = 0                                   \
-    }
-
 /* Structure to hold info for different dataset types */
 typedef struct {
     hsize_t chunk_dims[2]; /* Chunk dimensions for all datasets except single_did */
@@ -268,7 +257,30 @@ state_init(state_t *s, int argc, char **argv)
     const char *           s_opts   = "siferom:n:x:y:g:p:t:l:bqSNUu:c:";
     struct h5_long_options l_opts[] = {{NULL, 0, '\0'}};
 
-    *s = ALL_HID_INITIALIZER;
+    s->file            = H5I_INVALID_HID;
+    s->filetype        = H5T_NATIVE_UINT32;
+    s->update_interval = READER_WAIT_TICKS;
+    s->csteps          = 1;
+    s->use_np          = TRUE;
+    s->use_vfd_swmr    = TRUE;
+    s->use_filter      = FALSE;
+    s->flush_raw_data  = TRUE;
+    s->single_index    = FALSE;
+    s->implicit_index  = FALSE;
+    s->fa_index        = FALSE;
+    s->ea_index        = FALSE;
+    s->bt2_index       = FALSE;
+    s->rows            = 10;
+    s->cols            = 5;
+    s->gwrites         = 0;
+    s->pwrites         = 0;
+    s->twrites         = 0;
+    s->lwrites         = 0;
+    s->xincrs          = 0;
+    s->ydecrs          = 0;
+
+    HDmemset(s->filename, 0, PATH_MAX);
+    HDmemset(s->progname, 0, PATH_MAX);
 
     if (H5_basename(argv[0], &tfile) < 0) {
         HDprintf("H5_basename failed\n");
@@ -2283,21 +2295,30 @@ error:
 int
 main(int argc, char **argv)
 {
-    hid_t                 fapl   = H5I_INVALID_HID;
-    hid_t                 fcpl   = H5I_INVALID_HID;
-    bool                  writer = false;
-    state_t               s;
-    const char *          personality;
-    H5F_vfd_swmr_config_t config;
-    np_state_t            np;
-    dsets_state_t         ds;
-
-    if (!state_init(&s, argc, argv)) {
+    hid_t                  fapl   = H5I_INVALID_HID;
+    hid_t                  fcpl   = H5I_INVALID_HID;
+    bool                   writer = false;
+    state_t *              s      = NULL;
+    const char *           personality;
+    H5F_vfd_swmr_config_t *config = NULL;
+    np_state_t             np;
+    dsets_state_t          ds;
+
+    if (NULL == (s = HDcalloc(1, sizeof(state_t)))) {
+        HDprintf("memory allocation failed");
+        TEST_ERROR;
+    }
+    if (NULL == (config = HDcalloc(1, sizeof(H5F_vfd_swmr_config_t)))) {
+        HDprintf("memory allocation failed");
+        TEST_ERROR;
+    }
+
+    if (!state_init(s, argc, argv)) {
         HDprintf("state_init() failed\n");
         TEST_ERROR;
     }
 
-    personality = HDstrstr(s.progname, "vfd_swmr_dsetchks_");
+    personality = HDstrstr(s->progname, "vfd_swmr_dsetchks_");
 
     if (personality != NULL && HDstrcmp(personality, "vfd_swmr_dsetchks_writer") == 0)
         writer = true;
@@ -2311,11 +2332,11 @@ main(int argc, char **argv)
     /* config, tick_len, max_lag, presume_posix_semantics, writer,
      * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
      * md_file_path, md_file_name, updater_file_path */
-    init_vfd_swmr_config(&config, 4, 7, FALSE, writer, TRUE, FALSE, s.flush_raw_data, 128, "./",
+    init_vfd_swmr_config(config, 4, 7, FALSE, writer, TRUE, FALSE, s->flush_raw_data, 128, "./",
                          "dsetchks-shadow", NULL);
 
     /* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
-    if ((fapl = vfd_swmr_create_fapl(true, s.use_vfd_swmr, true, 4096, &config)) < 0) {
+    if ((fapl = vfd_swmr_create_fapl(true, s->use_vfd_swmr, true, 4096, config)) < 0) {
         HDprintf("vfd_swmr_create_fapl() failed\n");
         TEST_ERROR;
     }
@@ -2327,43 +2348,43 @@ main(int argc, char **argv)
     }
 
     if (writer) {
-        if ((s.file = H5Fcreate(s.filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0) {
+        if ((s->file = H5Fcreate(s->filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0) {
             HDprintf("H5Fcreate failed\n");
             TEST_ERROR;
         }
 
-        if (!create_dsets(&s, &ds)) {
+        if (!create_dsets(s, &ds)) {
             HDprintf("create_dsets() failed\n");
             TEST_ERROR;
         }
     }
     else {
-        if ((s.file = H5Fopen(s.filename, H5F_ACC_RDONLY, fapl)) < 0) {
+        if ((s->file = H5Fopen(s->filename, H5F_ACC_RDONLY, fapl)) < 0) {
             HDprintf("H5Fopen failed\n");
             TEST_ERROR;
         }
-        if (!open_dsets(&s, &ds)) {
+        if (!open_dsets(s, &ds)) {
             HDprintf("open_dsets() failed\n");
             TEST_ERROR;
         }
     }
 
     /* Initiailze named pipes */
-    if (s.use_np && !np_init(&np, writer)) {
+    if (s->use_np && !np_init(&np, writer)) {
         HDprintf("np_init() failed\n");
         TEST_ERROR;
     }
 
     if (writer) {
 
-        if (!perform_dsets_operations(&s, &ds, &config, &np)) {
+        if (!perform_dsets_operations(s, &ds, config, &np)) {
             HDprintf("perform_dsets_operations() failed\n");
             TEST_ERROR;
         }
     }
     else {
 
-        if (!verify_dsets_operations(&s, &ds, &config, &np, false)) {
+        if (!verify_dsets_operations(s, &ds, config, &np, false)) {
             HDprintf("perform_dsets_operations() failed\n");
             TEST_ERROR;
         }
@@ -2384,9 +2405,9 @@ main(int argc, char **argv)
      * Nothing needs to be done for -x or -y options
      * (increase and decrease dataset dimension sizes).
      */
-    if (!s.flush_raw_data && !s.xincrs && !s.ydecrs && s.use_np) {
+    if (!s->flush_raw_data && !s->xincrs && !s->ydecrs && s->use_np) {
 
-        if (!closing_on_noflush(writer, &s, &ds, &config, &np))
+        if (!closing_on_noflush(writer, s, &ds, config, &np))
             TEST_ERROR;
     }
     else {
@@ -2396,17 +2417,20 @@ main(int argc, char **argv)
             TEST_ERROR;
         }
 
-        if (H5Fclose(s.file) < 0) {
+        if (H5Fclose(s->file) < 0) {
             HDprintf("H5Fclose failed\n");
             TEST_ERROR;
         }
 
-        if (s.use_np && !np_close(&np, writer)) {
+        if (s->use_np && !np_close(&np, writer)) {
             HDprintf("np_close() failed\n");
             TEST_ERROR;
         }
     }
 
+    HDfree(s);
+    HDfree(config);
+
     return EXIT_SUCCESS;
 
 error:
@@ -2414,21 +2438,24 @@ error:
     {
         H5Pclose(fapl);
         H5Pclose(fcpl);
-        H5Fclose(s.file);
+        H5Fclose(s->file);
     }
     H5E_END_TRY;
 
-    if (s.use_np && np.fd_writer_to_reader >= 0)
+    if (s->use_np && np.fd_writer_to_reader >= 0)
         HDclose(np.fd_writer_to_reader);
 
-    if (s.use_np && np.fd_reader_to_writer >= 0)
+    if (s->use_np && np.fd_reader_to_writer >= 0)
         HDclose(np.fd_reader_to_writer);
 
-    if (s.use_np && !writer) {
+    if (s->use_np && !writer) {
         HDremove(np.fifo_writer_to_reader);
         HDremove(np.fifo_reader_to_writer);
     }
 
+    HDfree(s);
+    HDfree(config);
+
     return EXIT_FAILURE;
 }
 
diff --git a/test/vfd_swmr_dsetops_writer.c b/test/vfd_swmr_dsetops_writer.c
index 8030be5..a238e95 100644
--- a/test/vfd_swmr_dsetops_writer.c
+++ b/test/vfd_swmr_dsetops_writer.c
@@ -91,17 +91,6 @@ typedef struct {
     unsigned int lastwrite; /* The last operation (-s, -r, -l or -w) performed. */
 } state_t;
 
-/* Initializations for state_t */
-#define ALL_HID_INITIALIZER                                                                                  \
-    (state_t)                                                                                                \
-    {                                                                                                        \
-        .filename = "", .file = H5I_INVALID_HID, .filetype = H5T_NATIVE_UINT32,                              \
-        .update_interval = READER_WAIT_TICKS, .csteps = 1, .use_np = true, .use_vfd_swmr = true,             \
-        .flush_raw_data = true, .compact = false, .compact_write = false, .compact_elmts = MAX_COMPACT_ELMS, \
-        .contig = false, .rows = 10, .cols = 5, .swrites = 0, .rwrites = 0, .lwrites = 0, .wwrites = 0,      \
-        .lastwrite = 0, .obj_ref = false, .reg_ref = false                                                   \
-    }
-
 /* Structure to hold info for different dataset types */
 typedef struct {
     hid_t      compact_did;  /* ID for compact dataset */
@@ -270,7 +259,29 @@ state_init(state_t *s, int argc, char **argv)
     const char *           s_opts   = "pte:gkm:n:s:r:l:w:bqSNUORu:c:";
     struct h5_long_options l_opts[] = {{NULL, 0, '\0'}};
 
-    *s = ALL_HID_INITIALIZER;
+    s->file            = H5I_INVALID_HID;
+    s->filetype        = H5T_NATIVE_UINT32;
+    s->update_interval = READER_WAIT_TICKS;
+    s->csteps          = 1;
+    s->use_np          = TRUE;
+    s->use_vfd_swmr    = TRUE;
+    s->flush_raw_data  = TRUE;
+    s->compact         = FALSE;
+    s->compact_write   = FALSE;
+    s->compact_elmts   = MAX_COMPACT_ELMS;
+    s->contig          = FALSE;
+    s->rows            = 10;
+    s->cols            = 5;
+    s->swrites         = 0;
+    s->rwrites         = 0;
+    s->lwrites         = 0;
+    s->wwrites         = 0;
+    s->lastwrite       = 0;
+    s->obj_ref         = FALSE;
+    s->reg_ref         = FALSE;
+
+    HDmemset(s->filename, 0, PATH_MAX);
+    HDmemset(s->progname, 0, PATH_MAX);
 
     if (H5_basename(argv[0], &tfile) < 0) {
         HDprintf("H5_basename failed\n");
@@ -2203,21 +2214,26 @@ error:
 int
 main(int argc, char **argv)
 {
-    hid_t                 fapl   = H5I_INVALID_HID;
-    hid_t                 fcpl   = H5I_INVALID_HID;
-    bool                  writer = FALSE;
-    state_t               s;
-    const char *          personality;
-    H5F_vfd_swmr_config_t config;
-    np_state_t            np;
-    dsets_state_t         ds;
-
-    if (!state_init(&s, argc, argv)) {
+    hid_t                  fapl   = H5I_INVALID_HID;
+    hid_t                  fcpl   = H5I_INVALID_HID;
+    bool                   writer = FALSE;
+    state_t *              s      = NULL;
+    const char *           personality;
+    H5F_vfd_swmr_config_t *config = NULL;
+    np_state_t             np;
+    dsets_state_t          ds;
+
+    if (NULL == (s = HDcalloc(1, sizeof(state_t))))
+        TEST_ERROR;
+    if (NULL == (config = HDcalloc(1, sizeof(H5F_vfd_swmr_config_t))))
+        TEST_ERROR;
+
+    if (!state_init(s, argc, argv)) {
         HDprintf("state_init() failed\n");
         TEST_ERROR;
     }
 
-    personality = HDstrstr(s.progname, "vfd_swmr_dsetops_");
+    personality = HDstrstr(s->progname, "vfd_swmr_dsetops_");
 
     if (personality != NULL && HDstrcmp(personality, "vfd_swmr_dsetops_writer") == 0)
         writer = true;
@@ -2231,11 +2247,11 @@ main(int argc, char **argv)
     /* config, tick_len, max_lag, presume_posix_semantics, writer,
      * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
      * md_file_path, md_file_name, updater_file_path */
-    init_vfd_swmr_config(&config, 4, 7, FALSE, writer, TRUE, FALSE, s.flush_raw_data, 128, "./",
+    init_vfd_swmr_config(config, 4, 7, FALSE, writer, TRUE, FALSE, s->flush_raw_data, 128, "./",
                          "dsetops-shadow", NULL);
 
     /* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
-    if ((fapl = vfd_swmr_create_fapl(true, s.use_vfd_swmr, true, 4096, &config)) < 0) {
+    if ((fapl = vfd_swmr_create_fapl(true, s->use_vfd_swmr, true, 4096, config)) < 0) {
         HDprintf("vfd_swmr_create_fapl() failed\n");
         TEST_ERROR;
     }
@@ -2247,43 +2263,43 @@ main(int argc, char **argv)
     }
 
     if (writer) {
-        if ((s.file = H5Fcreate(s.filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0) {
+        if ((s->file = H5Fcreate(s->filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0) {
             HDprintf("H5Fcreate failed\n");
             TEST_ERROR;
         }
 
-        if (!create_dsets(&s, &ds)) {
+        if (!create_dsets(s, &ds)) {
             HDprintf("create_dsets() failed\n");
             TEST_ERROR;
         }
     }
     else {
-        if ((s.file = H5Fopen(s.filename, H5F_ACC_RDONLY, fapl)) < 0) {
+        if ((s->file = H5Fopen(s->filename, H5F_ACC_RDONLY, fapl)) < 0) {
             HDprintf("H5Fopen failed\n");
             TEST_ERROR;
         }
-        if (!open_dsets(&s, &ds)) {
+        if (!open_dsets(s, &ds)) {
             HDprintf("open_dsets() failed\n");
             TEST_ERROR;
         }
     }
 
     /* Initiailze named pipes */
-    if (s.use_np && !np_init(&np, writer)) {
+    if (s->use_np && !np_init(&np, writer)) {
         HDprintf("np_init() failed\n");
         TEST_ERROR;
     }
 
     if (writer) {
 
-        if (!perform_dsets_operations(&s, &ds, &config, &np)) {
+        if (!perform_dsets_operations(s, &ds, config, &np)) {
             HDprintf("perform_dsets_operations() failed\n");
             TEST_ERROR;
         }
     }
     else {
 
-        if (!verify_dsets_operations(&s, &ds, &config, &np, false)) {
+        if (!verify_dsets_operations(s, &ds, config, &np, false)) {
             HDprintf("perform_dsets_operations() failed\n");
             TEST_ERROR;
         }
@@ -2299,9 +2315,9 @@ main(int argc, char **argv)
         TEST_ERROR;
     }
 
-    if (!s.flush_raw_data && s.use_np) {
+    if (!s->flush_raw_data && s->use_np) {
 
-        if (!closing_on_noflush(writer, &s, &ds, &config, &np))
+        if (!closing_on_noflush(writer, s, &ds, config, &np))
             TEST_ERROR;
     }
     else {
@@ -2311,17 +2327,20 @@ main(int argc, char **argv)
             TEST_ERROR;
         }
 
-        if (H5Fclose(s.file) < 0) {
+        if (H5Fclose(s->file) < 0) {
             HDprintf("H5Fclose failed\n");
             TEST_ERROR;
         }
 
-        if (s.use_np && !np_close(&np, writer)) {
+        if (s->use_np && !np_close(&np, writer)) {
             HDprintf("np_close() failed\n");
             TEST_ERROR;
         }
     }
 
+    HDfree(s);
+    HDfree(config);
+
     return EXIT_SUCCESS;
 
 error:
@@ -2329,21 +2348,24 @@ error:
     {
         H5Pclose(fapl);
         H5Pclose(fcpl);
-        H5Fclose(s.file);
+        H5Fclose(s->file);
     }
     H5E_END_TRY;
 
-    if (s.use_np && np.fd_writer_to_reader >= 0)
+    if (s->use_np && np.fd_writer_to_reader >= 0)
         HDclose(np.fd_writer_to_reader);
 
-    if (s.use_np && np.fd_reader_to_writer >= 0)
+    if (s->use_np && np.fd_reader_to_writer >= 0)
         HDclose(np.fd_reader_to_writer);
 
-    if (s.use_np && !writer) {
+    if (s->use_np && !writer) {
         HDremove(np.fifo_writer_to_reader);
         HDremove(np.fifo_reader_to_writer);
     }
 
+    HDfree(s);
+    HDfree(config);
+
     return EXIT_FAILURE;
 }
 
diff --git a/test/vfd_swmr_gfail_writer.c b/test/vfd_swmr_gfail_writer.c
index 8b8f00e..8662c11 100644
--- a/test/vfd_swmr_gfail_writer.c
+++ b/test/vfd_swmr_gfail_writer.c
@@ -138,15 +138,6 @@ typedef struct {
     int          np_verify;
 } state_t;
 
-#define ALL_HID_INITIALIZER                                                                                  \
-    (state_t)                                                                                                \
-    {                                                                                                        \
-        .file = H5I_INVALID_HID, .one_by_one_sid = H5I_INVALID_HID, .filename = "",                          \
-        .filetype = H5T_NATIVE_UINT32, .nsteps = 10000, .use_vfd_swmr = true, .old_style_grp = false,        \
-        .use_named_pipes = true, .w_sleep_len = 112, .tick_len = 4, .max_lag = 7, .ps = 4096, .pbs = 4096,   \
-        .del_grp = false, .np_fd_w_to_r = -1, .np_fd_r_to_w = -1, .np_notify = 0, .np_verify = 0             \
-    }
-
 /*
  * Operator function to be called by H5Literate.
  */
@@ -189,7 +180,26 @@ state_init(state_t *s, int argc, char **argv)
     char *        tfile = NULL;
     char *        end;
 
-    *s = ALL_HID_INITIALIZER;
+    s->file            = H5I_INVALID_HID;
+    s->one_by_one_sid  = H5I_INVALID_HID;
+    s->filetype        = H5T_NATIVE_UINT32;
+    s->nsteps          = 1000;
+    s->use_vfd_swmr    = true;
+    s->old_style_grp   = false;
+    s->use_named_pipes = true;
+    s->w_sleep_len     = 112;
+    s->tick_len        = 4;
+    s->max_lag         = 7;
+    s->ps              = 4096;
+    s->pbs             = 4096;
+    s->del_grp         = false;
+    s->np_fd_w_to_r    = -1;
+    s->np_fd_r_to_w    = -1;
+    s->np_notify       = 0;
+    s->np_verify       = 0;
+
+    HDmemset(s->filename, 0, PATH_MAX);
+    HDmemset(s->progname, 0, PATH_MAX);
 
     if (H5_basename(argv[0], &tfile) < 0) {
         HDprintf("H5_basename failed\n");
@@ -280,8 +290,8 @@ state_init(state_t *s, int argc, char **argv)
     return true;
 
 error:
-    if (tfile)
-        HDfree(tfile);
+    HDfree(tfile);
+
     return false;
 }
 
@@ -409,16 +419,24 @@ np_rd_send(state_t *s)
  *   A boolean input parameter is used to choose
  *   either reader or writer.
  * Return:
- *     None
+ *   True  if succeed
+ *   False if an error occurs in sending the message.
  */
-static void
+static bool
 np_send_error(state_t *s, bool writer)
 {
+    int fd = writer ? s->np_fd_w_to_r : s->np_fd_r_to_w;
+
     s->np_notify = -1;
-    if (writer)
-        HDwrite(s->np_fd_w_to_r, &(s->np_notify), sizeof(int));
+
+    if (HDwrite(fd, &(s->np_notify), sizeof(int)) < 0) {
+        H5_FAILED();
+        AT();
+        HDprintf("HDwrite failed\n");
+        return false;
+    }
     else
-        HDwrite(s->np_fd_r_to_w, &(s->np_notify), sizeof(int));
+        return true;
 }
 
 /*-------------------------------------------------------------------------
@@ -513,27 +531,33 @@ error:
 int
 main(int argc, char **argv)
 {
-    hid_t                 fapl = H5I_INVALID_HID, fcpl = H5I_INVALID_HID;
-    unsigned              step;
-    bool                  writer = false;
-    state_t               s;
-    const char *          personality;
-    H5F_vfd_swmr_config_t config;
-    const char *          fifo_writer_to_reader = "./fifo_group_writer_to_reader";
-    const char *          fifo_reader_to_writer = "./fifo_group_reader_to_writer";
-    int                   fd_writer_to_reader = -1, fd_reader_to_writer = -1;
-    int                   notify = 0, verify = 0;
-    bool                  wg_ret = false;
+    hid_t                  fapl = H5I_INVALID_HID;
+    hid_t                  fcpl = H5I_INVALID_HID;
+    unsigned               step;
+    bool                   writer = false;
+    state_t *              s      = NULL;
+    const char *           personality;
+    H5F_vfd_swmr_config_t *config                = NULL;
+    const char *           fifo_writer_to_reader = "./fifo_group_writer_to_reader";
+    const char *           fifo_reader_to_writer = "./fifo_group_reader_to_writer";
+    int                    fd_writer_to_reader = -1, fd_reader_to_writer = -1;
+    int                    notify = 0, verify = 0;
+    bool                   wg_ret = false;
 
     struct timespec start_time, end_time;
     double          temp_time;
 
-    if (!state_init(&s, argc, argv)) {
+    if (NULL == (s = HDcalloc(1, sizeof(state_t))))
+        TEST_ERROR;
+    if (NULL == (config = HDcalloc(1, sizeof(H5F_vfd_swmr_config_t))))
+        TEST_ERROR;
+
+    if (!state_init(s, argc, argv)) {
         HDprintf("state_init failed\n");
         TEST_ERROR;
     }
 
-    personality = HDstrstr(s.progname, "vfd_swmr_gfail_");
+    personality = HDstrstr(s->progname, "vfd_swmr_gfail_");
 
     if (personality != NULL && HDstrcmp(personality, "vfd_swmr_gfail_writer") == 0)
         writer = true;
@@ -547,7 +571,7 @@ main(int argc, char **argv)
     /* config, tick_len, max_lag, presume_posix_semantics, writer,
      * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
      * md_file_path, md_file_name, updater_file_path */
-    init_vfd_swmr_config(&config, s.tick_len, s.max_lag, FALSE, writer, TRUE, FALSE, TRUE, 128, "./",
+    init_vfd_swmr_config(config, s->tick_len, s->max_lag, FALSE, writer, TRUE, FALSE, TRUE, 128, "./",
                          "group-shadow", NULL);
 
     /* If old-style option is chosen, use the earliest file format(H5F_LIBVER_EARLIEST)
@@ -555,23 +579,23 @@ main(int argc, char **argv)
      * vfd_swmr_create_fapl. Otherwise, the latest file format(H5F_LIBVER_LATEST)
      * should be used as the second parameter of H5Pset_libver_bound().
      * Also pass the use_vfd_swmr, only_meta_page, page_buf_size, config to vfd_swmr_create_fapl().*/
-    if ((fapl = vfd_swmr_create_fapl(!s.old_style_grp, s.use_vfd_swmr, true, s.pbs, &config)) < 0) {
+    if ((fapl = vfd_swmr_create_fapl(!s->old_style_grp, s->use_vfd_swmr, true, s->pbs, config)) < 0) {
         HDprintf("vfd_swmr_create_fapl failed\n");
         TEST_ERROR;
     }
 
     /* Set fs_strategy (file space strategy) and fs_page_size (file space page size) */
-    if ((fcpl = vfd_swmr_create_fcpl(H5F_FSPACE_STRATEGY_PAGE, s.ps)) < 0) {
+    if ((fcpl = vfd_swmr_create_fcpl(H5F_FSPACE_STRATEGY_PAGE, s->ps)) < 0) {
         HDprintf("vfd_swmr_create_fcpl() failed");
         TEST_ERROR;
     }
 
     if (writer)
-        s.file = H5Fcreate(s.filename, H5F_ACC_TRUNC, fcpl, fapl);
+        s->file = H5Fcreate(s->filename, H5F_ACC_TRUNC, fcpl, fapl);
     else
-        s.file = H5Fopen(s.filename, H5F_ACC_RDONLY, fapl);
+        s->file = H5Fopen(s->filename, H5F_ACC_RDONLY, fapl);
 
-    if (s.file < 0) {
+    if (s->file < 0) {
         HDprintf("H5Fcreate/open failed\n");
         TEST_ERROR;
     }
@@ -580,7 +604,7 @@ main(int argc, char **argv)
      * two-way communication.
      * One is for the writer to write to the reader.
      * The other one is for the reader to signal the writer.  */
-    if (s.use_named_pipes && writer) {
+    if (s->use_named_pipes && writer) {
         /* Writer creates two named pipes(FIFO) */
         if (HDmkfifo(fifo_writer_to_reader, 0600) < 0) {
             HDprintf("HDmkfifo failed\n");
@@ -594,74 +618,74 @@ main(int argc, char **argv)
     }
 
     /* Both the writer and reader open the pipes */
-    if (s.use_named_pipes && (fd_writer_to_reader = HDopen(fifo_writer_to_reader, O_RDWR)) < 0) {
+    if (s->use_named_pipes && (fd_writer_to_reader = HDopen(fifo_writer_to_reader, O_RDWR)) < 0) {
         HDprintf("HDopen failed\n");
         TEST_ERROR;
     }
 
-    if (s.use_named_pipes && (fd_reader_to_writer = HDopen(fifo_reader_to_writer, O_RDWR)) < 0) {
+    if (s->use_named_pipes && (fd_reader_to_writer = HDopen(fifo_reader_to_writer, O_RDWR)) < 0) {
         HDprintf("HDopen failed\n");
         TEST_ERROR;
     }
 
     /* Pass the named pipe information to the struct of state_t s, for attribute tests.*/
-    if (s.use_named_pipes) {
-        s.np_fd_w_to_r = fd_writer_to_reader;
-        s.np_fd_r_to_w = fd_reader_to_writer;
-        s.np_notify    = notify;
-        s.np_verify    = verify;
+    if (s->use_named_pipes) {
+        s->np_fd_w_to_r = fd_writer_to_reader;
+        s->np_fd_r_to_w = fd_reader_to_writer;
+        s->np_notify    = notify;
+        s->np_verify    = verify;
     }
 
     if (writer) {
 
-        for (step = 0; step < s.nsteps; step++) {
+        for (step = 0; step < s->nsteps; step++) {
             dbgf(2, "writer: step %d\n", step);
 
-            wg_ret = create_group(&s, step);
+            wg_ret = create_group(s, step);
             if (wg_ret == false) {
-                if (s.use_named_pipes)
-                    np_send_error(&s, true);
+                if (s->use_named_pipes && !np_send_error(s, true))
+                    HDprintf("Error message send failed\n");
                 HDprintf("create groups failed\n");
                 TEST_ERROR;
             }
         }
-        if (s.use_named_pipes && np_wr_send_receive(&s) == false) {
+        if (s->use_named_pipes && np_wr_send_receive(s) == false) {
             HDprintf("writer: write group - verification failed.\n");
             TEST_ERROR;
         }
 
         /* Delete 1000 groups if the del_grp option is true.  */
-        if (s.del_grp && s.nsteps > 1000) {
+        if (s->del_grp && s->nsteps > 1000) {
             HDprintf("Deleting groups. \n");
-            for (step = s.nsteps - 1; step >= (s.nsteps - 1000); step--) {
+            for (step = s->nsteps - 1; step >= (s->nsteps - 1000); step--) {
                 dbgf(2, "writer: deleting step %d\n", step);
 
-                wg_ret = delete_group(&s, step);
+                wg_ret = delete_group(s, step);
                 if (wg_ret == false) {
                     HDprintf("delete group_operations failed\n");
                     TEST_ERROR;
                 }
             }
             /* end tick,may be not necessary. */
-            if (H5Fvfd_swmr_end_tick(s.file) < 0)
+            if (H5Fvfd_swmr_end_tick(s->file) < 0)
                 TEST_ERROR;
         }
 
         /* May be necessary for the writer to wait a longer time before
-           closing the file.
-           The default value is 112 tenths of a second(4*s.tick_len*s.max_lag)
-           if tick_len is 4 and max_lag is 7.
-        */
-        decisleep(s.w_sleep_len);
-    }
-    else { /*Reader */
-        if (s.use_named_pipes) {
-            if (false == np_rd_receive(&s)) {
+         * closing the file.
+         * The default value is 112 tenths of a second(4*s.tick_len*s.max_lag)
+         * if tick_len is 4 and max_lag is 7.
+         */
+        decisleep(s->w_sleep_len);
+    }
+    else { /* Reader */
+        if (s->use_named_pipes) {
+            if (false == np_rd_receive(s)) {
                 TEST_ERROR;
             }
 
             dbgf(2, "reader receives the message.\n");
-            if (np_rd_send(&s) == false) {
+            if (np_rd_send(s) == false) {
                 TEST_ERROR;
             }
             dbgf(2, "reader sends the message.\n ");
@@ -673,7 +697,7 @@ main(int argc, char **argv)
         }
 
         HDprintf("Reader: call back function: check group names.\n");
-        if (H5Literate(s.file, H5_INDEX_NAME, H5_ITER_NATIVE, NULL, op_func, NULL) < 0) {
+        if (H5Literate(s->file, H5_INDEX_NAME, H5_ITER_NATIVE, NULL, op_func, NULL) < 0) {
             HDprintf("H5Literate failed \n");
             TEST_ERROR;
         }
@@ -695,29 +719,29 @@ main(int argc, char **argv)
         TEST_ERROR;
     }
 
-    if (H5Sclose(s.one_by_one_sid) < 0) {
+    if (H5Sclose(s->one_by_one_sid) < 0) {
         HDprintf("H5Sclose failed\n");
         TEST_ERROR;
     }
 
-    if (H5Fclose(s.file) < 0) {
+    if (H5Fclose(s->file) < 0) {
         HDprintf("H5Fclose failed\n");
         TEST_ERROR;
     }
 
     /* Both the writer and reader close the named pipes */
-    if (s.use_named_pipes && HDclose(fd_writer_to_reader) < 0) {
+    if (s->use_named_pipes && HDclose(fd_writer_to_reader) < 0) {
         HDprintf("HDclose failed\n");
         TEST_ERROR;
     }
 
-    if (s.use_named_pipes && HDclose(fd_reader_to_writer) < 0) {
+    if (s->use_named_pipes && HDclose(fd_reader_to_writer) < 0) {
         HDprintf("HDclose failed\n");
         TEST_ERROR;
     }
 
     /* Reader finishes last and deletes the named pipes */
-    if (s.use_named_pipes && !writer) {
+    if (s->use_named_pipes && !writer) {
         if (HDremove(fifo_writer_to_reader) != 0) {
             HDprintf("HDremove failed\n");
             TEST_ERROR;
@@ -729,6 +753,9 @@ main(int argc, char **argv)
         }
     }
 
+    HDfree(s);
+    HDfree(config);
+
     return EXIT_SUCCESS;
 
 error:
@@ -736,24 +763,28 @@ error:
     {
         H5Pclose(fapl);
         H5Pclose(fcpl);
-        H5Sclose(s.one_by_one_sid);
-        H5Fclose(s.file);
+        H5Sclose(s->one_by_one_sid);
+        H5Fclose(s->file);
     }
     H5E_END_TRY;
 
-    if (s.use_named_pipes && fd_writer_to_reader >= 0)
+    if (s->use_named_pipes && fd_writer_to_reader >= 0)
         HDclose(fd_writer_to_reader);
 
-    if (s.use_named_pipes && fd_reader_to_writer >= 0)
+    if (s->use_named_pipes && fd_reader_to_writer >= 0)
         HDclose(fd_reader_to_writer);
 
-    if (s.use_named_pipes && !writer) {
+    if (s->use_named_pipes && !writer) {
         HDremove(fifo_writer_to_reader);
         HDremove(fifo_reader_to_writer);
     }
 
+    HDfree(s);
+    HDfree(config);
+
     return EXIT_FAILURE;
 }
+
 /************************************************************
 
   Operator function.  Prints the name and type of the object
diff --git a/test/vfd_swmr_gperf_writer.c b/test/vfd_swmr_gperf_writer.c
index 88e8b6f..cedbaf5 100644
--- a/test/vfd_swmr_gperf_writer.c
+++ b/test/vfd_swmr_gperf_writer.c
@@ -97,18 +97,6 @@ typedef struct {
     unsigned int nglevels;
 } state_t;
 
-#define ALL_HID_INITIALIZER                                                                                  \
-    (state_t)                                                                                                \
-    {                                                                                                        \
-        .file = H5I_INVALID_HID, .one_by_one_sid = H5I_INVALID_HID, .filename = "",                          \
-        .filetype = H5T_NATIVE_UINT32, .asteps = 1, .nsteps = 100, .use_vfd_swmr = true,                     \
-        .old_style_grp = false, .grp_op_pattern = ' ', .grp_op_test = false, .at_pattern = ' ',              \
-        .attr_test = false, .tick_len = 4, .max_lag = 7, .gperf = false, .glog = false, .min_gc_time = 100., \
-        .max_gc_time = 0., .mean_gc_time = 0., .total_gc_time = 0., .total_time = 0., .mean_time = 0.,       \
-        .fo_total_time = 0., .fc_total_time = 0., .num_attrs = 1, .vlstr_test = false, .ps = 4096,           \
-        .pbs = 4096, .nglevels = 0                                                                           \
-    }
-
 static void
 usage(const char *progname)
 {
@@ -209,7 +197,37 @@ state_init(state_t *s, int argc, char **argv)
     char *        tfile = NULL;
     char *        end;
 
-    *s = ALL_HID_INITIALIZER;
+    s->file           = H5I_INVALID_HID;
+    s->one_by_one_sid = H5I_INVALID_HID;
+    s->filetype       = H5T_NATIVE_UINT32;
+    s->asteps         = 1;
+    s->nsteps         = 100;
+    s->use_vfd_swmr   = TRUE;
+    s->old_style_grp  = FALSE;
+    s->grp_op_pattern = ' ';
+    s->grp_op_test    = FALSE;
+    s->at_pattern     = ' ';
+    s->attr_test      = FALSE;
+    s->tick_len       = 4;
+    s->max_lag        = 7;
+    s->gperf          = FALSE;
+    s->glog           = FALSE;
+    s->min_gc_time    = 100;
+    s->max_gc_time    = 100;
+    s->mean_gc_time   = 0.0;
+    s->total_gc_time  = 0.0;
+    s->total_time     = 0.0;
+    s->mean_time      = 0.0;
+    s->fo_total_time  = 0.0;
+    s->fc_total_time  = 0.0;
+    s->num_attrs      = 1;
+    s->vlstr_test     = FALSE;
+    s->ps             = 4096;
+    s->pbs            = 4096;
+    s->nglevels       = 0;
+
+    HDmemset(s->filename, 0, PATH_MAX);
+    HDmemset(s->progname, 0, PATH_MAX);
 
     if (H5_basename(argv[0], &tfile) < 0) {
         HDprintf("H5_basename failed\n");
@@ -2773,22 +2791,31 @@ error:
 int
 main(int argc, char **argv)
 {
-    hid_t                 fapl = H5I_INVALID_HID, fcpl = H5I_INVALID_HID;
-    unsigned              step;
-    bool                  writer = false;
-    state_t               s;
-    const char *          personality;
-    H5F_vfd_swmr_config_t config;
-    bool                  wg_ret = false;
-    struct timespec       start_time, end_time;
-    unsigned int          num_elems_per_level = 0;
-
-    if (!state_init(&s, argc, argv)) {
+    hid_t                  fapl = H5I_INVALID_HID, fcpl = H5I_INVALID_HID;
+    unsigned               step;
+    bool                   writer = false;
+    state_t *              s      = NULL;
+    const char *           personality;
+    H5F_vfd_swmr_config_t *config = NULL;
+    bool                   wg_ret = false;
+    struct timespec        start_time, end_time;
+    unsigned int           num_elems_per_level = 0;
+
+    if (NULL == (s = HDcalloc(1, sizeof(state_t)))) {
+        HDprintf("memory allocation failed");
+        TEST_ERROR;
+    }
+    if (NULL == (config = HDcalloc(1, sizeof(H5F_vfd_swmr_config_t)))) {
+        HDprintf("memory allocation failed");
+        TEST_ERROR;
+    }
+
+    if (!state_init(s, argc, argv)) {
         HDprintf("state_init failed\n");
         TEST_ERROR;
     }
 
-    personality = HDstrstr(s.progname, "vfd_swmr_gperf_");
+    personality = HDstrstr(s->progname, "vfd_swmr_gperf_");
 
     if (personality != NULL && HDstrcmp(personality, "vfd_swmr_gperf_writer") == 0)
         writer = true;
@@ -2807,69 +2834,66 @@ main(int argc, char **argv)
     /* config, tick_len, max_lag, presume_posix_semantics, writer,
      * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
      * md_file_path, md_file_name, updater_file_path */
-    init_vfd_swmr_config(&config, s.tick_len, s.max_lag, FALSE, writer, TRUE, FALSE, FALSE, 128, "./",
+    init_vfd_swmr_config(config, s->tick_len, s->max_lag, FALSE, writer, TRUE, FALSE, FALSE, 128, "./",
                          "group-shadow", NULL);
 
     /* If the log flag is on, create the log file log-test under the current directory. */
-    if (s.glog == true)
-        init_vfd_swmr_log(&config, "./log-test");
+    if (s->glog == true)
+        init_vfd_swmr_log(config, "./log-test");
 
     /* If old-style option is chosen, use the earliest file format(H5F_LIBVER_EARLIEST)
      * as the second parameter of H5Pset_libver_bound() that is called by
      * vfd_swmr_create_fapl. Otherwise, the latest file format(H5F_LIBVER_LATEST)
      * should be used as the second parameter of H5Pset_libver_bound().
      * Also pass the use_vfd_swmr, only_meta_page, page buffer size, config to vfd_swmr_create_fapl().*/
-    if ((fapl = vfd_swmr_create_fapl(!s.old_style_grp, s.use_vfd_swmr, true, s.pbs, &config)) < 0) {
+    if ((fapl = vfd_swmr_create_fapl(!s->old_style_grp, s->use_vfd_swmr, true, s->pbs, config)) < 0) {
         HDprintf("vfd_swmr_create_fapl failed\n");
         TEST_ERROR;
     }
 
     /* Set fs_strategy (file space strategy) and fs_page_size (file space page size) */
-    if ((fcpl = vfd_swmr_create_fcpl(H5F_FSPACE_STRATEGY_PAGE, s.ps)) < 0) {
+    if ((fcpl = vfd_swmr_create_fcpl(H5F_FSPACE_STRATEGY_PAGE, s->ps)) < 0) {
         HDprintf("vfd_swmr_create_fcpl() failed");
         TEST_ERROR;
     }
 
-    if (s.nglevels > 0) {
-        if (s.grp_op_pattern != ' ' || s.at_pattern != ' ') {
+    if (s->nglevels > 0) {
+        if (s->grp_op_pattern != ' ' || s->at_pattern != ' ') {
             HDprintf("For nested group creation test, only the default option is supported.\n");
             HDprintf("Please re-run the tests with the appropriate option.\n");
             TEST_ERROR;
         }
     }
 
-    if (s.gperf) {
-
+    if (s->gperf) {
         if (HDclock_gettime(CLOCK_MONOTONIC, &start_time) == -1) {
             HDfprintf(stderr, "HDclock_gettime failed");
             TEST_ERROR;
         }
     }
 
-    s.file = H5Fcreate(s.filename, H5F_ACC_TRUNC, fcpl, fapl);
-
-    if (s.gperf) {
+    s->file = H5Fcreate(s->filename, H5F_ACC_TRUNC, fcpl, fapl);
 
+    if (s->gperf) {
         if (HDclock_gettime(CLOCK_MONOTONIC, &end_time) == -1) {
             HDfprintf(stderr, "HDclock_gettime failed");
             TEST_ERROR;
         }
 
-        s.fo_total_time = TIME_PASSED(start_time, end_time);
+        s->fo_total_time = TIME_PASSED(start_time, end_time);
     }
 
-    if (s.file < 0) {
+    if (s->file < 0) {
         HDprintf("H5Fcreate failed\n");
         TEST_ERROR;
     }
 
     /* If generating nested groups, calculate the maximum number of
           elements per level.  */
-    if (s.nglevels > 0)
-        num_elems_per_level = obtain_tree_level_elems(s.nsteps, s.nglevels);
-
-    if (s.gperf) {
+    if (s->nglevels > 0)
+        num_elems_per_level = obtain_tree_level_elems(s->nsteps, s->nglevels);
 
+    if (s->gperf) {
         if (HDclock_gettime(CLOCK_MONOTONIC, &start_time) == -1) {
             HDfprintf(stderr, "HDclock_gettime failed");
             TEST_ERROR;
@@ -2877,20 +2901,18 @@ main(int argc, char **argv)
     }
 
     /* If generating nested groups */
-    if (s.nglevels > 0) {
-
+    if (s->nglevels > 0) {
         /* for the recursive call, the groups under the root is treated as one level */
-        wg_ret = gen_tree_struct(&s, s.nglevels + 1, num_elems_per_level, s.file);
+        wg_ret = gen_tree_struct(s, s->nglevels + 1, num_elems_per_level, s->file);
         if (wg_ret == false) {
             HDprintf("write nested group failed at group counter  %u\n", grp_counter);
             TEST_ERROR;
         }
     }
     else {
-        for (step = 0; step < s.nsteps; step++) {
-
+        for (step = 0; step < s->nsteps; step++) {
             dbgf(2, "writer: step %d\n", step);
-            wg_ret = group_operations(&s, step);
+            wg_ret = group_operations(s, step);
             if (wg_ret == false) {
                 HDprintf("write_group failed at step %d\n", step);
                 TEST_ERROR;
@@ -2898,17 +2920,15 @@ main(int argc, char **argv)
         }
     }
 
-    if (s.gperf) {
-
+    if (s->gperf) {
         if (HDclock_gettime(CLOCK_MONOTONIC, &end_time) == -1) {
-
             HDfprintf(stderr, "HDclock_gettime failed");
             TEST_ERROR;
         }
 
-        s.total_time   = TIME_PASSED(start_time, end_time);
-        s.mean_time    = s.total_time / s.nsteps;
-        s.mean_gc_time = s.total_gc_time / s.nsteps;
+        s->total_time   = TIME_PASSED(start_time, end_time);
+        s->mean_time    = s->total_time / s->nsteps;
+        s->mean_gc_time = s->total_gc_time / s->nsteps;
     }
 
     if (H5Pclose(fapl) < 0) {
@@ -2921,68 +2941,61 @@ main(int argc, char **argv)
         TEST_ERROR;
     }
 
-    if (H5Sclose(s.one_by_one_sid) < 0) {
+    if (H5Sclose(s->one_by_one_sid) < 0) {
         HDprintf("H5Sclose failed\n");
         TEST_ERROR;
     }
 
-    if (s.gperf) {
-
+    if (s->gperf) {
         if (HDclock_gettime(CLOCK_MONOTONIC, &start_time) == -1) {
-
             HDfprintf(stderr, "HDclock_gettime failed");
-
             TEST_ERROR;
         }
     }
 
-    if (H5Fclose(s.file) < 0) {
+    if (H5Fclose(s->file) < 0) {
         HDprintf("H5Fclose failed\n");
         TEST_ERROR;
     }
 
-    if (s.gperf) {
-
+    if (s->gperf) {
         if (HDclock_gettime(CLOCK_MONOTONIC, &end_time) == -1) {
-
             HDfprintf(stderr, "HDclock_gettime failed");
-
             TEST_ERROR;
         }
 
-        s.fc_total_time = TIME_PASSED(start_time, end_time);
+        s->fc_total_time = TIME_PASSED(start_time, end_time);
     }
 
     /* Performance statistics summary */
-    if (s.gperf) {
+    if (s->gperf) {
 
         if (verbosity != 0) {
-
             HDfprintf(stdout, "\nPerformance Test Configuration: ");
-            if (s.use_vfd_swmr)
+            if (s->use_vfd_swmr)
                 HDfprintf(stdout, " Using VFD SWMR \n");
             else
                 HDfprintf(stdout, " Not using VFD SWMR \n");
 
-            if (s.old_style_grp)
+            if (s->old_style_grp)
                 HDfprintf(stdout, " Groups: Created via the earliest file format(old-style) \n");
             else
                 HDfprintf(stdout, " Groups: Created via the latest file format(new-style) \n");
 
             HDfprintf(stdout, "\n");
 
-            HDfprintf(stdout, "The length of a tick              = %u\n", s.tick_len);
-            HDfprintf(stdout, "The maximum expected lag(in ticks)= %u\n", s.max_lag);
-            HDfprintf(stdout, "The page size(in bytes)           = %u\n", s.ps);
-            HDfprintf(stdout, "The page buffer size(in bytes)    = %u\n", s.pbs);
+            HDfprintf(stdout, "The length of a tick              = %u\n", s->tick_len);
+            HDfprintf(stdout, "The maximum expected lag(in ticks)= %u\n", s->max_lag);
+            HDfprintf(stdout, "The page size(in bytes)           = %u\n", s->ps);
+            HDfprintf(stdout, "The page buffer size(in bytes)    = %u\n", s->pbs);
             HDfprintf(stdout, "\n");
-            HDfprintf(stdout, "Number of groups                  = %u\n", s.nsteps);
-            HDfprintf(stdout, "Group Nested levels               = %u\n", s.nglevels);
-            HDfprintf(stdout, "Number of attributes              = %u\n", s.num_attrs);
+            HDfprintf(stdout, "Number of groups                  = %u\n", s->nsteps);
+            HDfprintf(stdout, "Group Nested levels               = %u\n", s->nglevels);
+            HDfprintf(stdout, "Number of attributes              = %u\n", s->num_attrs);
             HDfprintf(stdout, "Number of element per attribute   = 1\n");
-            if (s.vlstr_test)
+            if (s->vlstr_test)
                 HDfprintf(stdout, "Attribute datatype is variable length string. \n");
-            else if (s.filetype == H5T_STD_U32BE)
+            else if (s->filetype == H5T_STD_U32BE)
                 HDfprintf(stdout, "Attribute datatype is big-endian unsigned 32-bit integer.\n");
             else
                 HDfprintf(stdout, "Attribute datatype is native unsigned 32-bit integer.\n");
@@ -2990,19 +3003,22 @@ main(int argc, char **argv)
             HDfprintf(stdout, "\n");
             HDfprintf(stdout,
                       "(If the nested level is 0, all the groups are created directly under the root.)\n\n");
-            HDfprintf(stdout, "group creation maximum time                       =%lf\n", s.max_gc_time);
-            HDfprintf(stdout, "group creation minimum time                       =%lf\n", s.min_gc_time);
+            HDfprintf(stdout, "group creation maximum time                       =%lf\n", s->max_gc_time);
+            HDfprintf(stdout, "group creation minimum time                       =%lf\n", s->min_gc_time);
         }
 
-        HDfprintf(stdout, "group creation total time                           = %lf\n", s.total_gc_time);
-        HDfprintf(stdout, "group creation mean time(per group)                 = %lf\n", s.mean_gc_time);
-        HDfprintf(stdout, "group creation and attributes generation total time = %lf\n", s.total_time);
+        HDfprintf(stdout, "group creation total time                           = %lf\n", s->total_gc_time);
+        HDfprintf(stdout, "group creation mean time(per group)                 = %lf\n", s->mean_gc_time);
+        HDfprintf(stdout, "group creation and attributes generation total time = %lf\n", s->total_time);
         HDfprintf(stdout, "group creation and attributes generation mean time(per group) = %lf\n",
-                  s.mean_time);
-        HDfprintf(stdout, "H5Fcreate time = %lf\n", s.fo_total_time);
-        HDfprintf(stdout, "H5Fclose time  = %lf\n", s.fc_total_time);
+                  s->mean_time);
+        HDfprintf(stdout, "H5Fcreate time = %lf\n", s->fo_total_time);
+        HDfprintf(stdout, "H5Fclose time  = %lf\n", s->fc_total_time);
     }
 
+    HDfree(config);
+    HDfree(s);
+
     return EXIT_SUCCESS;
 
 error:
@@ -3010,11 +3026,14 @@ error:
     {
         H5Pclose(fapl);
         H5Pclose(fcpl);
-        H5Sclose(s.one_by_one_sid);
-        H5Fclose(s.file);
+        H5Sclose(s->one_by_one_sid);
+        H5Fclose(s->file);
     }
     H5E_END_TRY;
 
+    HDfree(config);
+    HDfree(s);
+
     return EXIT_FAILURE;
 }
 
diff --git a/test/vfd_swmr_group_writer.c b/test/vfd_swmr_group_writer.c
index dd387b2..c2b602b 100644
--- a/test/vfd_swmr_group_writer.c
+++ b/test/vfd_swmr_group_writer.c
@@ -51,17 +51,6 @@ typedef struct {
     int          np_verify;
 } state_t;
 
-#define ALL_HID_INITIALIZER                                                                                  \
-    (state_t)                                                                                                \
-    {                                                                                                        \
-        .file = H5I_INVALID_HID, .one_by_one_sid = H5I_INVALID_HID, .filename = "",                          \
-        .filetype = H5T_NATIVE_UINT32, .asteps = 10, .csteps = 10, .nsteps = 100,                            \
-        .update_interval = READER_WAIT_TICKS, .use_vfd_swmr = TRUE, .old_style_grp = FALSE,                  \
-        .use_named_pipes = TRUE, .grp_op_pattern = ' ', .grp_op_test = FALSE, .at_pattern = ' ',             \
-        .attr_test = FALSE, .tick_len = 4, .max_lag = 7, .ps = 4096, .pbs = 4096, .np_fd_w_to_r = -1,        \
-        .np_fd_r_to_w = -1, .np_notify = 0, .np_verify = 0                                                   \
-    }
-
 static void
 usage(const char *progname)
 {
@@ -155,7 +144,31 @@ state_init(state_t *s, int argc, char **argv)
     const char *           s_opts   = "SGa:bc:n:Nqu:t:m:B:s:A:O:";
     struct h5_long_options l_opts[] = {{NULL, 0, '\0'}};
 
-    *s = ALL_HID_INITIALIZER;
+    s->file            = H5I_INVALID_HID;
+    s->one_by_one_sid  = H5I_INVALID_HID;
+    s->filetype        = H5T_NATIVE_UINT32;
+    s->asteps          = 10;
+    s->csteps          = 10;
+    s->nsteps          = 100;
+    s->update_interval = READER_WAIT_TICKS;
+    s->use_vfd_swmr    = TRUE;
+    s->old_style_grp   = FALSE;
+    s->use_named_pipes = TRUE;
+    s->grp_op_pattern  = ' ';
+    s->grp_op_test     = FALSE;
+    s->at_pattern      = ' ';
+    s->attr_test       = FALSE;
+    s->tick_len        = 4;
+    s->max_lag         = 7;
+    s->ps              = 4096;
+    s->pbs             = 4096;
+    s->np_fd_w_to_r    = -1;
+    s->np_fd_r_to_w    = -1;
+    s->np_notify       = 0;
+    s->np_verify       = 0;
+
+    HDmemset(s->filename, 0, PATH_MAX);
+    HDmemset(s->progname, 0, PATH_MAX);
 
     if (H5_basename(argv[0], &tfile) < 0) {
         HDprintf("H5_basename failed\n");
@@ -461,16 +474,24 @@ np_rd_send(state_t *s)
  *   A boolean input parameter is used to choose
  *   either reader or writer.
  * Return:
- *     None
+ *   True  if succeed
+ *   False if an error occurs in sending the message.
  */
-static void
-np_send_error(state_t *s, hbool_t writer)
+static bool
+np_send_error(state_t *s, bool writer)
 {
+    int fd = writer ? s->np_fd_w_to_r : s->np_fd_r_to_w;
+
     s->np_notify = -1;
-    if (writer)
-        HDwrite(s->np_fd_w_to_r, &(s->np_notify), sizeof(int));
+
+    if (HDwrite(fd, &(s->np_notify), sizeof(int)) < 0) {
+        H5_FAILED();
+        AT();
+        HDprintf("HDwrite failed\n");
+        return false;
+    }
     else
-        HDwrite(s->np_fd_r_to_w, &(s->np_notify), sizeof(int));
+        return true;
 }
 
 /*-------------------------------------------------------------------------
@@ -892,7 +913,8 @@ del_one_attr(state_t *s, hid_t obj_id, hbool_t is_dense, hbool_t is_vl_or_ohrc,
 
 error:
     if (s->use_named_pipes && s->attr_test == TRUE)
-        np_send_error(s, TRUE);
+        if (!np_send_error(s, TRUE))
+            HDfprintf(stderr, "Sending error message failed");
 
 error2:
     return FALSE;
@@ -4974,25 +4996,30 @@ verify_group_operations(state_t *s, unsigned int which)
 int
 main(int argc, char **argv)
 {
-    hid_t                 fapl = H5I_INVALID_HID, fcpl = H5I_INVALID_HID;
-    unsigned              step;
-    hbool_t               writer = FALSE;
-    state_t               s;
-    const char *          personality;
-    H5F_vfd_swmr_config_t config;
-    const char *          fifo_writer_to_reader = "./fifo_group_writer_to_reader";
-    const char *          fifo_reader_to_writer = "./fifo_group_reader_to_writer";
-    int                   fd_writer_to_reader = -1, fd_reader_to_writer = -1;
-    int                   notify = 0, verify = 0;
-    hbool_t               wg_ret = FALSE;
-    hbool_t               vg_ret = FALSE;
-
-    if (!state_init(&s, argc, argv)) {
+    hid_t                  fapl = H5I_INVALID_HID, fcpl = H5I_INVALID_HID;
+    unsigned               step;
+    hbool_t                writer = FALSE;
+    state_t *              s      = NULL;
+    const char *           personality;
+    H5F_vfd_swmr_config_t *config                = NULL;
+    const char *           fifo_writer_to_reader = "./fifo_group_writer_to_reader";
+    const char *           fifo_reader_to_writer = "./fifo_group_reader_to_writer";
+    int                    fd_writer_to_reader = -1, fd_reader_to_writer = -1;
+    int                    notify = 0, verify = 0;
+    hbool_t                wg_ret = FALSE;
+    hbool_t                vg_ret = FALSE;
+
+    if (NULL == (s = HDcalloc(1, sizeof(state_t))))
+        TEST_ERROR;
+    if (NULL == (config = HDcalloc(1, sizeof(H5F_vfd_swmr_config_t))))
+        TEST_ERROR;
+
+    if (!state_init(s, argc, argv)) {
         HDprintf("state_init failed\n");
         TEST_ERROR;
     }
 
-    personality = HDstrstr(s.progname, "vfd_swmr_group_");
+    personality = HDstrstr(s->progname, "vfd_swmr_group_");
 
     if (personality != NULL && HDstrcmp(personality, "vfd_swmr_group_writer") == 0)
         writer = TRUE;
@@ -5006,7 +5033,7 @@ main(int argc, char **argv)
     /* config, tick_len, max_lag, presume_posix_semantics, writer,
      * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
      * md_file_path, md_file_name, updater_file_path */
-    init_vfd_swmr_config(&config, s.tick_len, s.max_lag, FALSE, writer, TRUE, FALSE, TRUE, 128, "./",
+    init_vfd_swmr_config(config, s->tick_len, s->max_lag, FALSE, writer, TRUE, FALSE, TRUE, 128, "./",
                          "group-shadow", NULL);
 
     /* If old-style option is chosen, use the earliest file format(H5F_LIBVER_EARLIEST)
@@ -5014,23 +5041,23 @@ main(int argc, char **argv)
      * vfd_swmr_create_fapl. Otherwise, the latest file format(H5F_LIBVER_LATEST)
      * should be used as the second parameter of H5Pset_libver_bound().
      * Also pass the use_vfd_swmr, only_meta_page, page_buf_size, config to vfd_swmr_create_fapl().*/
-    if ((fapl = vfd_swmr_create_fapl(!s.old_style_grp, s.use_vfd_swmr, TRUE, s.pbs, &config)) < 0) {
+    if ((fapl = vfd_swmr_create_fapl(!s->old_style_grp, s->use_vfd_swmr, TRUE, s->pbs, config)) < 0) {
         HDprintf("vfd_swmr_create_fapl failed\n");
         TEST_ERROR;
     }
 
     /* Set fs_strategy (file space strategy) and fs_page_size (file space page size) */
-    if ((fcpl = vfd_swmr_create_fcpl(H5F_FSPACE_STRATEGY_PAGE, s.ps)) < 0) {
+    if ((fcpl = vfd_swmr_create_fcpl(H5F_FSPACE_STRATEGY_PAGE, s->ps)) < 0) {
         HDprintf("vfd_swmr_create_fcpl() failed");
         TEST_ERROR;
     }
 
     if (writer)
-        s.file = H5Fcreate(s.filename, H5F_ACC_TRUNC, fcpl, fapl);
+        s->file = H5Fcreate(s->filename, H5F_ACC_TRUNC, fcpl, fapl);
     else
-        s.file = H5Fopen(s.filename, H5F_ACC_RDONLY, fapl);
+        s->file = H5Fopen(s->filename, H5F_ACC_RDONLY, fapl);
 
-    if (s.file < 0) {
+    if (s->file < 0) {
         HDprintf("H5Fcreate/open failed\n");
         TEST_ERROR;
     }
@@ -5039,7 +5066,7 @@ main(int argc, char **argv)
      * two-way communication so that the two sides can move forward together.
      * One is for the writer to write to the reader.
      * The other one is for the reader to signal the writer.  */
-    if (s.use_named_pipes && writer) {
+    if (s->use_named_pipes && writer) {
         /* Writer creates two named pipes(FIFO) */
         if (HDmkfifo(fifo_writer_to_reader, 0600) < 0) {
             HDprintf("HDmkfifo failed\n");
@@ -5053,22 +5080,22 @@ main(int argc, char **argv)
     }
 
     /* Both the writer and reader open the pipes */
-    if (s.use_named_pipes && (fd_writer_to_reader = HDopen(fifo_writer_to_reader, O_RDWR)) < 0) {
+    if (s->use_named_pipes && (fd_writer_to_reader = HDopen(fifo_writer_to_reader, O_RDWR)) < 0) {
         HDprintf("HDopen failed\n");
         TEST_ERROR;
     }
 
-    if (s.use_named_pipes && (fd_reader_to_writer = HDopen(fifo_reader_to_writer, O_RDWR)) < 0) {
+    if (s->use_named_pipes && (fd_reader_to_writer = HDopen(fifo_reader_to_writer, O_RDWR)) < 0) {
         HDprintf("HDopen failed\n");
         TEST_ERROR;
     }
 
     /* Pass the named pipe information to the struct of state_t s, for attribute tests.*/
-    if (s.use_named_pipes) {
-        s.np_fd_w_to_r = fd_writer_to_reader;
-        s.np_fd_r_to_w = fd_reader_to_writer;
-        s.np_notify    = notify;
-        s.np_verify    = verify;
+    if (s->use_named_pipes) {
+        s->np_fd_w_to_r = fd_writer_to_reader;
+        s->np_fd_r_to_w = fd_reader_to_writer;
+        s->np_notify    = notify;
+        s->np_verify    = verify;
     }
 
     /* For attribute test, force the named pipe to communicate in every step.
@@ -5076,34 +5103,35 @@ main(int argc, char **argv)
      * If the named pipe is not forced to communicate in every step, the reader may go ahead
      * to verify the group and the attribute operations before the writer has a chance to
      * carry out the corresponding operations. */
-    if (s.attr_test && s.use_named_pipes)
-        s.csteps = 1;
+    if (s->attr_test && s->use_named_pipes)
+        s->csteps = 1;
 
     /* For group operation test, force the named pipe to communicate in every step. */
-    if (s.grp_op_test && s.use_named_pipes)
-        s.csteps = 1;
+    if (s->grp_op_test && s->use_named_pipes)
+        s->csteps = 1;
 
     if (writer) {
-        for (step = 0; step < s.nsteps; step++) {
+        for (step = 0; step < s->nsteps; step++) {
             dbgf(2, "writer: step %d\n", step);
 
-            wg_ret = group_operations(&s, step);
+            wg_ret = group_operations(s, step);
 
             if (wg_ret == FALSE) {
 
                 /* At communication interval, notifies the reader about the failure and quit */
-                if (s.use_named_pipes && s.attr_test != TRUE && s.grp_op_test != TRUE && step % s.csteps == 0)
-                    np_send_error(&s, TRUE);
+                if (s->use_named_pipes && s->attr_test != TRUE && s->grp_op_test != TRUE &&
+                    step % s->csteps == 0)
+                    np_send_error(s, TRUE);
                 HDprintf("write_group failed at step %d\n", step);
                 TEST_ERROR;
             }
             else {
 
                 /* At communication interval, notifies the reader and waits for its response */
-                if (s.use_named_pipes && s.attr_test != TRUE && s.grp_op_test != TRUE &&
-                    step % s.csteps == 0) {
+                if (s->use_named_pipes && s->attr_test != TRUE && s->grp_op_test != TRUE &&
+                    step % s->csteps == 0) {
 
-                    if (np_wr_send_receive(&s) == FALSE) {
+                    if (np_wr_send_receive(s) == FALSE) {
                         HDprintf("writer: write group - verification failed.\n");
                         TEST_ERROR;
                     }
@@ -5112,39 +5140,41 @@ main(int argc, char **argv)
         }
     }
     else {
-        for (step = 0; step < s.nsteps; step++) {
+        for (step = 0; step < s->nsteps; step++) {
             dbgf(1, "reader: step %d\n", step);
 
             /* At communication interval, waits for the writer to finish creation before starting verification
              */
-            if (s.use_named_pipes && s.attr_test != TRUE && s.grp_op_test != TRUE && step % s.csteps == 0) {
-                if (FALSE == np_rd_receive(&s)) {
+            if (s->use_named_pipes && s->attr_test != TRUE && s->grp_op_test != TRUE &&
+                step % s->csteps == 0) {
+                if (FALSE == np_rd_receive(s)) {
                     TEST_ERROR;
                 }
             }
 
             /* For the default test, wait for a few ticks for the update to happen */
-            if (s.use_named_pipes && s.attr_test == FALSE)
-                decisleep(config.tick_len * s.update_interval);
+            if (s->use_named_pipes && s->attr_test == FALSE)
+                decisleep(config->tick_len * s->update_interval);
 
-            vg_ret = verify_group_operations(&s, step);
+            vg_ret = verify_group_operations(s, step);
 
             if (vg_ret == FALSE) {
 
                 HDprintf("verify_group_operations failed\n");
 
                 /* At communication interval, tell the writer about the failure and exit */
-                if (s.use_named_pipes && s.attr_test != TRUE && s.grp_op_test != TRUE && step % s.csteps == 0)
-                    np_send_error(&s, FALSE);
+                if (s->use_named_pipes && s->attr_test != TRUE && s->grp_op_test != TRUE &&
+                    step % s->csteps == 0)
+                    np_send_error(s, FALSE);
                 TEST_ERROR;
             }
             else {
 
                 /* Send back the same notify value for acknowledgement to tell the writer
                  * move to the next step. */
-                if (s.use_named_pipes && s.attr_test != TRUE && s.grp_op_test != TRUE &&
-                    step % s.csteps == 0) {
-                    if (np_rd_send(&s) == FALSE) {
+                if (s->use_named_pipes && s->attr_test != TRUE && s->grp_op_test != TRUE &&
+                    step % s->csteps == 0) {
+                    if (np_rd_send(s) == FALSE) {
                         TEST_ERROR;
                     }
                 }
@@ -5162,29 +5192,29 @@ main(int argc, char **argv)
         TEST_ERROR;
     }
 
-    if (H5Sclose(s.one_by_one_sid) < 0) {
+    if (H5Sclose(s->one_by_one_sid) < 0) {
         HDprintf("H5Sclose failed\n");
         TEST_ERROR;
     }
 
-    if (H5Fclose(s.file) < 0) {
+    if (H5Fclose(s->file) < 0) {
         HDprintf("H5Fclose failed\n");
         TEST_ERROR;
     }
 
     /* Both the writer and reader close the named pipes */
-    if (s.use_named_pipes && HDclose(fd_writer_to_reader) < 0) {
+    if (s->use_named_pipes && HDclose(fd_writer_to_reader) < 0) {
         HDprintf("HDclose failed\n");
         TEST_ERROR;
     }
 
-    if (s.use_named_pipes && HDclose(fd_reader_to_writer) < 0) {
+    if (s->use_named_pipes && HDclose(fd_reader_to_writer) < 0) {
         HDprintf("HDclose failed\n");
         TEST_ERROR;
     }
 
     /* Reader finishes last and deletes the named pipes */
-    if (s.use_named_pipes && !writer) {
+    if (s->use_named_pipes && !writer) {
         if (HDremove(fifo_writer_to_reader) != 0) {
             HDprintf("HDremove failed\n");
             TEST_ERROR;
@@ -5196,6 +5226,9 @@ main(int argc, char **argv)
         }
     }
 
+    HDfree(config);
+    HDfree(s);
+
     return EXIT_SUCCESS;
 
 error:
@@ -5203,22 +5236,25 @@ error:
     {
         H5Pclose(fapl);
         H5Pclose(fcpl);
-        H5Sclose(s.one_by_one_sid);
-        H5Fclose(s.file);
+        H5Sclose(s->one_by_one_sid);
+        H5Fclose(s->file);
     }
     H5E_END_TRY;
 
-    if (s.use_named_pipes && fd_writer_to_reader >= 0)
+    if (s->use_named_pipes && fd_writer_to_reader >= 0)
         HDclose(fd_writer_to_reader);
 
-    if (s.use_named_pipes && fd_reader_to_writer >= 0)
+    if (s->use_named_pipes && fd_reader_to_writer >= 0)
         HDclose(fd_reader_to_writer);
 
-    if (s.use_named_pipes && !writer) {
+    if (s->use_named_pipes && !writer) {
         HDremove(fifo_writer_to_reader);
         HDremove(fifo_reader_to_writer);
     }
 
+    HDfree(config);
+    HDfree(s);
+
     return EXIT_FAILURE;
 }
 
diff --git a/test/vfd_swmr_indep_rw_writer.c b/test/vfd_swmr_indep_rw_writer.c
index 77eee74..bd79307 100644
--- a/test/vfd_swmr_indep_rw_writer.c
+++ b/test/vfd_swmr_indep_rw_writer.c
@@ -70,29 +70,6 @@ typedef struct {
     hbool_t      first_proc;
 } state_t;
 
-/* Assign the initialized values to struct state_t declared above */
-static inline state_t
-state_initializer(void)
-{
-    return (state_t){.file           = {H5I_INVALID_HID, H5I_INVALID_HID},
-                     .filename       = {"", ""},
-                     .r_dsetid       = H5I_INVALID_HID,
-                     .dtype          = H5T_NATIVE_UINT32,
-                     .fapl           = H5I_INVALID_HID,
-                     .fcpl           = H5I_INVALID_HID,
-                     .rows           = DATA_ROWS,
-                     .cols           = DATA_COLS,
-                     .rank           = DATA_RANK,
-                     .dims           = {DATA_ROWS, DATA_COLS},
-                     .max_lag        = 7,
-                     .tick_len       = 4,
-                     .ps             = 4096,
-                     .pbs            = 4096,
-                     .check_interval = 1,
-                     .use_vfd_swmr   = TRUE,
-                     .first_proc     = TRUE};
-}
-
 /* Obtain the data value at index [i][j] for the 2D matrix.
    All the routines related to the matrix are adapted from the vfd_swmr_bigset_writer.c. */
 static uint32_t
@@ -120,18 +97,18 @@ error:
 
 /* Allocate memory for the 2-D matrix. */
 static mat_t *
-newmat(state_t s)
+newmat(state_t *s)
 {
     mat_t *mat;
 
-    mat = HDmalloc(sizeof(*mat) + (s.rows * s.cols - 1) * sizeof(mat->elt[0]));
+    mat = HDmalloc(sizeof(*mat) + (s->rows * s->cols - 1) * sizeof(mat->elt[0]));
     if (mat == NULL) {
         HDfprintf(stderr, "HDmalloc failed\n");
         TEST_ERROR;
     }
 
-    mat->rows = s.rows;
-    mat->cols = s.cols;
+    mat->rows = s->rows;
+    mat->cols = s->cols;
 
     return mat;
 
@@ -254,7 +231,26 @@ state_init(state_t *s, int argc, char **argv)
     const char *           s_opts   = "Sqc:r:t:m:B:s:u:";
     struct h5_long_options l_opts[] = {{NULL, 0, '\0'}};
 
-    *s = state_initializer();
+    s->file[0]        = H5I_INVALID_HID;
+    s->file[1]        = H5I_INVALID_HID;
+    s->filename[0]    = "";
+    s->filename[1]    = "";
+    s->r_dsetid       = H5I_INVALID_HID;
+    s->dtype          = H5T_NATIVE_UINT32;
+    s->fapl           = H5I_INVALID_HID;
+    s->fcpl           = H5I_INVALID_HID;
+    s->rows           = DATA_ROWS;
+    s->cols           = DATA_COLS;
+    s->rank           = DATA_RANK;
+    s->dims[0]        = DATA_ROWS;
+    s->dims[1]        = DATA_COLS;
+    s->max_lag        = 7;
+    s->tick_len       = 4;
+    s->ps             = 4096;
+    s->pbs            = 4096;
+    s->check_interval = 1;
+    s->use_vfd_swmr   = TRUE;
+    s->first_proc     = TRUE;
 
     if (H5_basename(argv[0], &tfile) < 0) {
         HDprintf("H5_basename failed\n");
@@ -362,16 +358,19 @@ static hbool_t
 indep_init_vfd_swmr_config_plist(state_t *s, hbool_t writer, const char *mdf_name)
 {
 
-    H5F_vfd_swmr_config_t config;
+    H5F_vfd_swmr_config_t *config = NULL;
+
+    if (NULL == (config = HDcalloc(1, sizeof(H5F_vfd_swmr_config_t))))
+        TEST_ERROR;
 
     /* config, tick_len, max_lag, presume_posix_semantics, writer,
      * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
      * md_file_path, md_file_name, updater_file_path */
-    init_vfd_swmr_config(&config, s->tick_len, s->max_lag, FALSE, writer, TRUE, FALSE, TRUE, 128, "./",
+    init_vfd_swmr_config(config, s->tick_len, s->max_lag, FALSE, writer, TRUE, FALSE, TRUE, 128, "./",
                          mdf_name, NULL);
 
     /* Pass the use_vfd_swmr, only_meta_page, page buffer size, config to vfd_swmr_create_fapl().*/
-    if ((s->fapl = vfd_swmr_create_fapl(TRUE, s->use_vfd_swmr, TRUE, s->pbs, &config)) < 0) {
+    if ((s->fapl = vfd_swmr_create_fapl(TRUE, s->use_vfd_swmr, TRUE, s->pbs, config)) < 0) {
         HDprintf("vfd_swmr_create_fapl failed\n");
         TEST_ERROR;
     }
@@ -382,9 +381,12 @@ indep_init_vfd_swmr_config_plist(state_t *s, hbool_t writer, const char *mdf_nam
         TEST_ERROR;
     }
 
+    HDfree(config);
+
     return TRUE;
 
 error:
+    HDfree(config);
     return FALSE;
 }
 
@@ -628,12 +630,14 @@ int
 main(int argc, char **argv)
 {
     hbool_t  writer = TRUE;
-    state_t  s;
-    hbool_t  ret = FALSE;
-    unsigned i;
-    mat_t *  mat = NULL;
+    state_t *s      = NULL;
+    mat_t *  mat    = NULL;
+    hbool_t  ret    = FALSE;
 
-    if (!state_init(&s, argc, argv)) {
+    if (NULL == (s = HDcalloc(1, sizeof(state_t))))
+        TEST_ERROR;
+
+    if (!state_init(s, argc, argv)) {
         HDfprintf(stderr, "state_init failed\n");
         TEST_ERROR;
     }
@@ -644,70 +648,70 @@ main(int argc, char **argv)
     }
 
     /* The first process writes a dataset in the first file and then reads a dataset from the second file.*/
-    if (s.first_proc) {
+    if (s->first_proc) {
 
         writer = TRUE;
-        if (FALSE == indep_init_vfd_swmr_config_plist(&s, writer, "file1-shadow")) {
-            HDfprintf(stderr, "Writer: Cannot initialize file property lists for file %s\n", s.filename[0]);
+        if (FALSE == indep_init_vfd_swmr_config_plist(s, writer, "file1-shadow")) {
+            HDfprintf(stderr, "Writer: Cannot initialize file property lists for file %s\n", s->filename[0]);
             TEST_ERROR;
         }
-        s.file[0] = H5Fcreate(s.filename[0], H5F_ACC_TRUNC, s.fcpl, s.fapl);
-        if (s.file[0] < 0) {
-            HDfprintf(stderr, "H5Fcreate failed for the file %s\n", s.filename[0]);
+        s->file[0] = H5Fcreate(s->filename[0], H5F_ACC_TRUNC, s->fcpl, s->fapl);
+        if (s->file[0] < 0) {
+            HDfprintf(stderr, "H5Fcreate failed for the file %s\n", s->filename[0]);
             TEST_ERROR;
         }
 
-        ret = write_dataset(&s, mat);
+        ret = write_dataset(s, mat);
         if (ret == FALSE) {
-            HDfprintf(stderr, "write_dataset failed for the file %s\n", s.filename[0]);
+            HDfprintf(stderr, "write_dataset failed for the file %s\n", s->filename[0]);
             TEST_ERROR;
         }
 
         /* writer makes repeated HDF5 API calls
          * to trigger EOT at approximately the correct time */
-        for (i = 0; i < s.max_lag + 1; i++) {
-            decisleep(s.tick_len);
+        for (unsigned i = 0; i < s->max_lag + 1; i++) {
+            decisleep(s->tick_len);
             H5E_BEGIN_TRY
             {
-                H5Aexists(s.file[0], "nonexistent");
+                H5Aexists(s->file[0], "nonexistent");
             }
             H5E_END_TRY;
         }
 
-        if (FALSE == close_pl(&s)) {
-            HDfprintf(stderr, "Fail to close file property lists for writing the file %s.\n", s.filename[0]);
+        if (FALSE == close_pl(s)) {
+            HDfprintf(stderr, "Fail to close file property lists for writing the file %s.\n", s->filename[0]);
             TEST_ERROR;
         }
 
         writer = FALSE;
-        if (FALSE == indep_init_vfd_swmr_config_plist(&s, writer, "file2-shadow")) {
-            HDfprintf(stderr, "Reader: Cannot initialize file property lists for file %s\n", s.filename[1]);
+        if (FALSE == indep_init_vfd_swmr_config_plist(s, writer, "file2-shadow")) {
+            HDfprintf(stderr, "Reader: Cannot initialize file property lists for file %s\n", s->filename[1]);
             TEST_ERROR;
         }
-        s.file[1] = H5Fopen(s.filename[1], H5F_ACC_RDONLY, s.fapl);
-        if (s.file[1] < 0) {
-            HDfprintf(stderr, "H5Fopen failed for the file %s\n", s.filename[1]);
+        s->file[1] = H5Fopen(s->filename[1], H5F_ACC_RDONLY, s->fapl);
+        if (s->file[1] < 0) {
+            HDfprintf(stderr, "H5Fopen failed for the file %s\n", s->filename[1]);
             TEST_ERROR;
         }
 
-        ret = read_vrfy_dataset(&s, mat);
+        ret = read_vrfy_dataset(s, mat);
         if (ret == FALSE) {
-            HDfprintf(stderr, "read and verify dataset failed for file %s\n", s.filename[1]);
+            HDfprintf(stderr, "read and verify dataset failed for file %s\n", s->filename[1]);
             TEST_ERROR;
         }
 
-        if (FALSE == close_pl(&s)) {
-            HDfprintf(stderr, "Fail to close file property lists for reading the file %s.\n", s.filename[1]);
+        if (FALSE == close_pl(s)) {
+            HDfprintf(stderr, "Fail to close file property lists for reading the file %s.\n", s->filename[1]);
             TEST_ERROR;
         }
 
-        if (H5Fclose(s.file[0]) < 0) {
-            HDfprintf(stderr, "fail to close HDF5 file %s \n", s.filename[0]);
+        if (H5Fclose(s->file[0]) < 0) {
+            HDfprintf(stderr, "fail to close HDF5 file %s \n", s->filename[0]);
             TEST_ERROR;
         }
 
-        if (H5Fclose(s.file[1]) < 0) {
-            HDfprintf(stderr, "fail to close HDF5 file %s \n", s.filename[1]);
+        if (H5Fclose(s->file[1]) < 0) {
+            HDfprintf(stderr, "fail to close HDF5 file %s \n", s->filename[1]);
             TEST_ERROR;
         }
     }
@@ -717,88 +721,88 @@ main(int argc, char **argv)
          * then writes a dataset in the second file for the first process to read.
          */
         writer = FALSE;
-        if (FALSE == indep_init_vfd_swmr_config_plist(&s, writer, "file1-shadow")) {
-            HDfprintf(stderr, "Reader: Cannot initialize file property lists for file %s\n", s.filename[0]);
+        if (FALSE == indep_init_vfd_swmr_config_plist(s, writer, "file1-shadow")) {
+            HDfprintf(stderr, "Reader: Cannot initialize file property lists for file %s\n", s->filename[0]);
             TEST_ERROR;
         }
 
-        s.file[0] = H5Fopen(s.filename[0], H5F_ACC_RDONLY, s.fapl);
-        if (s.file[0] < 0) {
-            HDfprintf(stderr, "H5Fopen failed for the file %s\n", s.filename[0]);
+        s->file[0] = H5Fopen(s->filename[0], H5F_ACC_RDONLY, s->fapl);
+        if (s->file[0] < 0) {
+            HDfprintf(stderr, "H5Fopen failed for the file %s\n", s->filename[0]);
             TEST_ERROR;
         }
-        ret = read_vrfy_dataset(&s, mat);
+        ret = read_vrfy_dataset(s, mat);
         if (ret == FALSE) {
-            HDfprintf(stderr, "read and verify dataset failed for file %s\n", s.filename[0]);
+            HDfprintf(stderr, "read and verify dataset failed for file %s\n", s->filename[0]);
             TEST_ERROR;
         }
 
-        if (FALSE == close_pl(&s)) {
-            HDfprintf(stderr, "Fail to close file property lists for reading the file %s.\n", s.filename[0]);
+        if (FALSE == close_pl(s)) {
+            HDfprintf(stderr, "Fail to close file property lists for reading the file %s.\n", s->filename[0]);
             TEST_ERROR;
         }
 
         writer = TRUE;
-        if (FALSE == indep_init_vfd_swmr_config_plist(&s, writer, "file2-shadow")) {
-            HDfprintf(stderr, "writer: Cannot initialize file property lists for file %s\n", s.filename[1]);
+        if (FALSE == indep_init_vfd_swmr_config_plist(s, writer, "file2-shadow")) {
+            HDfprintf(stderr, "writer: Cannot initialize file property lists for file %s\n", s->filename[1]);
             TEST_ERROR;
         }
 
-        s.file[1] = H5Fcreate(s.filename[1], H5F_ACC_TRUNC, s.fcpl, s.fapl);
-        if (s.file[1] < 0) {
-            HDfprintf(stderr, "H5Fcreate failed for the file %s\n", s.filename[1]);
+        s->file[1] = H5Fcreate(s->filename[1], H5F_ACC_TRUNC, s->fcpl, s->fapl);
+        if (s->file[1] < 0) {
+            HDfprintf(stderr, "H5Fcreate failed for the file %s\n", s->filename[1]);
             TEST_ERROR;
         }
-        ret = write_dataset(&s, mat);
+        ret = write_dataset(s, mat);
         if (ret == FALSE) {
-            HDfprintf(stderr, "write_dataset failed for the file %s\n", s.filename[1]);
+            HDfprintf(stderr, "write_dataset failed for the file %s\n", s->filename[1]);
             TEST_ERROR;
         }
 
         /* writer makes repeated HDF5 API calls
          * to trigger EOT at approximately the correct time */
-        for (i = 0; i < s.max_lag + 1; i++) {
-            decisleep(s.tick_len);
+        for (unsigned i = 0; i < s->max_lag + 1; i++) {
+            decisleep(s->tick_len);
             H5E_BEGIN_TRY
             {
-                H5Aexists(s.file[1], "nonexistent");
+                H5Aexists(s->file[1], "nonexistent");
             }
             H5E_END_TRY;
         }
 
-        if (FALSE == close_pl(&s)) {
-            HDfprintf(stderr, "Fail to close file property lists for writing the file %s.\n", s.filename[1]);
+        if (FALSE == close_pl(s)) {
+            HDfprintf(stderr, "Fail to close file property lists for writing the file %s.\n", s->filename[1]);
             TEST_ERROR;
         }
 
-        if (H5Fclose(s.file[0]) < 0) {
-            HDfprintf(stderr, "fail to close HDF5 file %s \n", s.filename[0]);
+        if (H5Fclose(s->file[0]) < 0) {
+            HDfprintf(stderr, "fail to close HDF5 file %s \n", s->filename[0]);
             TEST_ERROR;
         }
 
-        if (H5Fclose(s.file[1]) < 0) {
-            HDfprintf(stderr, "fail to close HDF5 file %s \n", s.filename[1]);
+        if (H5Fclose(s->file[1]) < 0) {
+            HDfprintf(stderr, "fail to close HDF5 file %s \n", s->filename[1]);
             TEST_ERROR;
         }
     }
 
-    if (mat)
-        HDfree(mat);
+    HDfree(mat);
+    HDfree(s);
 
     return EXIT_SUCCESS;
 
 error:
     H5E_BEGIN_TRY
     {
-        H5Pclose(s.fapl);
-        H5Pclose(s.fcpl);
-        H5Fclose(s.file[0]);
-        H5Fclose(s.file[1]);
+        H5Pclose(s->fapl);
+        H5Pclose(s->fcpl);
+        H5Fclose(s->file[0]);
+        H5Fclose(s->file[1]);
     }
     H5E_END_TRY;
 
-    if (mat)
-        HDfree(mat);
+    HDfree(mat);
+    HDfree(s);
 
     return EXIT_FAILURE;
 }
diff --git a/test/vfd_swmr_sparse_writer.c b/test/vfd_swmr_sparse_writer.c
index a233bb3..6c8d08e 100644
--- a/test/vfd_swmr_sparse_writer.c
+++ b/test/vfd_swmr_sparse_writer.c
@@ -34,8 +34,6 @@
 
 #ifndef H5_HAVE_WIN32_API
 
-#include <err.h>
-
 /****************/
 /* Local Macros */
 /****************/
diff --git a/test/vfd_swmr_vlstr_reader.c b/test/vfd_swmr_vlstr_reader.c
index dc403cf..c345b18 100644
--- a/test/vfd_swmr_vlstr_reader.c
+++ b/test/vfd_swmr_vlstr_reader.c
@@ -23,8 +23,6 @@
 
 #ifndef H5_HAVE_WIN32_API
 
-#include <err.h>
-
 typedef enum _step { CREATE = 0, LENGTHEN, SHORTEN, DELETE, NSTEPS } step_t;
 
 static hbool_t caught_out_of_bounds = FALSE;
@@ -61,22 +59,29 @@ usage(const char *progname)
 int
 main(int argc, char **argv)
 {
-    hid_t                  fapl, fid, space, type;
-    hid_t                  dset[2];
-    char *                 content[2];
+    hid_t                  fapl       = H5I_INVALID_HID;
+    hid_t                  fid        = H5I_INVALID_HID;
+    hid_t                  space      = H5I_INVALID_HID;
+    hid_t                  type       = H5I_INVALID_HID;
+    hid_t                  dset[2]    = {H5I_INVALID_HID, H5I_INVALID_HID};
+    char *                 content[2] = {NULL, NULL};
     char                   name[2][96];
-    int                    opt, i, ntimes = 100;
+    int                    opt;
+    int                    ntimes = 100;
     unsigned long          tmp;
     hbool_t                use_vfd_swmr = TRUE;
     char *                 end;
     const uint64_t         delay_ns = 1100 * 1000; /* 1.1 ms */
     testsel_t              sel      = TEST_NONE;
-    H5F_vfd_swmr_config_t  config;
+    H5F_vfd_swmr_config_t *config;
     const char *           s_opts   = "Sn:qt:";
     struct h5_long_options l_opts[] = {{NULL, 0, '\0'}};
 
     HDassert(H5T_C_S1 != H5I_INVALID_HID);
 
+    if (NULL == (config = HDcalloc(1, sizeof(H5F_vfd_swmr_config_t))))
+        PUTS_ERROR("memory allocation failed");
+
     while ((opt = H5_get_option(argc, (const char *const *)argv, s_opts, l_opts)) != EOF) {
         switch (opt) {
             case 'S':
@@ -85,12 +90,21 @@ main(int argc, char **argv)
             case 'n':
                 errno = 0;
                 tmp   = HDstrtoul(H5_optarg, &end, 0);
-                if (end == optarg || *end != '\0')
-                    errx(EXIT_FAILURE, "couldn't parse `-n` argument `%s`", H5_optarg);
-                else if (errno != 0)
-                    err(EXIT_FAILURE, "couldn't parse `-n` argument `%s`", H5_optarg);
-                else if (tmp > INT_MAX)
-                    errx(EXIT_FAILURE, "`-n` argument `%lu` too large", tmp);
+                if (end == optarg || *end != '\0') {
+                    HDfprintf(stderr, "couldn't parse `-n` argument `%s`", H5_optarg);
+                    AT();
+                    goto error;
+                }
+                else if (errno != 0) {
+                    HDfprintf(stderr, "couldn't parse `-n` argument `%s`", H5_optarg);
+                    AT();
+                    goto error;
+                }
+                else if (tmp > INT_MAX) {
+                    HDfprintf(stderr, "`-n` argument `%lu` too large", tmp);
+                    AT();
+                    goto error;
+                }
                 ntimes = (int)tmp;
                 break;
             case 'q':
@@ -113,40 +127,34 @@ main(int argc, char **argv)
     argc -= H5_optind;
 
     if (argc > 0)
-        errx(EXIT_FAILURE, "unexpected command-line arguments");
+        PUTS_ERROR("unexpected command-line arguments");
 
     /* config, tick_len, max_lag, presume_posix_semantics, writer,
      * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
      * md_file_path, md_file_name, updater_file_path */
-    init_vfd_swmr_config(&config, 4, 7, FALSE, false, TRUE, FALSE, TRUE, 128, "./", "vlstr-shadow", NULL);
+    init_vfd_swmr_config(config, 4, 7, FALSE, false, TRUE, FALSE, TRUE, 128, "./", "vlstr-shadow", NULL);
 
     /* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
-    fapl = vfd_swmr_create_fapl(TRUE, use_vfd_swmr, sel == TEST_OOB, 4096, &config);
+    if ((fapl = vfd_swmr_create_fapl(TRUE, use_vfd_swmr, sel == TEST_OOB, 4096, config)) < 0)
+        STACK_ERROR;
 
-    if (fapl < 0)
-        errx(EXIT_FAILURE, "vfd_swmr_create_fapl");
-
-    fid = H5Fopen("vfd_swmr_vlstr.h5", H5F_ACC_RDONLY, fapl);
+    if ((fid = H5Fopen("vfd_swmr_vlstr.h5", H5F_ACC_RDONLY, fapl)) < 0)
+        STACK_ERROR;
 
     /* Create the VL string datatype and a scalar dataspace */
     if ((type = H5Tcopy(H5T_C_S1)) == H5I_INVALID_HID)
-        errx(EXIT_FAILURE, "H5Tcopy");
+        STACK_ERROR;
 
     if (H5Tset_size(type, H5T_VARIABLE) < 0)
-        errx(EXIT_FAILURE, "H5Tset_size");
-    space = H5Screate(H5S_SCALAR);
-
-    if (space == H5I_INVALID_HID)
-        errx(EXIT_FAILURE, "H5Screate");
-
-    if (fid == H5I_INVALID_HID)
-        errx(EXIT_FAILURE, "H5Fcreate");
+        STACK_ERROR;
+    if ((space = H5Screate(H5S_SCALAR)) < 0)
+        STACK_ERROR;
 
     /* content 0 seq 1 short
      * content 1 seq 1 long long long long long long long long
      * content 1 seq 1 medium medium medium
      */
-    for (i = 0; !caught_out_of_bounds && i < ntimes; (i % 2 == 0) ? H5_nanosleep(delay_ns) : 0, i++) {
+    for (int i = 0; !caught_out_of_bounds && i < ntimes; i++) {
         estack_state_t es;
         const int      ndsets = 2;
         const int      which  = i % ndsets;
@@ -159,7 +167,8 @@ main(int argc, char **argv)
 
         dbgf(2, "iteration %d which %d", i, which);
         (void)HDsnprintf(name[which], sizeof(name[which]), "dset-%d", which);
-        es          = disable_estack();
+        es = disable_estack();
+
         dset[which] = H5Dopen2(fid, name[which], H5P_DEFAULT);
         restore_estack(es);
         if (caught_out_of_bounds || dset[which] == H5I_INVALID_HID) {
@@ -185,6 +194,9 @@ main(int argc, char **argv)
             HDfree(content[which]);
             content[which] = NULL;
         }
+
+        if (i % 2 == 0)
+            H5_nanosleep(delay_ns);
     }
 
     if (caught_out_of_bounds)
@@ -194,16 +206,15 @@ main(int argc, char **argv)
         HDfprintf(stderr, "read NULL\n");
 
     if (H5Pclose(fapl) < 0)
-        errx(EXIT_FAILURE, "H5Pclose(fapl)");
-
+        STACK_ERROR;
     if (H5Tclose(type) < 0)
-        errx(EXIT_FAILURE, "H5Tclose");
-
+        STACK_ERROR;
     if (H5Sclose(space) < 0)
-        errx(EXIT_FAILURE, "H5Sclose");
-
+        STACK_ERROR;
     if (H5Fclose(fid) < 0)
-        errx(EXIT_FAILURE, "H5Fclose");
+        STACK_ERROR;
+
+    HDfree(config);
 
     if (sel == TEST_OOB)
         return caught_out_of_bounds ? EXIT_SUCCESS : EXIT_FAILURE;
@@ -211,6 +222,18 @@ main(int argc, char **argv)
         return read_null ? EXIT_SUCCESS : EXIT_FAILURE;
 
     return EXIT_SUCCESS;
+
+error:
+    H5E_BEGIN_TRY
+    {
+        H5Pclose(fapl);
+        H5Tclose(type);
+        H5Sclose(space);
+        H5Fclose(fid);
+    }
+    H5E_END_TRY;
+
+    HDfree(config);
 }
 
 #else /* H5_HAVE_WIN32_API */
diff --git a/test/vfd_swmr_vlstr_writer.c b/test/vfd_swmr_vlstr_writer.c
index 6a747a2..9fabc23 100644
--- a/test/vfd_swmr_vlstr_writer.c
+++ b/test/vfd_swmr_vlstr_writer.c
@@ -24,32 +24,35 @@
 
 #ifndef H5_HAVE_WIN32_API
 
-#include <err.h>
-
 enum _step { CREATE = 0, LENGTHEN, SHORTEN, DELETE, NSTEPS } step_t;
 
 static hbool_t caught_out_of_bounds = FALSE;
 
-static void
+static herr_t
 write_vl_dset(hid_t dset, hid_t type, hid_t space, char *data)
 {
     if (H5Dwrite(dset, type, space, space, H5P_DEFAULT, &data) < 0)
-        errx(EXIT_FAILURE, "%s: H5Dwrite", __func__);
+        STACK_ERROR;
     if (H5Dflush(dset) < 0)
-        errx(EXIT_FAILURE, "%s: H5Dflush", __func__);
+        STACK_ERROR;
+
+    return SUCCEED;
+error:
+    return FAIL;
 }
 
 static hid_t
 create_vl_dset(hid_t file, hid_t type, hid_t space, const char *name)
 {
-    hid_t dset;
+    hid_t dset = H5I_INVALID_HID;
 
-    dset = H5Dcreate2(file, name, type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-
-    if (dset == H5I_INVALID_HID)
-        errx(EXIT_FAILURE, "H5Dcreate2");
+    if ((dset = H5Dcreate2(file, name, type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+        STACK_ERROR;
 
     return dset;
+
+error:
+    return H5I_INVALID_HID;
 }
 
 static void
@@ -87,8 +90,12 @@ usage(const char *progname)
 int
 main(int argc, char **argv)
 {
-    hid_t                  fapl, fcpl, fid, space, type;
-    hid_t                  dset[2];
+    hid_t                  fapl    = H5I_INVALID_HID;
+    hid_t                  fcpl    = H5I_INVALID_HID;
+    hid_t                  fid     = H5I_INVALID_HID;
+    hid_t                  space   = H5I_INVALID_HID;
+    hid_t                  type    = H5I_INVALID_HID;
+    hid_t                  dset[2] = {H5I_INVALID_HID, H5I_INVALID_HID};
     char                   content[2][96];
     char                   name[2][96];
     H5F_t *                f;
@@ -102,12 +109,15 @@ main(int argc, char **argv)
     hbool_t                use_vfd_swmr = TRUE;
     const uint64_t         delay_ns     = 100 * 1000 * 1000; /* 100 ms */
     testsel_t              sel          = TEST_NONE;
-    H5F_vfd_swmr_config_t  config;
-    const char *           s_opts   = "SWfn:qt:";
-    struct h5_long_options l_opts[] = {{NULL, 0, '\0'}};
+    H5F_vfd_swmr_config_t *config       = NULL;
+    const char *           s_opts       = "SWfn:qt:";
+    struct h5_long_options l_opts[]     = {{NULL, 0, '\0'}};
 
     HDassert(H5T_C_S1 != H5I_INVALID_HID);
 
+    if (NULL == (config = HDcalloc(1, sizeof(H5F_vfd_swmr_config_t))))
+        PUTS_ERROR("unable to allocate memory");
+
     while ((opt = H5_get_option(argc, (const char *const *)argv, s_opts, l_opts)) != EOF) {
         switch (opt) {
             case 'S':
@@ -122,12 +132,21 @@ main(int argc, char **argv)
             case 'n':
                 errno = 0;
                 tmp   = HDstrtoul(H5_optarg, &end, 0);
-                if (end == H5_optarg || *end != '\0')
-                    errx(EXIT_FAILURE, "couldn't parse `-n` argument `%s`", H5_optarg);
-                else if (errno != 0)
-                    err(EXIT_FAILURE, "couldn't parse `-n` argument `%s`", H5_optarg);
-                else if (tmp > INT_MAX)
-                    errx(EXIT_FAILURE, "`-n` argument `%lu` too large", tmp);
+                if (end == H5_optarg || *end != '\0') {
+                    HDfprintf(stderr, "couldn't parse `-n` argument `%s`", H5_optarg);
+                    AT();
+                    goto error;
+                }
+                else if (errno != 0) {
+                    HDfprintf(stderr, "couldn't parse `-n` argument `%s`", H5_optarg);
+                    AT();
+                    goto error;
+                }
+                else if (tmp > INT_MAX) {
+                    HDfprintf(stderr, "`-n` argument `%lu` too large", tmp);
+                    AT();
+                    goto error;
+                }
                 ntimes = (int)tmp;
                 break;
             case 'q':
@@ -150,53 +169,48 @@ main(int argc, char **argv)
     argc -= H5_optind;
 
     if (argc > 0)
-        errx(EXIT_FAILURE, "unexpected command-line arguments");
+        PUTS_ERROR("unexpected command-line arguments");
 
     /* config, tick_len, max_lag, presume_posix_semantics, writer,
      * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
      * md_file_path, md_file_name, updater_file_path */
-    init_vfd_swmr_config(&config, 4, 7, FALSE, true, TRUE, FALSE, TRUE, 128, "./", "vlstr-shadow", NULL);
+    init_vfd_swmr_config(config, 4, 7, FALSE, true, TRUE, FALSE, TRUE, 128, "./", "vlstr-shadow", NULL);
 
     /* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
-    fapl = vfd_swmr_create_fapl(TRUE, use_vfd_swmr, sel == TEST_OOB, 4096, &config);
-
-    if (fapl < 0)
-        errx(EXIT_FAILURE, "vfd_swmr_create_fapl");
+    if ((fapl = vfd_swmr_create_fapl(TRUE, use_vfd_swmr, sel == TEST_OOB, 4096, config)) < 0)
+        STACK_ERROR;
 
     /* Set fs_strategy (file space strategy) and fs_page_size (file space page size) */
     if ((fcpl = vfd_swmr_create_fcpl(H5F_FSPACE_STRATEGY_PAGE, 4096)) < 0)
-        errx(EXIT_FAILURE, "vfd_swmr_create_fcpl");
+        STACK_ERROR;
 
-    fid = H5Fcreate("vfd_swmr_vlstr.h5", H5F_ACC_TRUNC, fcpl, fapl);
+    if ((fid = H5Fcreate("vfd_swmr_vlstr.h5", H5F_ACC_TRUNC, fcpl, fapl)) < 0)
+        STACK_ERROR;
 
     /* Create the VL string datatype and a scalar dataspace, or a
      * fixed-length string datatype and a simple dataspace.
      */
     if ((type = H5Tcopy(H5T_C_S1)) == H5I_INVALID_HID)
-        errx(EXIT_FAILURE, "H5Tcopy");
+        STACK_ERROR;
 
     if (!variable) {
         if (H5Tset_size(type, 32) < 0)
-            errx(EXIT_FAILURE, "H5Tset_size");
-        space = H5Screate_simple(1, &dims, NULL);
+            STACK_ERROR;
+        if ((space = H5Screate_simple(1, &dims, NULL)) < 0)
+            STACK_ERROR;
     }
     else {
         if (H5Tset_size(type, H5T_VARIABLE) < 0)
-            errx(EXIT_FAILURE, "H5Tset_size");
-        space = H5Screate(H5S_SCALAR);
+            STACK_ERROR;
+        if ((space = H5Screate(H5S_SCALAR)) < 0)
+            STACK_ERROR;
     }
 
-    if (space == H5I_INVALID_HID)
-        errx(EXIT_FAILURE, "H5Screate");
-
     if ((f = H5VL_object_verify(fid, H5I_FILE)) == NULL)
-        errx(EXIT_FAILURE, "H5VL_object_verify");
+        STACK_ERROR;
 
     cache = f->shared->cache;
 
-    if (fid == H5I_INVALID_HID)
-        errx(EXIT_FAILURE, "H5Fcreate");
-
     block_signals(&oldsigs);
 
     print_cache_hits(cache);
@@ -217,27 +231,29 @@ main(int argc, char **argv)
                 (void)HDsnprintf(content[which], sizeof(content[which]), "content %d seq %d short", which,
                                  seq);
                 dset[which] = create_vl_dset(fid, type, space, name[which]);
-                write_vl_dset(dset[which], type, space, content[which]);
+                if (write_vl_dset(dset[which], type, space, content[which]) < 0)
+                    PUTS_ERROR("failed to write to VL dataset");
                 break;
             case LENGTHEN:
                 (void)HDsnprintf(content[which], sizeof(content[which]),
                                  "content %d seq %d long long long long long long long long", which, seq);
-                write_vl_dset(dset[which], type, space, content[which]);
+                if (write_vl_dset(dset[which], type, space, content[which]) < 0)
+                    PUTS_ERROR("failed to write to VL dataset");
                 break;
             case SHORTEN:
                 (void)HDsnprintf(content[which], sizeof(content[which]),
                                  "content %d seq %d medium medium medium", which, seq);
-                write_vl_dset(dset[which], type, space, content[which]);
+                if (write_vl_dset(dset[which], type, space, content[which]) < 0)
+                    PUTS_ERROR("failed to write to VL dataset");
                 break;
             case DELETE:
                 if (H5Dclose(dset[which]) < 0)
-                    errx(EXIT_FAILURE, "H5Dclose");
-                if (H5Ldelete(fid, name[which], H5P_DEFAULT) < 0) {
-                    errx(EXIT_FAILURE, "%s: H5Ldelete(, \"%s\", ) failed", __func__, name[which]);
-                }
+                    STACK_ERROR;
+                if (H5Ldelete(fid, name[which], H5P_DEFAULT) < 0)
+                    STACK_ERROR;
                 break;
             default:
-                errx(EXIT_FAILURE, "%s: unknown step %d", __func__, step);
+                PUTS_ERROR("Unknown operation");
         }
 
         if (caught_out_of_bounds) {
@@ -254,21 +270,35 @@ main(int argc, char **argv)
     restore_signals(&oldsigs);
 
     if (H5Pclose(fapl) < 0)
-        errx(EXIT_FAILURE, "H5Pclose(fapl)");
-
+        STACK_ERROR;
     if (H5Pclose(fcpl) < 0)
-        errx(EXIT_FAILURE, "H5Pclose(fcpl)");
-
+        STACK_ERROR;
     if (H5Tclose(type) < 0)
-        errx(EXIT_FAILURE, "H5Tclose");
-
+        STACK_ERROR;
     if (H5Sclose(space) < 0)
-        errx(EXIT_FAILURE, "H5Sclose");
-
+        STACK_ERROR;
     if (H5Fclose(fid) < 0)
-        errx(EXIT_FAILURE, "H5Fclose");
+        STACK_ERROR;
+
+    HDfree(config);
 
     return EXIT_SUCCESS;
+
+error:
+
+    H5E_BEGIN_TRY
+    {
+        H5Pclose(fapl);
+        H5Pclose(fcpl);
+        H5Tclose(type);
+        H5Sclose(space);
+        H5Fclose(fid);
+    }
+    H5E_END_TRY;
+
+    HDfree(config);
+
+    return EXIT_FAILURE;
 }
 
 #else /* H5_HAVE_WIN32_API */
diff --git a/test/vfd_swmr_zoo_writer.c b/test/vfd_swmr_zoo_writer.c
index 4a6e61c..8ab6ecd 100644
--- a/test/vfd_swmr_zoo_writer.c
+++ b/test/vfd_swmr_zoo_writer.c
@@ -33,14 +33,14 @@ typedef struct _shared_ticks {
     uint64_t reader_tick;
 } shared_ticks_t;
 
-int                          fd_writer_to_reader = -1, fd_reader_to_writer = -1;
-const char *                 fifo_writer_to_reader = "./fifo_writer_to_reader";
-const char *                 fifo_reader_to_writer = "./fifo_reader_to_writer";
-hbool_t                      use_vfd_swmr          = TRUE;
-hbool_t                      use_named_pipe        = TRUE;
-hbool_t                      print_estack          = FALSE;
-static H5F_vfd_swmr_config_t swmr_config;
-static hbool_t               writer;
+int                           fd_writer_to_reader = -1, fd_reader_to_writer = -1;
+const char *                  fifo_writer_to_reader = "./fifo_writer_to_reader";
+const char *                  fifo_reader_to_writer = "./fifo_reader_to_writer";
+hbool_t                       use_vfd_swmr          = TRUE;
+hbool_t                       use_named_pipe        = TRUE;
+hbool_t                       print_estack          = FALSE;
+static H5F_vfd_swmr_config_t *swmr_config           = NULL;
+static hbool_t                writer;
 struct timespec ival = {MAX_READ_LEN_IN_SECONDS, 0}; /* Expected maximal time for reader's validation */
 
 zoo_config_t config = {.proc_num        = 0,
@@ -138,9 +138,10 @@ parse_command_line_options(int argc, char **argv)
 
                 {
                     /* Translate the tick number to time represented by the timespec struct */
-                    float    time = (float)(((unsigned)tmpl * TICK_LEN) / 10.0);
-                    unsigned sec  = (unsigned)time;
-                    unsigned nsec = (unsigned)((time - sec) * 10 * 1000 * 1000);
+                    long  n_ticks = (long)tmpl * TICK_LEN;
+                    float time    = (float)n_ticks / 10.0F;
+                    long  sec     = (long)time;
+                    long  nsec    = (long)((time - (float)sec) * 10 * 1000 * 1000);
 
                     ival.tv_sec  = sec;
                     ival.tv_nsec = nsec;
@@ -247,8 +248,8 @@ notify_and_wait_for_reader(hid_t fid, int verify)
 
     /* During the wait, writer makes repeated HDF5 API calls so as to trigger
      * EOT at approximately the correct time */
-    for (i = 0; i < swmr_config.max_lag + 1; i++) {
-        decisleep(swmr_config.tick_len);
+    for (i = 0; i < swmr_config->max_lag + 1; i++) {
+        decisleep(swmr_config->tick_len);
 
         H5E_BEGIN_TRY
         {
@@ -443,15 +444,29 @@ error:
 int
 main(int argc, char **argv)
 {
-    hid_t                 fapl = H5I_INVALID_HID, fcpl = H5I_INVALID_HID, fid = H5I_INVALID_HID;
-    H5F_t *               f;
-    H5C_t *               cache;
-    struct timespec       lastmsgtime = {.tv_sec = 0, .tv_nsec = 0};
-    char *                progname    = NULL;
-    char *                personality;
-    estack_state_t        es;
-    H5F_vfd_swmr_config_t vfd_swmr_config;
-    int                   notify = 0, verify = 0;
+    hid_t                  fapl = H5I_INVALID_HID, fcpl = H5I_INVALID_HID, fid = H5I_INVALID_HID;
+    H5F_t *                f;
+    H5C_t *                cache;
+    struct timespec        lastmsgtime = {.tv_sec = 0, .tv_nsec = 0};
+    char *                 progname    = NULL;
+    char *                 personality;
+    estack_state_t         es;
+    H5F_vfd_swmr_config_t *vfd_swmr_config = NULL;
+    int                    notify = 0, verify = 0;
+
+    if (NULL == (vfd_swmr_config = HDcalloc(1, sizeof(H5F_vfd_swmr_config_t)))) {
+        H5_FAILED();
+        AT();
+        HDprintf("memory allocation failed");
+        goto error;
+    }
+
+    if (NULL == (swmr_config = HDcalloc(1, sizeof(H5F_vfd_swmr_config_t)))) {
+        H5_FAILED();
+        AT();
+        HDprintf("memory allocation failed");
+        goto error;
+    }
 
     if (H5_basename(argv[0], &progname) < 0) {
         H5_FAILED();
@@ -478,19 +493,19 @@ main(int argc, char **argv)
     /* config, tick_len, max_lag, presume_posix_semantics, writer,
      * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
      * md_file_path, md_file_name, updater_file_path */
-    init_vfd_swmr_config(&vfd_swmr_config, TICK_LEN, 7, FALSE, writer, TRUE, FALSE, TRUE, 128, "./",
+    init_vfd_swmr_config(vfd_swmr_config, TICK_LEN, 7, FALSE, writer, TRUE, FALSE, TRUE, 128, "./",
                          "zoo-shadow", NULL);
 
     /* ? turn off use latest format argument via 1st argument? since later on it reset to early format */
     /* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
-    if ((fapl = vfd_swmr_create_fapl(TRUE, use_vfd_swmr, TRUE, 4096, &vfd_swmr_config)) < 0) {
+    if ((fapl = vfd_swmr_create_fapl(TRUE, use_vfd_swmr, TRUE, 4096, vfd_swmr_config)) < 0) {
         H5_FAILED();
         AT();
         HDprintf("vfd_swmr_create_fapl");
         goto error;
     }
 
-    if (use_vfd_swmr && H5Pget_vfd_swmr_config(fapl, &swmr_config) < 0) {
+    if (use_vfd_swmr && H5Pget_vfd_swmr_config(fapl, swmr_config) < 0) {
         H5_FAILED();
         AT();
         HDprintf("H5Pget_vfd_swmr_config failed");
@@ -656,8 +671,9 @@ main(int argc, char **argv)
         goto error;
     }
 
-    if (progname)
-        HDfree(progname);
+    HDfree(progname);
+    HDfree(vfd_swmr_config);
+    HDfree(swmr_config);
 
     if (use_named_pipe && close_named_pipes() < 0) {
         H5_FAILED();
@@ -688,5 +704,8 @@ error:
         HDremove(fifo_reader_to_writer);
     }
 
+    HDfree(vfd_swmr_config);
+    HDfree(swmr_config);
+
     return EXIT_FAILURE;
 }
diff --git a/testpar/t_prop.c b/testpar/t_prop.c
index 930b895..c08a022 100644
--- a/testpar/t_prop.c
+++ b/testpar/t_prop.c
@@ -69,14 +69,22 @@ test_encode_decode(hid_t orig_pl, int mpi_rank, int recv_proc)
             HDfree(rbuf);
     } /* end if */
 
-    if (0 == mpi_rank)
+    if (0 == mpi_rank) {
+        /* gcc 11 complains about passing MPI_STATUSES_IGNORE as an MPI_Status
+         * array. See the discussion here:
+         *
+         * https://github.com/pmodels/mpich/issues/5687
+         */
+        H5_GCC_DIAG_OFF("stringop-overflow")
         MPI_Waitall(2, req, MPI_STATUSES_IGNORE);
+        H5_GCC_DIAG_ON("stringop-overflow")
+    }
 
     if (NULL != sbuf)
         HDfree(sbuf);
 
     MPI_Barrier(MPI_COMM_WORLD);
-    return (0);
+    return 0;
 }
 
 void
diff --git a/tools/src/h5perf/perf.c b/tools/src/h5perf/perf.c
index 84be7e8..270af57 100644
--- a/tools/src/h5perf/perf.c
+++ b/tools/src/h5perf/perf.c
@@ -457,7 +457,7 @@ parse_args(int argc, char **argv)
         }
     }
 
-    return (0);
+    return 0;
 }
 /*-------------------------------------------------------------------------
  * Function:  getenv_all
@@ -478,14 +478,9 @@ parse_args(int argc, char **argv)
  * Programmer:  Leon Arber
  *              4/4/05
  *
- * Modifications:
- *    Use original getenv if MPI is not initialized. This happens
- *    one uses the PHDF5 library to build a serial nature code.
- *    Albert 2006/04/07
- *
  *-------------------------------------------------------------------------
  */
-char *
+static char *
 getenv_all(MPI_Comm comm, int root, const char *name)
 {
     int          mpi_size, mpi_rank, mpi_initialized, mpi_finalized;
@@ -539,7 +534,9 @@ getenv_all(MPI_Comm comm, int root, const char *name)
 #endif
     }
     else {
-        /* use original getenv */
+        /* Use the original getenv if MPI is not initialized. This happens
+         * if you use the parallel HDF5 library to build a serial program.
+         */
         if (env)
             HDfree(env);
         env = HDgetenv(name);
diff --git a/tools/src/h5perf/pio_engine.c b/tools/src/h5perf/pio_engine.c
index 9d08938..b546c43 100644
--- a/tools/src/h5perf/pio_engine.c
+++ b/tools/src/h5perf/pio_engine.c
@@ -146,7 +146,7 @@ do_pio(parameters param)
     file_descr fd;
     iotype     iot;
 
-    char  fname[FILENAME_MAX];
+    char *fname = NULL;
     long  nf;
     long  ndsets;
     off_t nbytes;         /*number of bytes per dataset  */
@@ -168,6 +168,9 @@ do_pio(parameters param)
     /* IO type */
     iot = param.io_type;
 
+    if (NULL == (fname = HDcalloc(FILENAME_MAX, sizeof(char))))
+        GOTOERROR(FAIL);
+
     switch (iot) {
         case MPIO:
             fd.mpifd   = MPI_FILE_NULL;
@@ -283,7 +286,7 @@ do_pio(parameters param)
         char base_name[256];
 
         HDsnprintf(base_name, sizeof(base_name), "#pio_tmp_%lu", nf);
-        pio_create_filename(iot, base_name, fname, sizeof(fname));
+        pio_create_filename(iot, base_name, fname, FILENAME_MAX);
         if (pio_debug_level > 0)
             HDfprintf(output, "rank %d: data filename=%s\n", pio_mpi_rank_g, fname);
 
@@ -365,8 +368,8 @@ done:
     }
 
     /* release generic resources */
-    if (buffer)
-        HDfree(buffer);
+    HDfree(buffer);
+    HDfree(fname);
     res.ret_code = ret_code;
     return res;
 }
diff --git a/tools/src/h5perf/sio_engine.c b/tools/src/h5perf/sio_engine.c
index e113e82..7781f80 100644
--- a/tools/src/h5perf/sio_engine.c
+++ b/tools/src/h5perf/sio_engine.c
@@ -203,7 +203,7 @@ do_sio(parameters param, results *res)
     /* Open file for write */
 
     HDstrcpy(base_name, "#sio_tmp");
-    sio_create_filename(iot, base_name, fname, sizeof(fname), &param);
+    sio_create_filename(iot, base_name, fname, FILENAME_MAX, &param);
 
     if (sio_debug_level > 0)
         HDfprintf(output, "data filename=%s\n", fname);
-- 
cgit v0.12