diff --git a/MANIFEST b/MANIFEST
index 3210aefa21..687f0f5f4f 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1538,6 +1538,8 @@
 ./tools/testfiles/tcompound.h5
 ./tools/testfiles/tcompound2.h5
 ./tools/testfiles/tcompound_complex.h5
+./tools/testfiles/tcompound_complex2.h5
+./tools/testfiles/tcompound_complex2.ddl
 ./tools/testfiles/tdatareg.h5
 ./tools/testfiles/tdatareg.ddl
 ./tools/testfiles/tdataregR.ddl
@@ -1707,6 +1709,8 @@
 ./tools/testfiles/tvldtypes4.h5
 ./tools/testfiles/tvldtypes5.ddl
 ./tools/testfiles/tvldtypes5.h5
+./tools/testfiles/tvlenstr_array.ddl
+./tools/testfiles/tvlenstr_array.h5
 ./tools/testfiles/tvlstr.h5
 ./tools/testfiles/tvlstr.ddl
 ./tools/testfiles/tvms.ddl
diff --git a/tools/h5dump/CMakeTests.cmake b/tools/h5dump/CMakeTests.cmake
index 346ab60101..a5de05ec21 100644
--- a/tools/h5dump/CMakeTests.cmake
+++ b/tools/h5dump/CMakeTests.cmake
@@ -62,6 +62,7 @@
       ${HDF5_TOOLS_DIR}/testfiles/tcmpdintarray.ddl
       ${HDF5_TOOLS_DIR}/testfiles/tcmpdints.ddl
       ${HDF5_TOOLS_DIR}/testfiles/tcmpdintsize.ddl
+      ${HDF5_TOOLS_DIR}/testfiles/tcompound_complex2.ddl
       ${HDF5_TOOLS_DIR}/testfiles/tcomp-1.ddl
       ${HDF5_TOOLS_DIR}/testfiles/tcomp-2.ddl
       ${HDF5_TOOLS_DIR}/testfiles/tcomp-3.ddl
@@ -173,6 +174,7 @@
       ${HDF5_TOOLS_DIR}/testfiles/tvldtypes3.ddl
       ${HDF5_TOOLS_DIR}/testfiles/tvldtypes4.ddl
       ${HDF5_TOOLS_DIR}/testfiles/tvldtypes5.ddl
+      ${HDF5_TOOLS_DIR}/testfiles/tvlenstr_array.ddl
       ${HDF5_TOOLS_DIR}/testfiles/tvlstr.ddl
       ${HDF5_TOOLS_DIR}/testfiles/tvms.ddl
       ${HDF5_TOOLS_DIR}/testfiles/twidedisplay.ddl
@@ -222,6 +224,7 @@
       ${HDF5_TOOLS_DIR}/testfiles/tcmpdintsize.h5
       ${HDF5_TOOLS_DIR}/testfiles/tcompound.h5
       ${HDF5_TOOLS_DIR}/testfiles/tcompound_complex.h5
+      ${HDF5_TOOLS_DIR}/testfiles/tcompound_complex2.h5
       ${HDF5_TOOLS_DIR}/testfiles/tdatareg.h5
       ${HDF5_TOOLS_DIR}/testfiles/tdset.h5
       ${HDF5_TOOLS_DIR}/testfiles/tempty.h5
@@ -286,6 +289,7 @@
       ${HDF5_TOOLS_DIR}/testfiles/tvldtypes3.h5
       ${HDF5_TOOLS_DIR}/testfiles/tvldtypes4.h5
       ${HDF5_TOOLS_DIR}/testfiles/tvldtypes5.h5
+      ${HDF5_TOOLS_DIR}/testfiles/tvlenstr_array.h5
       ${HDF5_TOOLS_DIR}/testfiles/tvlstr.h5
       ${HDF5_TOOLS_DIR}/testfiles/tvms.h5
       ${HDF5_TOOLS_DIR}/testfiles/zerodim.h5
@@ -850,6 +854,8 @@
           tcomp-4.out.err
           tcompact.out
           tcompact.out.err
+          tcompound_complex.out
+          tcompound_complex.out.err
           tcontents.out
           tcontents.out.err
           tcontiguos.out
@@ -1066,6 +1072,8 @@
           tvldtypes4.out.err
           tvldtypes5.out
           tvldtypes5.out.err
+          tvlenstr_array.out
+          tvlenstr_array.out.err
           tvlstr.out
           tvlstr.out.err
           tvms.out
@@ -1174,6 +1182,7 @@
   ADD_H5ERR_MASK_TEST (tcomp-3 0 "--enable-error-stack;-t;/#6632;-g;/group2;tcompound.h5")
   # test complicated compound datatype
   ADD_H5_TEST (tcomp-4 0 --enable-error-stack tcompound_complex.h5)
+  ADD_H5_TEST (tcompound_complex2 0 --enable-error-stack tcompound_complex2.h5)
   # tests for bitfields and opaque data types
   ADD_H5_TEST (tbitnopaque 0 --enable-error-stack tbitnopaque.h5)
 
@@ -1208,6 +1217,7 @@
 
   #test for file with variable length string data
   ADD_H5_TEST (tvlstr 0 --enable-error-stack tvlstr.h5)
+  ADD_H5_TEST (tvlenstr_array 0 --enable-error-stack tvlenstr_array.h5)
 
   # test for files with array data
   ADD_H5_TEST (tarray1 0 --enable-error-stack tarray1.h5)
diff --git a/tools/h5dump/h5dumpgentest.c b/tools/h5dump/h5dumpgentest.c
index 1cdf6cfe51..4506da2dc0 100644
--- a/tools/h5dump/h5dumpgentest.c
+++ b/tools/h5dump/h5dumpgentest.c
@@ -112,6 +112,8 @@
 #define FILE79  "tintsattrs.h5"
 #define FILE80  "tbitnopaque.h5"
 #define FILE81  "tints4dims.h5"
+#define FILE82  "tcompound_complex2.h5"
+#define FILE83  "tvlenstr_array.h5"
 
 /*-------------------------------------------------------------------------
  * prototypes
@@ -289,14 +291,14 @@ typedef struct s1_t {
 #define F66_DUMMYDBL        "DummyDBL"
 
 /* Declarations for gent_dataset_idx() for "FILE68a" */
-#define F68a_DSET_FIXED		"dset_fixed"
-#define F68a_DSET_FIXED_FILTER	"dset_filter"
-#define F68a_DSET_BTREE		"dset_btree"
-#define F68a_DIM200		200
-#define F68a_DIM100		100
-#define F68a_DIM20		20
-#define F68a_DIM10		10
-#define F68a_CHUNK		5
+#define F68a_DSET_FIXED        "dset_fixed"
+#define F68a_DSET_FIXED_FILTER    "dset_filter"
+#define F68a_DSET_BTREE        "dset_btree"
+#define F68a_DIM200        200
+#define F68a_DIM100        100
+#define F68a_DIM20        20
+#define F68a_DIM10        10
+#define F68a_CHUNK        5
 
 /* "FILE70" macros and for FILE71 */
 /* Name of dataset to create in datafile   */
@@ -371,6 +373,28 @@ typedef struct s1_t {
 #define F81_YDIM        6
 #define F81_ZDIM        4
 
+/* "File 82" macros */
+/* Name of dataset to create in datafile                              */
+#define F82_DATASETNAME    "CompoundComplex1D"
+#define F82_DATASETNAME2   "CompoundComplex2D"
+#define F82_DATASETNAME3   "CompoundComplex3D"
+#define F82_DATASETNAME4   "CompoundComplex4D"
+/* Dataset dimensions                                                 */
+#define F82_DIM32          32
+#define F82_RANK           1
+#define F82_RANK2          2
+#define F82_RANK3          3
+#define F82_RANK4          4
+
+/* "File 83" macros */
+/* Name of dataset to create in datafile                              */
+#define F83_DATASETNAME    "ScalarArrayOfVlenStr"
+#define F83_DATASETNAME2   "CompoundArrayOfVlenStr"
+/* Dataset dimensions                                                 */
+#define F83_DIM            5
+#define F83_RANK           1
+#define F83_ARRAYDIM       3
+
 static void
 gent_group(void)
 {
@@ -7023,16 +7047,16 @@ gent_fs_strategy_threshold(void)
 
 /*
  * Create a file with new format:
- * Create one dataset with (set_chunk, fixed dims, null max. dims) 
- *	so that Fixed Array indexing will be used.
- * Create one dataset with (set_chunk, fixed dims, null max. dims, filter) 
- *	so that Fixed Array indexing will be used.
+ * Create one dataset with (set_chunk, fixed dims, null max. dims)
+ *    so that Fixed Array indexing will be used.
+ * Create one dataset with (set_chunk, fixed dims, null max. dims, filter)
+ *    so that Fixed Array indexing will be used.
  * Create one dataset with (set_chunk, fixed dims, fixed max. dims)
- *	so that Fixed Array indexing will be used.
- * 
+ *    so that Fixed Array indexing will be used.
+ *
  * Modifications:
- *	Fixed Array indexing will be used for chunked dataset
- *	with fixed max. dims setting.
+ *    Fixed Array indexing will be used for chunked dataset
+ *    with fixed max. dims setting.
  *
  */
 static void
@@ -7062,7 +7086,7 @@ gent_dataset_idx(void)
     assert(ret >= 0);
 
     /* dataset with fixed dimensions */
-    dims[0] = F68a_DIM20; 
+    dims[0] = F68a_DIM20;
     dims[1] = F68a_DIM10;
     space = H5Screate_simple(RANK, dims, NULL);
 
@@ -7075,7 +7099,7 @@ gent_dataset_idx(void)
     H5Sclose(space);
 
     /* dataset with non-fixed dimensions */
-    maxdims[0] = F68a_DIM200; 
+    maxdims[0] = F68a_DIM200;
     maxdims[1] = F68a_DIM100;
     space = H5Screate_simple(RANK, dims, maxdims);
 
@@ -9838,6 +9862,407 @@ gent_intsfourdims(void)
     H5Fclose(fid);
 }
 
+/*-------------------------------------------------------------------------
+ * Function:    gent_compound_complex2
+ *
+ * Purpose:     Generate a file to be used in testing compound datatypes of
+ *   various sizes, dimensions, member types and nesting.
+ *-------------------------------------------------------------------------
+ */
+static void gent_compound_complex2(void)
+{
+    /* Third-level nested compound */
+    typedef struct {
+        short  deep_nested_short[10];
+        int    deep_nested_int[10];
+        long   deep_nested_long[10];
+        double deep_nested_double[10];
+        float  deep_nested_float[10];
+    } third_level_compound;
+
+    /* Second-level multiply-nested compounds */
+    typedef struct {
+        unsigned int  multiple_nested_a[5];
+        int           multiple_nested_b[5];
+        unsigned long multiple_nested_c[5];
+        long          multiple_nested_d[5];
+    } further_nested;
+
+    typedef struct {
+        char further_nested_string[11];
+        char further_nested_string_array[4][13];
+        third_level_compound deep_nest;
+    } further_nested2;
+
+    /* First First-level nested compound */
+    typedef struct
+    {
+        double nested_a;
+        char   nested_string[23];
+        char   nested_string_array[4][12];
+    } nested_compound;
+
+    /* Second First-level nested compound */
+    typedef struct
+    {
+        float           a;
+        further_nested  b;
+        further_nested2 c;
+    } multiple_nested_compound;
+
+    /* Compound datatype with different member types */
+    typedef struct
+    {
+        /* Arrays nested inside compound */
+        unsigned int             a[4];
+        int                      b[6];
+        float                    c[2][4];
+        nested_compound          d;   /* Compound inside compound */
+        multiple_nested_compound e;   /* Compound inside compound with further nested compound */
+    } compound;
+
+    compound        buf[F82_DIM32];        /* compound */
+
+    hid_t file, grp=-1, type=-1, space=-1, dset=-1;
+    hid_t dset_array_a, dset_array_b, dset_array_c;
+    hid_t cmpd_tid1, cmpd_tid2, cmpd_tid3;
+    size_t  i;
+    size_t j, k;
+    unsigned dset_array_ndims;
+    hsize_t  dset_array_a_dims[1], dset_array_b_dims[1], dset_array_c_dims[2];
+    hsize_t  nelmts = F82_DIM32;
+
+    file = H5Fcreate(FILE82, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+    if ((space = H5Screate_simple(F82_RANK, &nelmts, NULL)) >= 0) {
+        /* CompoundComplex1D */
+        if ((type = H5Tcreate(H5T_COMPOUND, sizeof(compound))) >= 0) {
+            /* Insert top-level array members */
+            dset_array_ndims = 1; dset_array_a_dims[0] = 4;
+            dset_array_a = H5Tarray_create2(H5T_STD_U32LE, dset_array_ndims, dset_array_a_dims);
+            H5Tinsert(type, "a", HOFFSET(compound, a), dset_array_a);
+            H5Tclose(dset_array_a);
+
+            dset_array_ndims = 1; dset_array_b_dims[0] = 6;
+            dset_array_b = H5Tarray_create2(H5T_STD_I32LE, dset_array_ndims, dset_array_b_dims);
+            H5Tinsert(type, "b", HOFFSET(compound, b), dset_array_b);
+            H5Tclose(dset_array_b);
+
+            dset_array_ndims = 2; dset_array_c_dims[0] = 2; dset_array_c_dims[1] = 4;
+            dset_array_c = H5Tarray_create2(H5T_IEEE_F32LE, dset_array_ndims, dset_array_c_dims);
+            H5Tinsert(type, "c", HOFFSET(compound, c), dset_array_c);
+            H5Tclose(dset_array_c);
+
+            /* Insert first nested compound */
+            hid_t str_type, array;
+            hsize_t dims[1];
+            cmpd_tid1 = H5Tcreate(H5T_COMPOUND, sizeof(nested_compound));
+
+            H5Tinsert(cmpd_tid1, "nested_double", HOFFSET(nested_compound, nested_a), H5T_IEEE_F64LE);
+
+            dims[0] = 1;
+            str_type = mkstr(23, H5T_STR_NULLTERM);
+            array = H5Tarray_create2(str_type, 1, dims);
+            H5Tinsert(cmpd_tid1, "nested_string", HOFFSET(nested_compound, nested_string), array);
+            H5Tclose(array);
+            H5Tclose(str_type);
+
+            dims[0] = 4;
+            str_type = mkstr(12, H5T_STR_NULLTERM);
+            array = H5Tarray_create2(str_type, 1, dims);
+            H5Tinsert(cmpd_tid1, "nested_string_array", HOFFSET(nested_compound, nested_string_array), array);
+            H5Tclose(array);
+            H5Tclose(str_type);
+
+            H5Tinsert(type, "nested_compound", HOFFSET(compound, d), cmpd_tid1);
+
+            /* Insert second nested compound */
+            hid_t nest1, nest2;
+            cmpd_tid2 = H5Tcreate(H5T_COMPOUND, sizeof(multiple_nested_compound));
+
+            H5Tinsert(cmpd_tid2, "nested_float", HOFFSET(multiple_nested_compound, a), H5T_IEEE_F32LE);
+
+            /* Add first further nested compound */
+            nest1 = H5Tcreate(H5T_COMPOUND, sizeof(further_nested));
+
+            dims[0] = 5;
+            array = H5Tarray_create2(H5T_STD_U32LE, 1, dims);
+            H5Tinsert(nest1, "nested_unsigned_int", HOFFSET(further_nested, multiple_nested_a), array);
+            H5Tclose(array);
+
+            array = H5Tarray_create2(H5T_STD_I32LE, 1, dims);
+            H5Tinsert(nest1, "nested_int", HOFFSET(further_nested, multiple_nested_b), array);
+            H5Tclose(array);
+
+            array = H5Tarray_create2(H5T_STD_U64LE, 1, dims);
+            H5Tinsert(nest1, "nested_unsigned_long", HOFFSET(further_nested, multiple_nested_c), array);
+            H5Tclose(array);
+
+            array = H5Tarray_create2(H5T_STD_I64LE, 1, dims);
+            H5Tinsert(nest1, "nested_long", HOFFSET(further_nested, multiple_nested_d), array);
+            H5Tclose(array);
+
+            H5Tinsert(cmpd_tid2, "further_nested_compoundA", HOFFSET(multiple_nested_compound, b), nest1);
+            H5Tclose(nest1);
+
+            /* Add second further nested compound */
+            nest2 = H5Tcreate(H5T_COMPOUND, sizeof(further_nested2));
+
+            dims[0] = 1;
+            str_type = mkstr(11, H5T_STR_NULLTERM);
+            array = H5Tarray_create2(str_type, 1, dims);
+            H5Tinsert(nest2, "nested_string", HOFFSET(further_nested2, further_nested_string), array);
+            H5Tclose(array);
+            H5Tclose(str_type);
+
+            dims[0] = 4;
+            str_type = mkstr(13, H5T_STR_NULLTERM);
+            array = H5Tarray_create2(str_type, 1, dims);
+            H5Tinsert(nest2, "nested_string_array", HOFFSET(further_nested2, further_nested_string_array), array);
+            H5Tclose(array);
+            H5Tclose(str_type);
+
+            /* Add a final third-level nested compound to this second-level compound */
+            cmpd_tid3 = H5Tcreate(H5T_COMPOUND, sizeof(third_level_compound));
+
+            dims[0] = 10;
+            array = H5Tarray_create2(H5T_STD_I16LE, 1, dims);
+            H5Tinsert(cmpd_tid3, "deep_nested_short", HOFFSET(third_level_compound, deep_nested_short), array);
+            H5Tclose(array);
+
+            array = H5Tarray_create2(H5T_STD_I32LE, 1, dims);
+            H5Tinsert(cmpd_tid3, "deep_nested_int", HOFFSET(third_level_compound, deep_nested_int), array);
+            H5Tclose(array);
+
+            array = H5Tarray_create2(H5T_STD_I64LE, 1, dims);
+            H5Tinsert(cmpd_tid3, "deep_nested_long", HOFFSET(third_level_compound, deep_nested_long), array);
+            H5Tclose(array);
+
+            array = H5Tarray_create2(H5T_IEEE_F64LE, 1, dims);
+            H5Tinsert(cmpd_tid3, "deep_nested_double", HOFFSET(third_level_compound, deep_nested_double), array);
+            H5Tclose(array);
+
+            array = H5Tarray_create2(H5T_IEEE_F32LE, 1, dims);
+            H5Tinsert(cmpd_tid3, "deep_nested_float", HOFFSET(third_level_compound, deep_nested_float), array);
+            H5Tclose(array);
+
+            H5Tinsert(nest2, "deep_nested_compound", HOFFSET(further_nested2, deep_nest), cmpd_tid3);
+
+            H5Tinsert(cmpd_tid2, "further_nested_compoundB", HOFFSET(multiple_nested_compound, c), nest2);
+            H5Tclose(nest2);
+
+            H5Tinsert(type, "multiple_nested_compound", HOFFSET(compound, e), cmpd_tid2);
+
+
+            if ((dset = H5Dcreate2(file, F82_DATASETNAME, type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) {
+                for(i = 0; i < nelmts; i++) {
+                    for (j = 0; j < dset_array_a_dims[0]; j++)
+                        buf[i].a[j] = (unsigned int)(j + i*10);
+                    for (j = 0; j < dset_array_b_dims[0]; j++)
+                        buf[i].b[j] = (int)(j - i*10);
+                    for (j = 0; j < dset_array_c_dims[0]; j++)
+                        for (k = 0; k < dset_array_c_dims[1]; k++)
+                            buf[i].c[j][k] = (float)(j + k + i*10) + (float)(j) * 0.1F;
+
+                    /* Set up first nested compound */
+                    buf[i].d.nested_a = (double) i;
+
+                    strcpy(buf[i].d.nested_string, "This is a test string.");
+
+                    for (j = 0; j < 4; j++)
+                        strcpy(buf[i].d.nested_string_array[j], "String test");
+
+                    /* Set up multiple nested compound */
+                    buf[i].e.a = (float) i;
+
+                    for (j = 0; j < 5; j++) {
+                        buf[i].e.b.multiple_nested_a[j] = (unsigned int)(j + i*10);
+                        buf[i].e.b.multiple_nested_b[j] = (int)(j - i*10);
+                        buf[i].e.b.multiple_nested_c[j] = (unsigned long)(j + i*10);
+                        buf[i].e.b.multiple_nested_d[j] = (long)(j - i*10);
+                    }
+
+                    strcpy(buf[i].e.c.further_nested_string, "1234567890");
+                    for (j = 0; j < 4; j++)
+                        strcpy(buf[i].e.c.further_nested_string_array[j], "STRING ARRAY");
+
+                    for (j = 0; j < 10; j++) {
+                        buf[i].e.c.deep_nest.deep_nested_short[j] = (short)(j + i*10);
+                        buf[i].e.c.deep_nest.deep_nested_int[j] = (int)(j - i*10);
+                        buf[i].e.c.deep_nest.deep_nested_long[j] = (long)(j + i*10);
+                        buf[i].e.c.deep_nest.deep_nested_double[j] = (double)(j + i*10);
+                        buf[i].e.c.deep_nest.deep_nested_float[j] = (float)(j + i*10);
+                    }
+                }
+
+                if (H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
+                    fprintf(stderr, "gent_tcompound_complex2 H5Dwrite failed\n");
+
+                H5Dclose(dset);
+            }
+            H5Tclose(type);
+        }
+        H5Tclose(cmpd_tid1);
+        H5Tclose(cmpd_tid2);
+        H5Tclose(cmpd_tid3);
+        H5Sclose(space);
+    }
+
+//    /* CompoundComplex2D */
+//    if ((type = H5Tcreate(H5T_COMPOUND, sizeof(s_t))) >= 0) {
+//        H5Tinsert(type, "a", HOFFSET(s_t, a), H5T_STD_B8LE);
+//        H5Tinsert(type, "b", HOFFSET(s_t, b), H5T_STD_B16LE);
+//        H5Tinsert(type, "c", HOFFSET(s_t, c), H5T_STD_B32LE);
+//        H5Tinsert(type, "d", HOFFSET(s_t, d), H5T_STD_B64LE);
+//        if ((space = H5Screate_simple(F82_RANK2, &nelmts, NULL)) >= 0) {
+//            if ((dset = H5Dcreate2(file, "compound_1", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) {
+//                for(i = 0; i < nelmts; i++) {
+//                    buf5[i].a = (unsigned char)0xff ^ (unsigned char)i;
+//                    buf5[i].b = (unsigned int)0xffff ^ (unsigned int)(i * 16);
+//                    buf5[i].c = (unsigned long)0xffffffff ^ (unsigned long)(i * 32);
+//                    buf5[i].d = (unsigned long long)0xffffffffffffffff ^ (unsigned long long)(i * 64);
+//                }
+//
+//                H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf5);
+//                H5Dclose(dset);
+//            }
+//            H5Sclose(space);
+//        }
+//        H5Tclose(type);
+//    }
+//
+//    /* CompoundComplex3D */
+//    if ((type = H5Tcreate(H5T_COMPOUND, sizeof(s_t))) >= 0) {
+//        H5Tinsert(type, "a", HOFFSET(s_t, a), H5T_STD_B8LE);
+//        H5Tinsert(type, "b", HOFFSET(s_t, b), H5T_STD_B16LE);
+//        H5Tinsert(type, "c", HOFFSET(s_t, c), H5T_STD_B32LE);
+//        H5Tinsert(type, "d", HOFFSET(s_t, d), H5T_STD_B64LE);
+//        if ((space = H5Screate_simple(F82_RANK3, &nelmts, NULL)) >= 0) {
+//            if ((dset = H5Dcreate2(file, "compound_1", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) {
+//                for(i = 0; i < nelmts; i++) {
+//                    buf5[i].a = (unsigned char)0xff ^ (unsigned char)i;
+//                    buf5[i].b = (unsigned int)0xffff ^ (unsigned int)(i * 16);
+//                    buf5[i].c = (unsigned long)0xffffffff ^ (unsigned long)(i * 32);
+//                    buf5[i].d = (unsigned long long)0xffffffffffffffff ^ (unsigned long long)(i * 64);
+//                }
+//
+//                H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf5);
+//                H5Dclose(dset);
+//            }
+//            H5Sclose(space);
+//        }
+//        H5Tclose(type);
+//    }
+//
+//    /* CompoundComplex4D */
+//    if ((type = H5Tcreate(H5T_COMPOUND, sizeof(s_t))) >= 0) {
+//        H5Tinsert(type, "a", HOFFSET(s_t, a), H5T_STD_B8LE);
+//        H5Tinsert(type, "b", HOFFSET(s_t, b), H5T_STD_B16LE);
+//        H5Tinsert(type, "c", HOFFSET(s_t, c), H5T_STD_B32LE);
+//        H5Tinsert(type, "d", HOFFSET(s_t, d), H5T_STD_B64LE);
+//        if ((space = H5Screate_simple(F82_RANK4, &nelmts, NULL)) >= 0) {
+//            if ((dset = H5Dcreate2(file, "compound_1", type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) {
+//                for(i = 0; i < nelmts; i++) {
+//                    buf5[i].a = (unsigned char)0xff ^ (unsigned char)i;
+//                    buf5[i].b = (unsigned int)0xffff ^ (unsigned int)(i * 16);
+//                    buf5[i].c = (unsigned long)0xffffffff ^ (unsigned long)(i * 32);
+//                    buf5[i].d = (unsigned long long)0xffffffffffffffff ^ (unsigned long long)(i * 64);
+//                }
+//
+//                H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf5);
+//                H5Dclose(dset);
+//            }
+//            H5Sclose(space);
+//        }
+//        H5Tclose(type);
+//    }
+
+    H5Fclose(file);
+}
+
+/*-------------------------------------------------------------------------
+ * Function:    gent_vlenstr_array
+ *
+ * Purpose:     Generate a file to be used in testing Arrays of variable
+ *              length strings.
+ *-------------------------------------------------------------------------
+ */
+static void gent_vlenstr_array(void)
+{
+    /* Compound datatype with different member types */
+    typedef struct compound
+    {
+        /* Array of variable-length strings*/
+        const char *vlen_array[F83_ARRAYDIM];
+    } compound;
+    compound        buf[F83_DIM];
+
+    const char *test[F83_ARRAYDIM] = {
+            "This is a variable-length test string.",
+            "This test string is also variable-length.",
+            "A final test of variable-length strings. This string is longer than the others."
+    };
+    const char    *buffer[F83_DIM*F83_ARRAYDIM];
+
+    hid_t  file, type=-1, space=-1, dset=-1;
+    hid_t cmpd_tid1, array_tid;
+    int i, j;
+
+    hsize_t dims[] = {F83_DIM}, arraydim[] = {F83_ARRAYDIM};
+    /* Initialize scalar data */
+    for (i = 0; i < F83_DIM; i++)
+        for (j = 0; j < 3; j++)
+            buffer[j + 3*i] = test[j];
+
+    /* Initialize compound data */
+    for (i = 0; i < F83_DIM; i++)
+        for (j = 0; j < 3; j++)
+            buf[i].vlen_array[j] = test[j];
+
+    file = H5Fcreate(FILE83, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+    if ((space = H5Screate_simple(F83_RANK, dims, NULL)) >= 0) {
+        array_tid = H5Tcopy(H5T_C_S1);
+        H5Tset_size(array_tid, H5T_VARIABLE);
+
+        /* ScalarArrayOfVlenStr */
+        if ((type = H5Tarray_create2(array_tid, F83_RANK, arraydim)) >= 0) {
+            if ((dset = H5Dcreate2(file, F83_DATASETNAME, type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) {
+                if (H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buffer) < 0)
+                    fprintf(stderr, "gent_vlenstr_array H5Dwrite failed\n");
+
+                H5Dclose(dset);
+            }
+            H5Tclose(type);
+        }
+        H5Tclose(array_tid);
+        H5Sclose(space);
+    }
+
+    if ((space = H5Screate_simple(F83_RANK, dims, NULL)) >= 0) {
+        /* CompoundArrayOfVlenStr */
+        if ((type = H5Tcreate(H5T_COMPOUND, sizeof(compound))) >= 0) {
+            cmpd_tid1 = H5Tcopy(H5T_C_S1);
+            H5Tset_size(cmpd_tid1, H5T_VARIABLE);
+
+            array_tid = H5Tarray_create2(cmpd_tid1, F83_RANK, arraydim);
+            H5Tinsert(type, "vlen_str_array", HOFFSET(compound, vlen_array), array_tid);
+
+            if ((dset = H5Dcreate2(file, F83_DATASETNAME2, type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) >= 0) {
+                if (H5Dwrite(dset, type, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0)
+                    fprintf(stderr, "gent_vlenstr_array H5Dwrite failed\n");
+
+                H5Dclose(dset);
+            }
+            H5Tclose(cmpd_tid1);
+            H5Tclose(type);
+        }
+        H5Sclose(space);
+    }
+
+    H5Fclose(file);
+}
+
 
 /*-------------------------------------------------------------------------
  * Function: main
@@ -9892,9 +10317,11 @@ int main(void)
     gent_multi();
     gent_large_objname();
     gent_vlstr();
+    gent_vlenstr_array();
     gent_char();
     gent_attr_all();
     gent_compound_complex();
+    gent_compound_complex2();
     gent_named_dtype_attr();
     gent_null_space();
     gent_zero_dim_size();
diff --git a/tools/h5dump/testh5dump.sh.in b/tools/h5dump/testh5dump.sh.in
index 944fb858b3..ef23d67fb1 100644
--- a/tools/h5dump/testh5dump.sh.in
+++ b/tools/h5dump/testh5dump.sh.in
@@ -104,6 +104,7 @@ $SRC_H5DUMP_TESTFILES/tcmpdattrintsize.h5
 $SRC_H5DUMP_TESTFILES/tcmpdintsize.h5
 $SRC_H5DUMP_TESTFILES/tcompound.h5
 $SRC_H5DUMP_TESTFILES/tcompound_complex.h5
+$SRC_H5DUMP_TESTFILES/tcompound_complex2.h5
 $SRC_H5DUMP_TESTFILES/tdatareg.h5
 $SRC_H5DUMP_TESTFILES/tdset.h5
 $SRC_H5DUMP_TESTFILES/tempty.h5
@@ -169,6 +170,7 @@ $SRC_H5DUMP_TESTFILES/tvldtypes2.h5
 $SRC_H5DUMP_TESTFILES/tvldtypes3.h5
 $SRC_H5DUMP_TESTFILES/tvldtypes4.h5
 $SRC_H5DUMP_TESTFILES/tvldtypes5.h5
+$SRC_H5DUMP_TESTFILES/tvlenstr_array.h5
 $SRC_H5DUMP_TESTFILES/tvlstr.h5
 $SRC_H5DUMP_TESTFILES/tvms.h5
 "
@@ -229,6 +231,7 @@ $SRC_H5DUMP_TESTFILES/tcomp-1.ddl
 $SRC_H5DUMP_TESTFILES/tcomp-2.ddl
 $SRC_H5DUMP_TESTFILES/tcomp-3.ddl
 $SRC_H5DUMP_TESTFILES/tcomp-4.ddl
+$SRC_H5DUMP_TESTFILES/tcompound_complex2.ddl
 $SRC_H5DUMP_TESTFILES/tcompact.ddl
 $SRC_H5DUMP_TESTFILES/tcontents.ddl
 $SRC_H5DUMP_TESTFILES/tcontiguos.ddl
@@ -342,6 +345,7 @@ $SRC_H5DUMP_TESTFILES/tvldtypes2.ddl
 $SRC_H5DUMP_TESTFILES/tvldtypes3.ddl
 $SRC_H5DUMP_TESTFILES/tvldtypes4.ddl
 $SRC_H5DUMP_TESTFILES/tvldtypes5.ddl
+$SRC_H5DUMP_TESTFILES/tvlenstr_array.ddl
 $SRC_H5DUMP_TESTFILES/tvlstr.ddl
 $SRC_H5DUMP_TESTFILES/tvms.ddl
 $SRC_H5DUMP_TESTFILES/twidedisplay.ddl
@@ -1034,6 +1038,7 @@ TOOLTEST tcomp-2.ddl --enable-error-stack -N /type1 --any_path /type2 --any_path
 TOOLTEST4 tcomp-3.ddl --enable-error-stack -t /#6632 -g /group2 tcompound.h5
 # test complicated compound datatype
 TOOLTEST tcomp-4.ddl --enable-error-stack tcompound_complex.h5
+TOOLTEST tcompound_complex.ddl --enable-error-stack tcompound_complex2.h5
 # tests for bitfields and opaque data types
 TOOLTEST tbitnopaque.ddl --enable-error-stack tbitnopaque.h5
 
@@ -1068,6 +1073,7 @@ TOOLTEST tvldtypes5.ddl --enable-error-stack tvldtypes5.h5
 
 #test for file with variable length string data
 TOOLTEST tvlstr.ddl --enable-error-stack tvlstr.h5
+TOOLTEST tvlenstr_array.ddl --enable-error-stack tvlenstr_array.h5
 
 # test for files with array data
 TOOLTEST tarray1.ddl --enable-error-stack tarray1.h5
diff --git a/tools/testfiles/tcompound_complex2.ddl b/tools/testfiles/tcompound_complex2.ddl
new file mode 100644
index 0000000000..562235d415
--- /dev/null
+++ b/tools/testfiles/tcompound_complex2.ddl
@@ -0,0 +1,1051 @@
+HDF5 "tcompound_complex2.h5" {
+GROUP "/" {
+   DATASET "CompoundComplex1D" {
+      DATATYPE  H5T_COMPOUND {
+         H5T_ARRAY { [4] H5T_STD_U32LE } "a";
+         H5T_ARRAY { [6] H5T_STD_I32LE } "b";
+         H5T_ARRAY { [2][4] H5T_IEEE_F32LE } "c";
+         H5T_COMPOUND {
+            H5T_IEEE_F64LE "nested_double";
+            H5T_ARRAY { [1] H5T_STRING {
+               STRSIZE 23;
+               STRPAD H5T_STR_NULLTERM;
+               CSET H5T_CSET_ASCII;
+               CTYPE H5T_C_S1;
+            } } "nested_string";
+            H5T_ARRAY { [4] H5T_STRING {
+               STRSIZE 12;
+               STRPAD H5T_STR_NULLTERM;
+               CSET H5T_CSET_ASCII;
+               CTYPE H5T_C_S1;
+            } } "nested_string_array";
+         } "nested_compound";
+         H5T_COMPOUND {
+            H5T_IEEE_F32LE "nested_float";
+            H5T_COMPOUND {
+               H5T_ARRAY { [5] H5T_STD_U32LE } "nested_unsigned_int";
+               H5T_ARRAY { [5] H5T_STD_I32LE } "nested_int";
+               H5T_ARRAY { [5] H5T_STD_U64LE } "nested_unsigned_long";
+               H5T_ARRAY { [5] H5T_STD_I64LE } "nested_long";
+            } "further_nested_compoundA";
+            H5T_COMPOUND {
+               H5T_ARRAY { [1] H5T_STRING {
+                  STRSIZE 11;
+                  STRPAD H5T_STR_NULLTERM;
+                  CSET H5T_CSET_ASCII;
+                  CTYPE H5T_C_S1;
+               } } "nested_string";
+               H5T_ARRAY { [4] H5T_STRING {
+                  STRSIZE 13;
+                  STRPAD H5T_STR_NULLTERM;
+                  CSET H5T_CSET_ASCII;
+                  CTYPE H5T_C_S1;
+               } } "nested_string_array";
+               H5T_COMPOUND {
+                  H5T_ARRAY { [10] H5T_STD_I16LE } "deep_nested_short";
+                  H5T_ARRAY { [10] H5T_STD_I32LE } "deep_nested_int";
+                  H5T_ARRAY { [10] H5T_STD_I64LE } "deep_nested_long";
+                  H5T_ARRAY { [10] H5T_IEEE_F64LE } "deep_nested_double";
+                  H5T_ARRAY { [10] H5T_IEEE_F32LE } "deep_nested_float";
+               } "deep_nested_compound";
+            } "further_nested_compoundB";
+         } "multiple_nested_compound";
+      }
+      DATASPACE  SIMPLE { ( 32 ) / ( 32 ) }
+      DATA {
+      (0): {
+            [ 0, 1, 2, 3 ],
+            [ 0, 1, 2, 3, 4, 5 ],
+            [ 0, 1, 2, 3,
+               1.1, 2.1, 3.1, 4.1 ],
+            {
+               0,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               0,
+               {
+                  [ 0, 1, 2, 3, 4 ],
+                  [ 0, 1, 2, 3, 4 ],
+                  [ 0, 1, 2, 3, 4 ],
+                  [ 0, 1, 2, 3, 4 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ],
+                     [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ],
+                     [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ],
+                     [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ],
+                     [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
+                  }
+               }
+            }
+         },
+      (1): {
+            [ 10, 11, 12, 13 ],
+            [ -10, -9, -8, -7, -6, -5 ],
+            [ 10, 11, 12, 13,
+               11.1, 12.1, 13.1, 14.1 ],
+            {
+               1,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               1,
+               {
+                  [ 10, 11, 12, 13, 14 ],
+                  [ -10, -9, -8, -7, -6 ],
+                  [ 10, 11, 12, 13, 14 ],
+                  [ -10, -9, -8, -7, -6 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ],
+                     [ -10, -9, -8, -7, -6, -5, -4, -3, -2, -1 ],
+                     [ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ],
+                     [ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ],
+                     [ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ]
+                  }
+               }
+            }
+         },
+      (2): {
+            [ 20, 21, 22, 23 ],
+            [ -20, -19, -18, -17, -16, -15 ],
+            [ 20, 21, 22, 23,
+               21.1, 22.1, 23.1, 24.1 ],
+            {
+               2,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               2,
+               {
+                  [ 20, 21, 22, 23, 24 ],
+                  [ -20, -19, -18, -17, -16 ],
+                  [ 20, 21, 22, 23, 24 ],
+                  [ -20, -19, -18, -17, -16 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ],
+                     [ -20, -19, -18, -17, -16, -15, -14, -13, -12, -11 ],
+                     [ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ],
+                     [ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ],
+                     [ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ]
+                  }
+               }
+            }
+         },
+      (3): {
+            [ 30, 31, 32, 33 ],
+            [ -30, -29, -28, -27, -26, -25 ],
+            [ 30, 31, 32, 33,
+               31.1, 32.1, 33.1, 34.1 ],
+            {
+               3,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               3,
+               {
+                  [ 30, 31, 32, 33, 34 ],
+                  [ -30, -29, -28, -27, -26 ],
+                  [ 30, 31, 32, 33, 34 ],
+                  [ -30, -29, -28, -27, -26 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 ],
+                     [ -30, -29, -28, -27, -26, -25, -24, -23, -22, -21 ],
+                     [ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 ],
+                     [ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 ],
+                     [ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 ]
+                  }
+               }
+            }
+         },
+      (4): {
+            [ 40, 41, 42, 43 ],
+            [ -40, -39, -38, -37, -36, -35 ],
+            [ 40, 41, 42, 43,
+               41.1, 42.1, 43.1, 44.1 ],
+            {
+               4,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               4,
+               {
+                  [ 40, 41, 42, 43, 44 ],
+                  [ -40, -39, -38, -37, -36 ],
+                  [ 40, 41, 42, 43, 44 ],
+                  [ -40, -39, -38, -37, -36 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 ],
+                     [ -40, -39, -38, -37, -36, -35, -34, -33, -32, -31 ],
+                     [ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 ],
+                     [ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 ],
+                     [ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 ]
+                  }
+               }
+            }
+         },
+      (5): {
+            [ 50, 51, 52, 53 ],
+            [ -50, -49, -48, -47, -46, -45 ],
+            [ 50, 51, 52, 53,
+               51.1, 52.1, 53.1, 54.1 ],
+            {
+               5,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               5,
+               {
+                  [ 50, 51, 52, 53, 54 ],
+                  [ -50, -49, -48, -47, -46 ],
+                  [ 50, 51, 52, 53, 54 ],
+                  [ -50, -49, -48, -47, -46 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59 ],
+                     [ -50, -49, -48, -47, -46, -45, -44, -43, -42, -41 ],
+                     [ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59 ],
+                     [ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59 ],
+                     [ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59 ]
+                  }
+               }
+            }
+         },
+      (6): {
+            [ 60, 61, 62, 63 ],
+            [ -60, -59, -58, -57, -56, -55 ],
+            [ 60, 61, 62, 63,
+               61.1, 62.1, 63.1, 64.1 ],
+            {
+               6,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               6,
+               {
+                  [ 60, 61, 62, 63, 64 ],
+                  [ -60, -59, -58, -57, -56 ],
+                  [ 60, 61, 62, 63, 64 ],
+                  [ -60, -59, -58, -57, -56 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 ],
+                     [ -60, -59, -58, -57, -56, -55, -54, -53, -52, -51 ],
+                     [ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 ],
+                     [ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 ],
+                     [ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 ]
+                  }
+               }
+            }
+         },
+      (7): {
+            [ 70, 71, 72, 73 ],
+            [ -70, -69, -68, -67, -66, -65 ],
+            [ 70, 71, 72, 73,
+               71.1, 72.1, 73.1, 74.1 ],
+            {
+               7,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               7,
+               {
+                  [ 70, 71, 72, 73, 74 ],
+                  [ -70, -69, -68, -67, -66 ],
+                  [ 70, 71, 72, 73, 74 ],
+                  [ -70, -69, -68, -67, -66 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79 ],
+                     [ -70, -69, -68, -67, -66, -65, -64, -63, -62, -61 ],
+                     [ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79 ],
+                     [ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79 ],
+                     [ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79 ]
+                  }
+               }
+            }
+         },
+      (8): {
+            [ 80, 81, 82, 83 ],
+            [ -80, -79, -78, -77, -76, -75 ],
+            [ 80, 81, 82, 83,
+               81.1, 82.1, 83.1, 84.1 ],
+            {
+               8,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               8,
+               {
+                  [ 80, 81, 82, 83, 84 ],
+                  [ -80, -79, -78, -77, -76 ],
+                  [ 80, 81, 82, 83, 84 ],
+                  [ -80, -79, -78, -77, -76 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89 ],
+                     [ -80, -79, -78, -77, -76, -75, -74, -73, -72, -71 ],
+                     [ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89 ],
+                     [ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89 ],
+                     [ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89 ]
+                  }
+               }
+            }
+         },
+      (9): {
+            [ 90, 91, 92, 93 ],
+            [ -90, -89, -88, -87, -86, -85 ],
+            [ 90, 91, 92, 93,
+               91.1, 92.1, 93.1, 94.1 ],
+            {
+               9,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               9,
+               {
+                  [ 90, 91, 92, 93, 94 ],
+                  [ -90, -89, -88, -87, -86 ],
+                  [ 90, 91, 92, 93, 94 ],
+                  [ -90, -89, -88, -87, -86 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 ],
+                     [ -90, -89, -88, -87, -86, -85, -84, -83, -82, -81 ],
+                     [ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 ],
+                     [ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 ],
+                     [ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 ]
+                  }
+               }
+            }
+         },
+      (10): {
+            [ 100, 101, 102, 103 ],
+            [ -100, -99, -98, -97, -96, -95 ],
+            [ 100, 101, 102, 103,
+               101.1, 102.1, 103.1, 104.1 ],
+            {
+               10,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               10,
+               {
+                  [ 100, 101, 102, 103, 104 ],
+                  [ -100, -99, -98, -97, -96 ],
+                  [ 100, 101, 102, 103, 104 ],
+                  [ -100, -99, -98, -97, -96 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109 ],
+                     [ -100, -99, -98, -97, -96, -95, -94, -93, -92, -91 ],
+                     [ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109 ],
+                     [ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109 ],
+                     [ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109 ]
+                  }
+               }
+            }
+         },
+      (11): {
+            [ 110, 111, 112, 113 ],
+            [ -110, -109, -108, -107, -106, -105 ],
+            [ 110, 111, 112, 113,
+               111.1, 112.1, 113.1, 114.1 ],
+            {
+               11,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               11,
+               {
+                  [ 110, 111, 112, 113, 114 ],
+                  [ -110, -109, -108, -107, -106 ],
+                  [ 110, 111, 112, 113, 114 ],
+                  [ -110, -109, -108, -107, -106 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ],
+                     [ -110, -109, -108, -107, -106, -105, -104, -103, -102, -101 ],
+                     [ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ],
+                     [ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ],
+                     [ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 ]
+                  }
+               }
+            }
+         },
+      (12): {
+            [ 120, 121, 122, 123 ],
+            [ -120, -119, -118, -117, -116, -115 ],
+            [ 120, 121, 122, 123,
+               121.1, 122.1, 123.1, 124.1 ],
+            {
+               12,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               12,
+               {
+                  [ 120, 121, 122, 123, 124 ],
+                  [ -120, -119, -118, -117, -116 ],
+                  [ 120, 121, 122, 123, 124 ],
+                  [ -120, -119, -118, -117, -116 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129 ],
+                     [ -120, -119, -118, -117, -116, -115, -114, -113, -112, -111 ],
+                     [ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129 ],
+                     [ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129 ],
+                     [ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129 ]
+                  }
+               }
+            }
+         },
+      (13): {
+            [ 130, 131, 132, 133 ],
+            [ -130, -129, -128, -127, -126, -125 ],
+            [ 130, 131, 132, 133,
+               131.1, 132.1, 133.1, 134.1 ],
+            {
+               13,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               13,
+               {
+                  [ 130, 131, 132, 133, 134 ],
+                  [ -130, -129, -128, -127, -126 ],
+                  [ 130, 131, 132, 133, 134 ],
+                  [ -130, -129, -128, -127, -126 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139 ],
+                     [ -130, -129, -128, -127, -126, -125, -124, -123, -122, -121 ],
+                     [ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139 ],
+                     [ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139 ],
+                     [ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139 ]
+                  }
+               }
+            }
+         },
+      (14): {
+            [ 140, 141, 142, 143 ],
+            [ -140, -139, -138, -137, -136, -135 ],
+            [ 140, 141, 142, 143,
+               141.1, 142.1, 143.1, 144.1 ],
+            {
+               14,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               14,
+               {
+                  [ 140, 141, 142, 143, 144 ],
+                  [ -140, -139, -138, -137, -136 ],
+                  [ 140, 141, 142, 143, 144 ],
+                  [ -140, -139, -138, -137, -136 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149 ],
+                     [ -140, -139, -138, -137, -136, -135, -134, -133, -132, -131 ],
+                     [ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149 ],
+                     [ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149 ],
+                     [ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149 ]
+                  }
+               }
+            }
+         },
+      (15): {
+            [ 150, 151, 152, 153 ],
+            [ -150, -149, -148, -147, -146, -145 ],
+            [ 150, 151, 152, 153,
+               151.1, 152.1, 153.1, 154.1 ],
+            {
+               15,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               15,
+               {
+                  [ 150, 151, 152, 153, 154 ],
+                  [ -150, -149, -148, -147, -146 ],
+                  [ 150, 151, 152, 153, 154 ],
+                  [ -150, -149, -148, -147, -146 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159 ],
+                     [ -150, -149, -148, -147, -146, -145, -144, -143, -142, -141 ],
+                     [ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159 ],
+                     [ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159 ],
+                     [ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159 ]
+                  }
+               }
+            }
+         },
+      (16): {
+            [ 160, 161, 162, 163 ],
+            [ -160, -159, -158, -157, -156, -155 ],
+            [ 160, 161, 162, 163,
+               161.1, 162.1, 163.1, 164.1 ],
+            {
+               16,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               16,
+               {
+                  [ 160, 161, 162, 163, 164 ],
+                  [ -160, -159, -158, -157, -156 ],
+                  [ 160, 161, 162, 163, 164 ],
+                  [ -160, -159, -158, -157, -156 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169 ],
+                     [ -160, -159, -158, -157, -156, -155, -154, -153, -152, -151 ],
+                     [ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169 ],
+                     [ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169 ],
+                     [ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169 ]
+                  }
+               }
+            }
+         },
+      (17): {
+            [ 170, 171, 172, 173 ],
+            [ -170, -169, -168, -167, -166, -165 ],
+            [ 170, 171, 172, 173,
+               171.1, 172.1, 173.1, 174.1 ],
+            {
+               17,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               17,
+               {
+                  [ 170, 171, 172, 173, 174 ],
+                  [ -170, -169, -168, -167, -166 ],
+                  [ 170, 171, 172, 173, 174 ],
+                  [ -170, -169, -168, -167, -166 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179 ],
+                     [ -170, -169, -168, -167, -166, -165, -164, -163, -162, -161 ],
+                     [ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179 ],
+                     [ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179 ],
+                     [ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179 ]
+                  }
+               }
+            }
+         },
+      (18): {
+            [ 180, 181, 182, 183 ],
+            [ -180, -179, -178, -177, -176, -175 ],
+            [ 180, 181, 182, 183,
+               181.1, 182.1, 183.1, 184.1 ],
+            {
+               18,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               18,
+               {
+                  [ 180, 181, 182, 183, 184 ],
+                  [ -180, -179, -178, -177, -176 ],
+                  [ 180, 181, 182, 183, 184 ],
+                  [ -180, -179, -178, -177, -176 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189 ],
+                     [ -180, -179, -178, -177, -176, -175, -174, -173, -172, -171 ],
+                     [ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189 ],
+                     [ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189 ],
+                     [ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189 ]
+                  }
+               }
+            }
+         },
+      (19): {
+            [ 190, 191, 192, 193 ],
+            [ -190, -189, -188, -187, -186, -185 ],
+            [ 190, 191, 192, 193,
+               191.1, 192.1, 193.1, 194.1 ],
+            {
+               19,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               19,
+               {
+                  [ 190, 191, 192, 193, 194 ],
+                  [ -190, -189, -188, -187, -186 ],
+                  [ 190, 191, 192, 193, 194 ],
+                  [ -190, -189, -188, -187, -186 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199 ],
+                     [ -190, -189, -188, -187, -186, -185, -184, -183, -182, -181 ],
+                     [ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199 ],
+                     [ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199 ],
+                     [ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199 ]
+                  }
+               }
+            }
+         },
+      (20): {
+            [ 200, 201, 202, 203 ],
+            [ -200, -199, -198, -197, -196, -195 ],
+            [ 200, 201, 202, 203,
+               201.1, 202.1, 203.1, 204.1 ],
+            {
+               20,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               20,
+               {
+                  [ 200, 201, 202, 203, 204 ],
+                  [ -200, -199, -198, -197, -196 ],
+                  [ 200, 201, 202, 203, 204 ],
+                  [ -200, -199, -198, -197, -196 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209 ],
+                     [ -200, -199, -198, -197, -196, -195, -194, -193, -192, -191 ],
+                     [ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209 ],
+                     [ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209 ],
+                     [ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209 ]
+                  }
+               }
+            }
+         },
+      (21): {
+            [ 210, 211, 212, 213 ],
+            [ -210, -209, -208, -207, -206, -205 ],
+            [ 210, 211, 212, 213,
+               211.1, 212.1, 213.1, 214.1 ],
+            {
+               21,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               21,
+               {
+                  [ 210, 211, 212, 213, 214 ],
+                  [ -210, -209, -208, -207, -206 ],
+                  [ 210, 211, 212, 213, 214 ],
+                  [ -210, -209, -208, -207, -206 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219 ],
+                     [ -210, -209, -208, -207, -206, -205, -204, -203, -202, -201 ],
+                     [ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219 ],
+                     [ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219 ],
+                     [ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219 ]
+                  }
+               }
+            }
+         },
+      (22): {
+            [ 220, 221, 222, 223 ],
+            [ -220, -219, -218, -217, -216, -215 ],
+            [ 220, 221, 222, 223,
+               221.1, 222.1, 223.1, 224.1 ],
+            {
+               22,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               22,
+               {
+                  [ 220, 221, 222, 223, 224 ],
+                  [ -220, -219, -218, -217, -216 ],
+                  [ 220, 221, 222, 223, 224 ],
+                  [ -220, -219, -218, -217, -216 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229 ],
+                     [ -220, -219, -218, -217, -216, -215, -214, -213, -212, -211 ],
+                     [ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229 ],
+                     [ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229 ],
+                     [ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229 ]
+                  }
+               }
+            }
+         },
+      (23): {
+            [ 230, 231, 232, 233 ],
+            [ -230, -229, -228, -227, -226, -225 ],
+            [ 230, 231, 232, 233,
+               231.1, 232.1, 233.1, 234.1 ],
+            {
+               23,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               23,
+               {
+                  [ 230, 231, 232, 233, 234 ],
+                  [ -230, -229, -228, -227, -226 ],
+                  [ 230, 231, 232, 233, 234 ],
+                  [ -230, -229, -228, -227, -226 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239 ],
+                     [ -230, -229, -228, -227, -226, -225, -224, -223, -222, -221 ],
+                     [ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239 ],
+                     [ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239 ],
+                     [ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239 ]
+                  }
+               }
+            }
+         },
+      (24): {
+            [ 240, 241, 242, 243 ],
+            [ -240, -239, -238, -237, -236, -235 ],
+            [ 240, 241, 242, 243,
+               241.1, 242.1, 243.1, 244.1 ],
+            {
+               24,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               24,
+               {
+                  [ 240, 241, 242, 243, 244 ],
+                  [ -240, -239, -238, -237, -236 ],
+                  [ 240, 241, 242, 243, 244 ],
+                  [ -240, -239, -238, -237, -236 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249 ],
+                     [ -240, -239, -238, -237, -236, -235, -234, -233, -232, -231 ],
+                     [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249 ],
+                     [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249 ],
+                     [ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249 ]
+                  }
+               }
+            }
+         },
+      (25): {
+            [ 250, 251, 252, 253 ],
+            [ -250, -249, -248, -247, -246, -245 ],
+            [ 250, 251, 252, 253,
+               251.1, 252.1, 253.1, 254.1 ],
+            {
+               25,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               25,
+               {
+                  [ 250, 251, 252, 253, 254 ],
+                  [ -250, -249, -248, -247, -246 ],
+                  [ 250, 251, 252, 253, 254 ],
+                  [ -250, -249, -248, -247, -246 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259 ],
+                     [ -250, -249, -248, -247, -246, -245, -244, -243, -242, -241 ],
+                     [ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259 ],
+                     [ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259 ],
+                     [ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259 ]
+                  }
+               }
+            }
+         },
+      (26): {
+            [ 260, 261, 262, 263 ],
+            [ -260, -259, -258, -257, -256, -255 ],
+            [ 260, 261, 262, 263,
+               261.1, 262.1, 263.1, 264.1 ],
+            {
+               26,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               26,
+               {
+                  [ 260, 261, 262, 263, 264 ],
+                  [ -260, -259, -258, -257, -256 ],
+                  [ 260, 261, 262, 263, 264 ],
+                  [ -260, -259, -258, -257, -256 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269 ],
+                     [ -260, -259, -258, -257, -256, -255, -254, -253, -252, -251 ],
+                     [ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269 ],
+                     [ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269 ],
+                     [ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269 ]
+                  }
+               }
+            }
+         },
+      (27): {
+            [ 270, 271, 272, 273 ],
+            [ -270, -269, -268, -267, -266, -265 ],
+            [ 270, 271, 272, 273,
+               271.1, 272.1, 273.1, 274.1 ],
+            {
+               27,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               27,
+               {
+                  [ 270, 271, 272, 273, 274 ],
+                  [ -270, -269, -268, -267, -266 ],
+                  [ 270, 271, 272, 273, 274 ],
+                  [ -270, -269, -268, -267, -266 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279 ],
+                     [ -270, -269, -268, -267, -266, -265, -264, -263, -262, -261 ],
+                     [ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279 ],
+                     [ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279 ],
+                     [ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279 ]
+                  }
+               }
+            }
+         },
+      (28): {
+            [ 280, 281, 282, 283 ],
+            [ -280, -279, -278, -277, -276, -275 ],
+            [ 280, 281, 282, 283,
+               281.1, 282.1, 283.1, 284.1 ],
+            {
+               28,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               28,
+               {
+                  [ 280, 281, 282, 283, 284 ],
+                  [ -280, -279, -278, -277, -276 ],
+                  [ 280, 281, 282, 283, 284 ],
+                  [ -280, -279, -278, -277, -276 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289 ],
+                     [ -280, -279, -278, -277, -276, -275, -274, -273, -272, -271 ],
+                     [ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289 ],
+                     [ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289 ],
+                     [ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289 ]
+                  }
+               }
+            }
+         },
+      (29): {
+            [ 290, 291, 292, 293 ],
+            [ -290, -289, -288, -287, -286, -285 ],
+            [ 290, 291, 292, 293,
+               291.1, 292.1, 293.1, 294.1 ],
+            {
+               29,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               29,
+               {
+                  [ 290, 291, 292, 293, 294 ],
+                  [ -290, -289, -288, -287, -286 ],
+                  [ 290, 291, 292, 293, 294 ],
+                  [ -290, -289, -288, -287, -286 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299 ],
+                     [ -290, -289, -288, -287, -286, -285, -284, -283, -282, -281 ],
+                     [ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299 ],
+                     [ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299 ],
+                     [ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299 ]
+                  }
+               }
+            }
+         },
+      (30): {
+            [ 300, 301, 302, 303 ],
+            [ -300, -299, -298, -297, -296, -295 ],
+            [ 300, 301, 302, 303,
+               301.1, 302.1, 303.1, 304.1 ],
+            {
+               30,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               30,
+               {
+                  [ 300, 301, 302, 303, 304 ],
+                  [ -300, -299, -298, -297, -296 ],
+                  [ 300, 301, 302, 303, 304 ],
+                  [ -300, -299, -298, -297, -296 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309 ],
+                     [ -300, -299, -298, -297, -296, -295, -294, -293, -292, -291 ],
+                     [ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309 ],
+                     [ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309 ],
+                     [ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309 ]
+                  }
+               }
+            }
+         },
+      (31): {
+            [ 310, 311, 312, 313 ],
+            [ -310, -309, -308, -307, -306, -305 ],
+            [ 310, 311, 312, 313,
+               311.1, 312.1, 313.1, 314.1 ],
+            {
+               31,
+               [ "This is a test string." ],
+               [ "String test", "String test", "String test", "String test" ]
+            },
+            {
+               31,
+               {
+                  [ 310, 311, 312, 313, 314 ],
+                  [ -310, -309, -308, -307, -306 ],
+                  [ 310, 311, 312, 313, 314 ],
+                  [ -310, -309, -308, -307, -306 ]
+               },
+               {
+                  [ "1234567890" ],
+                  [ "STRING ARRAY", "STRING ARRAY", "STRING ARRAY", "STRING ARRAY" ],
+                  {
+                     [ 310, 311, 312, 313, 314, 315, 316, 317, 318, 319 ],
+                     [ -310, -309, -308, -307, -306, -305, -304, -303, -302, -301 ],
+                     [ 310, 311, 312, 313, 314, 315, 316, 317, 318, 319 ],
+                     [ 310, 311, 312, 313, 314, 315, 316, 317, 318, 319 ],
+                     [ 310, 311, 312, 313, 314, 315, 316, 317, 318, 319 ]
+                  }
+               }
+            }
+         }
+      }
+   }
+}
+}
diff --git a/tools/testfiles/tcompound_complex2.h5 b/tools/testfiles/tcompound_complex2.h5
new file mode 100644
index 0000000000..eee60739b4
Binary files /dev/null and b/tools/testfiles/tcompound_complex2.h5 differ
diff --git a/tools/testfiles/tvlenstr_array.ddl b/tools/testfiles/tvlenstr_array.ddl
new file mode 100644
index 0000000000..87efbb62d0
--- /dev/null
+++ b/tools/testfiles/tvlenstr_array.ddl
@@ -0,0 +1,48 @@
+HDF5 "tvlenstr_array.h5" {
+GROUP "/" {
+   DATASET "CompoundArrayOfVlenStr" {
+      DATATYPE  H5T_COMPOUND {
+         H5T_ARRAY { [3] H5T_STRING {
+            STRSIZE H5T_VARIABLE;
+            STRPAD H5T_STR_NULLTERM;
+            CSET H5T_CSET_ASCII;
+            CTYPE H5T_C_S1;
+         } } "vlen_str_array";
+      }
+      DATASPACE  SIMPLE { ( 5 ) / ( 5 ) }
+      DATA {
+      (0): {
+            [ "This is a variable-length test string.", "This test string is also variable-length.", "A final test of variable-length strings. This string is longer than the others." ]
+         },
+      (1): {
+            [ "This is a variable-length test string.", "This test string is also variable-length.", "A final test of variable-length strings. This string is longer than the others." ]
+         },
+      (2): {
+            [ "This is a variable-length test string.", "This test string is also variable-length.", "A final test of variable-length strings. This string is longer than the others." ]
+         },
+      (3): {
+            [ "This is a variable-length test string.", "This test string is also variable-length.", "A final test of variable-length strings. This string is longer than the others." ]
+         },
+      (4): {
+            [ "This is a variable-length test string.", "This test string is also variable-length.", "A final test of variable-length strings. This string is longer than the others." ]
+         }
+      }
+   }
+   DATASET "ScalarArrayOfVlenStr" {
+      DATATYPE  H5T_ARRAY { [3] H5T_STRING {
+         STRSIZE H5T_VARIABLE;
+         STRPAD H5T_STR_NULLTERM;
+         CSET H5T_CSET_ASCII;
+         CTYPE H5T_C_S1;
+      } }
+      DATASPACE  SIMPLE { ( 5 ) / ( 5 ) }
+      DATA {
+      (0): [ "This is a variable-length test string.", "This test string is also variable-length.", "A final test of variable-length strings. This string is longer than the others." ],
+      (1): [ "This is a variable-length test string.", "This test string is also variable-length.", "A final test of variable-length strings. This string is longer than the others." ],
+      (2): [ "This is a variable-length test string.", "This test string is also variable-length.", "A final test of variable-length strings. This string is longer than the others." ],
+      (3): [ "This is a variable-length test string.", "This test string is also variable-length.", "A final test of variable-length strings. This string is longer than the others." ],
+      (4): [ "This is a variable-length test string.", "This test string is also variable-length.", "A final test of variable-length strings. This string is longer than the others." ]
+      }
+   }
+}
+}
diff --git a/tools/testfiles/tvlenstr_array.h5 b/tools/testfiles/tvlenstr_array.h5
new file mode 100644
index 0000000000..4277f203bc
Binary files /dev/null and b/tools/testfiles/tvlenstr_array.h5 differ