wuffs gen -version=0.2.0-alpha.34
diff --git a/release/c/wuffs-v0.2.c b/release/c/wuffs-v0.2.c
index a7b10b3..7630b54 100644
--- a/release/c/wuffs-v0.2.c
+++ b/release/c/wuffs-v0.2.c
@@ -54,15 +54,15 @@
 // each major.minor branch, the commit count should increase monotonically.
 //
 // WUFFS_VERSION was overridden by "wuffs gen -version" based on revision
-// d78101625ec2c4acba5458d370739e780a1170dd committed on 2019-02-24.
+// 6826f2f748b4d823981bef3f39f1e0ac18e3c063 committed on 2019-03-09.
 #define WUFFS_VERSION ((uint64_t)0x0000000000020000)
 #define WUFFS_VERSION_MAJOR ((uint64_t)0x00000000)
 #define WUFFS_VERSION_MINOR ((uint64_t)0x0002)
 #define WUFFS_VERSION_PATCH ((uint64_t)0x0000)
-#define WUFFS_VERSION_PRE_RELEASE_LABEL "alpha.33"
-#define WUFFS_VERSION_BUILD_METADATA_COMMIT_COUNT 1640
-#define WUFFS_VERSION_BUILD_METADATA_COMMIT_DATE 20190224
-#define WUFFS_VERSION_STRING "0.2.0-alpha.33+1640.20190224"
+#define WUFFS_VERSION_PRE_RELEASE_LABEL "alpha.34"
+#define WUFFS_VERSION_BUILD_METADATA_COMMIT_COUNT 1653
+#define WUFFS_VERSION_BUILD_METADATA_COMMIT_DATE 20190309
+#define WUFFS_VERSION_STRING "0.2.0-alpha.34+1653.20190309"
 
 // Define WUFFS_CONFIG__STATIC_FUNCTIONS to make all of Wuffs' functions have
 // static storage. The motivation is discussed in the "ALLOW STATIC
@@ -85,6 +85,8 @@
 
 // Flags for wuffs_foo__bar__initialize functions.
 
+#define WUFFS_INITIALIZE__DEFAULT_OPTIONS ((uint32_t)0x00000000)
+
 // WUFFS_INITIALIZE__ALREADY_ZEROED means that the "self" receiver struct value
 // has already been set to all zeroes.
 #define WUFFS_INITIALIZE__ALREADY_ZEROED ((uint32_t)0x00000001)
@@ -133,6 +135,13 @@
   uint8_t private_impl;
 } wuffs_base__empty_struct;
 
+static inline wuffs_base__empty_struct  //
+wuffs_base__make_empty_struct() {
+  wuffs_base__empty_struct ret;
+  ret.private_impl = 0;
+  return ret;
+}
+
 // wuffs_base__utility is a placeholder receiver type. It enables what Java
 // calls static methods, as opposed to regular methods.
 typedef struct {
@@ -366,18 +375,47 @@
 typedef WUFFS_BASE__TABLE(uint32_t) wuffs_base__table_u32;
 typedef WUFFS_BASE__TABLE(uint64_t) wuffs_base__table_u64;
 
+static inline wuffs_base__slice_u8  //
+wuffs_base__make_slice_u8(uint8_t* ptr, size_t len) {
+  wuffs_base__slice_u8 ret;
+  ret.ptr = ptr;
+  ret.len = len;
+  return ret;
+}
+
+static inline wuffs_base__slice_u16  //
+wuffs_base__make_slice_u16(uint16_t* ptr, size_t len) {
+  wuffs_base__slice_u16 ret;
+  ret.ptr = ptr;
+  ret.len = len;
+  return ret;
+}
+
+static inline wuffs_base__slice_u32  //
+wuffs_base__make_slice_u32(uint32_t* ptr, size_t len) {
+  wuffs_base__slice_u32 ret;
+  ret.ptr = ptr;
+  ret.len = len;
+  return ret;
+}
+
+static inline wuffs_base__slice_u64  //
+wuffs_base__make_slice_u64(uint64_t* ptr, size_t len) {
+  wuffs_base__slice_u64 ret;
+  ret.ptr = ptr;
+  ret.len = len;
+  return ret;
+}
+
 // wuffs_base__slice_u8__subslice_i returns s[i:].
 //
 // It returns an empty slice if i is out of bounds.
 static inline wuffs_base__slice_u8  //
 wuffs_base__slice_u8__subslice_i(wuffs_base__slice_u8 s, uint64_t i) {
   if ((i <= SIZE_MAX) && (i <= s.len)) {
-    return ((wuffs_base__slice_u8){
-        .ptr = s.ptr + i,
-        .len = s.len - i,
-    });
+    return wuffs_base__make_slice_u8(s.ptr + i, s.len - i);
   }
-  return ((wuffs_base__slice_u8){0});
+  return wuffs_base__make_slice_u8(NULL, 0);
 }
 
 // wuffs_base__slice_u8__subslice_j returns s[:j].
@@ -386,12 +424,9 @@
 static inline wuffs_base__slice_u8  //
 wuffs_base__slice_u8__subslice_j(wuffs_base__slice_u8 s, uint64_t j) {
   if ((j <= SIZE_MAX) && (j <= s.len)) {
-    return ((wuffs_base__slice_u8){
-        .ptr = s.ptr,
-        .len = j,
-    });
+    return wuffs_base__make_slice_u8(s.ptr, j);
   }
-  return ((wuffs_base__slice_u8){0});
+  return wuffs_base__make_slice_u8(NULL, 0);
 }
 
 // wuffs_base__slice_u8__subslice_ij returns s[i:j].
@@ -402,12 +437,9 @@
                                   uint64_t i,
                                   uint64_t j) {
   if ((i <= j) && (j <= SIZE_MAX) && (j <= s.len)) {
-    return ((wuffs_base__slice_u8){
-        .ptr = s.ptr + i,
-        .len = j - i,
-    });
+    return wuffs_base__make_slice_u8(s.ptr + i, j - i);
   }
-  return ((wuffs_base__slice_u8){0});
+  return wuffs_base__make_slice_u8(NULL, 0);
 }
 
 // ---------------- Bureaucracy re -Wunused-function
@@ -418,6 +450,11 @@
 
 static inline void
 wuffs_base__acknowledge_potentially_unused_functions__core_public() {
+  (void)(wuffs_base__make_empty_struct);
+  (void)(wuffs_base__make_slice_u16);
+  (void)(wuffs_base__make_slice_u32);
+  (void)(wuffs_base__make_slice_u64);
+  (void)(wuffs_base__make_slice_u8);
   (void)(wuffs_base__slice_u8__subslice_i);
   (void)(wuffs_base__slice_u8__subslice_ij);
   (void)(wuffs_base__slice_u8__subslice_j);
@@ -1295,15 +1332,19 @@
 
 static inline wuffs_base__io_reader  //
 wuffs_base__io_buffer__reader(wuffs_base__io_buffer* buf) {
-  wuffs_base__io_reader ret = ((wuffs_base__io_reader){.private_impl = {0}});
+  wuffs_base__io_reader ret;
   ret.private_impl.buf = buf;
+  ret.private_impl.mark = NULL;
+  ret.private_impl.limit = NULL;
   return ret;
 }
 
 static inline wuffs_base__io_writer  //
 wuffs_base__io_buffer__writer(wuffs_base__io_buffer* buf) {
-  wuffs_base__io_writer ret = ((wuffs_base__io_writer){.private_impl = {0}});
+  wuffs_base__io_writer ret;
   ret.private_impl.buf = buf;
+  ret.private_impl.mark = NULL;
+  ret.private_impl.limit = NULL;
   return ret;
 }
 
@@ -1381,13 +1422,10 @@
   if (malloc_func && (num_u8 <= (SIZE_MAX / sizeof(uint8_t)))) {
     void* p = (*malloc_func)(num_u8 * sizeof(uint8_t));
     if (p) {
-      return ((wuffs_base__slice_u8){
-          .ptr = (uint8_t*)(p),
-          .len = num_u8,
-      });
+      return wuffs_base__make_slice_u8((uint8_t*)(p), num_u8);
     }
   }
-  return ((wuffs_base__slice_u8){0});
+  return wuffs_base__make_slice_u8(NULL, 0);
 }
 
 static inline wuffs_base__slice_u16  //
@@ -1395,13 +1433,10 @@
   if (malloc_func && (num_u16 <= (SIZE_MAX / sizeof(uint16_t)))) {
     void* p = (*malloc_func)(num_u16 * sizeof(uint16_t));
     if (p) {
-      return ((wuffs_base__slice_u16){
-          .ptr = (uint16_t*)(p),
-          .len = num_u16,
-      });
+      return wuffs_base__make_slice_u16((uint16_t*)(p), num_u16);
     }
   }
-  return ((wuffs_base__slice_u16){0});
+  return wuffs_base__make_slice_u16(NULL, 0);
 }
 
 static inline wuffs_base__slice_u32  //
@@ -1409,13 +1444,10 @@
   if (malloc_func && (num_u32 <= (SIZE_MAX / sizeof(uint32_t)))) {
     void* p = (*malloc_func)(num_u32 * sizeof(uint32_t));
     if (p) {
-      return ((wuffs_base__slice_u32){
-          .ptr = (uint32_t*)(p),
-          .len = num_u32,
-      });
+      return wuffs_base__make_slice_u32((uint32_t*)(p), num_u32);
     }
   }
-  return ((wuffs_base__slice_u32){0});
+  return wuffs_base__make_slice_u32(NULL, 0);
 }
 
 static inline wuffs_base__slice_u64  //
@@ -1423,13 +1455,10 @@
   if (malloc_func && (num_u64 <= (SIZE_MAX / sizeof(uint64_t)))) {
     void* p = (*malloc_func)(num_u64 * sizeof(uint64_t));
     if (p) {
-      return ((wuffs_base__slice_u64){
-          .ptr = (uint64_t*)(p),
-          .len = num_u64,
-      });
+      return wuffs_base__make_slice_u64((uint64_t*)(p), num_u64);
     }
   }
-  return ((wuffs_base__slice_u64){0});
+  return wuffs_base__make_slice_u64(NULL, 0);
 }
 
 // ---------------- Bureaucracy re -Wunused-function
@@ -1800,17 +1829,20 @@
       return;
     }
   }
-  *c = ((wuffs_base__pixel_config){
-      .private_impl = {0},
-  });
+
+  c->private_impl.pixfmt = 0;
+  c->private_impl.pixsub = 0;
+  c->private_impl.width = 0;
+  c->private_impl.height = 0;
 }
 
 static inline void  //
 wuffs_base__pixel_config__invalidate(wuffs_base__pixel_config* c) {
   if (c) {
-    *c = ((wuffs_base__pixel_config){
-        .private_impl = {0},
-    });
+    c->private_impl.pixfmt = 0;
+    c->private_impl.pixsub = 0;
+    c->private_impl.width = 0;
+    c->private_impl.height = 0;
   }
 }
 
@@ -1831,13 +1863,21 @@
 
 static inline wuffs_base__rect_ie_u32  //
 wuffs_base__pixel_config__bounds(wuffs_base__pixel_config* c) {
-  return c ? ((wuffs_base__rect_ie_u32){
-                 .min_incl_x = 0,
-                 .min_incl_y = 0,
-                 .max_excl_x = c->private_impl.width,
-                 .max_excl_y = c->private_impl.height,
-             })
-           : ((wuffs_base__rect_ie_u32){0});
+  if (c) {
+    wuffs_base__rect_ie_u32 ret;
+    ret.min_incl_x = 0;
+    ret.min_incl_y = 0;
+    ret.max_excl_x = c->private_impl.width;
+    ret.max_excl_y = c->private_impl.height;
+    return ret;
+  }
+
+  wuffs_base__rect_ie_u32 ret;
+  ret.min_incl_x = 0;
+  ret.min_incl_y = 0;
+  ret.max_excl_x = 0;
+  ret.max_excl_y = 0;
+  return ret;
 }
 
 static inline uint32_t  //
@@ -1987,19 +2027,24 @@
     c->private_impl.first_frame_is_opaque = first_frame_is_opaque;
     return;
   }
-  *c = ((wuffs_base__image_config){
-      .pixcfg = {.private_impl = {0}},
-      .private_impl = {0},
-  });
+
+  c->pixcfg.private_impl.pixfmt = 0;
+  c->pixcfg.private_impl.pixsub = 0;
+  c->pixcfg.private_impl.width = 0;
+  c->pixcfg.private_impl.height = 0;
+  c->private_impl.first_frame_io_position = 0;
+  c->private_impl.first_frame_is_opaque = 0;
 }
 
 static inline void  //
 wuffs_base__image_config__invalidate(wuffs_base__image_config* c) {
   if (c) {
-    *c = ((wuffs_base__image_config){
-        .pixcfg = {.private_impl = {0}},
-        .private_impl = {0},
-    });
+    c->pixcfg.private_impl.pixfmt = 0;
+    c->pixcfg.private_impl.pixsub = 0;
+    c->pixcfg.private_impl.width = 0;
+    c->pixcfg.private_impl.height = 0;
+    c->private_impl.first_frame_io_position = 0;
+    c->private_impl.first_frame_is_opaque = 0;
   }
 }
 
@@ -2146,7 +2191,16 @@
 
 static inline wuffs_base__rect_ie_u32  //
 wuffs_base__frame_config__bounds(wuffs_base__frame_config* c) {
-  return c ? c->private_impl.bounds : ((wuffs_base__rect_ie_u32){0});
+  if (c) {
+    return c->private_impl.bounds;
+  }
+
+  wuffs_base__rect_ie_u32 ret;
+  ret.min_incl_x = 0;
+  ret.min_incl_y = 0;
+  ret.max_excl_x = 0;
+  ret.max_excl_y = 0;
+  return ret;
 }
 
 static inline uint32_t  //
@@ -2344,13 +2398,10 @@
     wuffs_base__table_u8* tab =
         &b->private_impl.planes[WUFFS_BASE__PIXEL_FORMAT__INDEXED__COLOR_PLANE];
     if ((tab->width == 1024) && (tab->height == 1)) {
-      return ((wuffs_base__slice_u8){
-          .ptr = tab->ptr,
-          .len = 1024,
-      });
+      return wuffs_base__make_slice_u8(tab->ptr, 1024);
     }
   }
-  return ((wuffs_base__slice_u8){0});
+  return wuffs_base__make_slice_u8(NULL, 0);
 }
 
 static inline wuffs_base__pixel_format  //
@@ -2363,9 +2414,16 @@
 
 static inline wuffs_base__table_u8  //
 wuffs_base__pixel_buffer__plane(wuffs_base__pixel_buffer* b, uint32_t p) {
-  return (b && (p < WUFFS_BASE__PIXEL_FORMAT__NUM_PLANES_MAX))
-             ? b->private_impl.planes[p]
-             : ((wuffs_base__table_u8){0});
+  if (b && (p < WUFFS_BASE__PIXEL_FORMAT__NUM_PLANES_MAX)) {
+    return b->private_impl.planes[p];
+  }
+
+  wuffs_base__table_u8 ret;
+  ret.ptr = NULL;
+  ret.width = 0;
+  ret.height = 0;
+  ret.stride = 0;
+  return ret;
 }
 
 #ifdef __cplusplus
@@ -2550,13 +2608,6 @@
                                   uint64_t wuffs_version,
                                   uint32_t initialize_flags);
 
-// Deprecated: use wuffs_foo__bar__initialize instead of
-// wuffs_foo__bar__check_wuffs_version.
-wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-wuffs_adler32__hasher__check_wuffs_version(wuffs_adler32__hasher* self,
-                                           size_t sizeof_star_self,
-                                           uint64_t wuffs_version);
-
 size_t  //
 sizeof__wuffs_adler32__hasher();
 
@@ -2626,13 +2677,6 @@
                                              wuffs_version, initialize_flags);
   }
 
-  inline wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-  check_wuffs_version(size_t sizeof_star_self, uint64_t wuffs_version) {
-    return wuffs_adler32__hasher__initialize(this, sizeof_star_self,
-                                             wuffs_version,
-                                             WUFFS_INITIALIZE__ALREADY_ZEROED);
-  }
-
   inline uint32_t  //
   update(wuffs_base__slice_u8 a_x) {
     return wuffs_adler32__hasher__update(this, a_x);
@@ -2681,13 +2725,6 @@
                                      uint64_t wuffs_version,
                                      uint32_t initialize_flags);
 
-// Deprecated: use wuffs_foo__bar__initialize instead of
-// wuffs_foo__bar__check_wuffs_version.
-wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-wuffs_crc32__ieee_hasher__check_wuffs_version(wuffs_crc32__ieee_hasher* self,
-                                              size_t sizeof_star_self,
-                                              uint64_t wuffs_version);
-
 size_t  //
 sizeof__wuffs_crc32__ieee_hasher();
 
@@ -2756,13 +2793,6 @@
         this, sizeof_star_self, wuffs_version, initialize_flags);
   }
 
-  inline wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-  check_wuffs_version(size_t sizeof_star_self, uint64_t wuffs_version) {
-    return wuffs_crc32__ieee_hasher__initialize(
-        this, sizeof_star_self, wuffs_version,
-        WUFFS_INITIALIZE__ALREADY_ZEROED);
-  }
-
   inline uint32_t  //
   update(wuffs_base__slice_u8 a_x) {
     return wuffs_crc32__ieee_hasher__update(this, a_x);
@@ -2832,13 +2862,6 @@
                                    uint64_t wuffs_version,
                                    uint32_t initialize_flags);
 
-// Deprecated: use wuffs_foo__bar__initialize instead of
-// wuffs_foo__bar__check_wuffs_version.
-wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-wuffs_deflate__decoder__check_wuffs_version(wuffs_deflate__decoder* self,
-                                            size_t sizeof_star_self,
-                                            uint64_t wuffs_version);
-
 size_t  //
 sizeof__wuffs_deflate__decoder();
 
@@ -2962,13 +2985,6 @@
                                               wuffs_version, initialize_flags);
   }
 
-  inline wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-  check_wuffs_version(size_t sizeof_star_self, uint64_t wuffs_version) {
-    return wuffs_deflate__decoder__initialize(this, sizeof_star_self,
-                                              wuffs_version,
-                                              WUFFS_INITIALIZE__ALREADY_ZEROED);
-  }
-
   inline wuffs_base__range_ii_u64  //
   workbuf_len() const {
     return wuffs_deflate__decoder__workbuf_len(this);
@@ -3034,13 +3050,6 @@
                                uint64_t wuffs_version,
                                uint32_t initialize_flags);
 
-// Deprecated: use wuffs_foo__bar__initialize instead of
-// wuffs_foo__bar__check_wuffs_version.
-wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-wuffs_lzw__decoder__check_wuffs_version(wuffs_lzw__decoder* self,
-                                        size_t sizeof_star_self,
-                                        uint64_t wuffs_version);
-
 size_t  //
 sizeof__wuffs_lzw__decoder();
 
@@ -3141,12 +3150,6 @@
                                           initialize_flags);
   }
 
-  inline wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-  check_wuffs_version(size_t sizeof_star_self, uint64_t wuffs_version) {
-    return wuffs_lzw__decoder__initialize(this, sizeof_star_self, wuffs_version,
-                                          WUFFS_INITIALIZE__ALREADY_ZEROED);
-  }
-
   inline wuffs_base__empty_struct  //
   set_literal_width(uint32_t a_lw) {
     return wuffs_lzw__decoder__set_literal_width(this, a_lw);
@@ -3224,13 +3227,6 @@
                                uint64_t wuffs_version,
                                uint32_t initialize_flags);
 
-// Deprecated: use wuffs_foo__bar__initialize instead of
-// wuffs_foo__bar__check_wuffs_version.
-wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-wuffs_gif__decoder__check_wuffs_version(wuffs_gif__decoder* self,
-                                        size_t sizeof_star_self,
-                                        uint64_t wuffs_version);
-
 size_t  //
 sizeof__wuffs_gif__decoder();
 
@@ -3420,12 +3416,6 @@
                                           initialize_flags);
   }
 
-  inline wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-  check_wuffs_version(size_t sizeof_star_self, uint64_t wuffs_version) {
-    return wuffs_gif__decoder__initialize(this, sizeof_star_self, wuffs_version,
-                                          WUFFS_INITIALIZE__ALREADY_ZEROED);
-  }
-
   inline wuffs_base__status  //
   decode_image_config(wuffs_base__image_config* a_dst,
                       wuffs_base__io_reader a_src) {
@@ -3531,13 +3521,6 @@
                                 uint64_t wuffs_version,
                                 uint32_t initialize_flags);
 
-// Deprecated: use wuffs_foo__bar__initialize instead of
-// wuffs_foo__bar__check_wuffs_version.
-wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-wuffs_gzip__decoder__check_wuffs_version(wuffs_gzip__decoder* self,
-                                         size_t sizeof_star_self,
-                                         uint64_t wuffs_version);
-
 size_t  //
 sizeof__wuffs_gzip__decoder();
 
@@ -3628,13 +3611,6 @@
                                            wuffs_version, initialize_flags);
   }
 
-  inline wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-  check_wuffs_version(size_t sizeof_star_self, uint64_t wuffs_version) {
-    return wuffs_gzip__decoder__initialize(this, sizeof_star_self,
-                                           wuffs_version,
-                                           WUFFS_INITIALIZE__ALREADY_ZEROED);
-  }
-
   inline wuffs_base__empty_struct  //
   set_ignore_checksum(bool a_ic) {
     return wuffs_gzip__decoder__set_ignore_checksum(this, a_ic);
@@ -3706,13 +3682,6 @@
                                 uint64_t wuffs_version,
                                 uint32_t initialize_flags);
 
-// Deprecated: use wuffs_foo__bar__initialize instead of
-// wuffs_foo__bar__check_wuffs_version.
-wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-wuffs_zlib__decoder__check_wuffs_version(wuffs_zlib__decoder* self,
-                                         size_t sizeof_star_self,
-                                         uint64_t wuffs_version);
-
 size_t  //
 sizeof__wuffs_zlib__decoder();
 
@@ -3800,13 +3769,6 @@
                                            wuffs_version, initialize_flags);
   }
 
-  inline wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-  check_wuffs_version(size_t sizeof_star_self, uint64_t wuffs_version) {
-    return wuffs_zlib__decoder__initialize(this, sizeof_star_self,
-                                           wuffs_version,
-                                           WUFFS_INITIALIZE__ALREADY_ZEROED);
-  }
-
   inline wuffs_base__empty_struct  //
   set_ignore_checksum(bool a_ic) {
     return wuffs_zlib__decoder__set_ignore_checksum(this, a_ic);
@@ -3850,7 +3812,7 @@
 
 static inline wuffs_base__empty_struct  //
 wuffs_base__ignore_status(wuffs_base__status z) {
-  return ((wuffs_base__empty_struct){0});
+  return wuffs_base__make_empty_struct();
 }
 
 // WUFFS_BASE__MAGIC is a magic number to check that initializers are called.
@@ -3917,11 +3879,6 @@
 // inline attribute to guide optimizations such as inlining, to avoid the
 // -Wunused-function warning, and we like to compile with -Wall -Werror.
 
-static inline wuffs_base__empty_struct  //
-wuffs_base__return_empty_struct() {
-  return ((wuffs_base__empty_struct){0});
-}
-
 // ---------------- Numeric Types
 
 static inline uint8_t  //
@@ -4251,19 +4208,16 @@
 static inline wuffs_base__slice_u8  //
 wuffs_base__table_u8__row(wuffs_base__table_u8 t, uint32_t y) {
   if (y < t.height) {
-    return ((wuffs_base__slice_u8){
-        .ptr = t.ptr + (t.stride * y),
-        .len = t.width,
-    });
+    return wuffs_base__make_slice_u8(t.ptr + (t.stride * y), t.width);
   }
-  return ((wuffs_base__slice_u8){0});
+  return wuffs_base__make_slice_u8(NULL, 0);
 }
 
 // ---------------- Slices and Tables (Utility)
 
 static inline wuffs_base__slice_u8  //
 wuffs_base__utility__null_slice_u8() {
-  return ((wuffs_base__slice_u8){0});
+  return wuffs_base__make_slice_u8(NULL, 0);
 }
 
 // ---------------- Bureaucracy re -Wunused-function
@@ -4290,7 +4244,6 @@
   (void)(wuffs_base__load_u64be);
   (void)(wuffs_base__load_u64le);
   (void)(wuffs_base__load_u8be);
-  (void)(wuffs_base__return_empty_struct);
   (void)(wuffs_base__slice_u8__copy_from_slice);
   (void)(wuffs_base__slice_u8__prefix);
   (void)(wuffs_base__slice_u8__suffix);
@@ -4367,34 +4320,34 @@
 
 static inline wuffs_base__range_ii_u32  //
 wuffs_base__utility__make_range_ii_u32(uint32_t min_incl, uint32_t max_incl) {
-  return ((wuffs_base__range_ii_u32){
-      .min_incl = min_incl,
-      .max_incl = max_incl,
-  });
+  wuffs_base__range_ii_u32 ret;
+  ret.min_incl = min_incl;
+  ret.max_incl = max_incl;
+  return ret;
 }
 
 static inline wuffs_base__range_ie_u32  //
 wuffs_base__utility__make_range_ie_u32(uint32_t min_incl, uint32_t max_excl) {
-  return ((wuffs_base__range_ie_u32){
-      .min_incl = min_incl,
-      .max_excl = max_excl,
-  });
+  wuffs_base__range_ie_u32 ret;
+  ret.min_incl = min_incl;
+  ret.max_excl = max_excl;
+  return ret;
 }
 
 static inline wuffs_base__range_ii_u64  //
 wuffs_base__utility__make_range_ii_u64(uint64_t min_incl, uint64_t max_incl) {
-  return ((wuffs_base__range_ii_u64){
-      .min_incl = min_incl,
-      .max_incl = max_incl,
-  });
+  wuffs_base__range_ii_u64 ret;
+  ret.min_incl = min_incl;
+  ret.max_incl = max_incl;
+  return ret;
 }
 
 static inline wuffs_base__range_ie_u64  //
 wuffs_base__utility__make_range_ie_u64(uint64_t min_incl, uint64_t max_excl) {
-  return ((wuffs_base__range_ie_u64){
-      .min_incl = min_incl,
-      .max_excl = max_excl,
-  });
+  wuffs_base__range_ie_u64 ret;
+  ret.min_incl = min_incl;
+  ret.max_excl = max_excl;
+  return ret;
 }
 
 static inline wuffs_base__rect_ii_u32  //
@@ -4402,12 +4355,12 @@
                                       uint32_t min_incl_y,
                                       uint32_t max_incl_x,
                                       uint32_t max_incl_y) {
-  return ((wuffs_base__rect_ii_u32){
-      .min_incl_x = min_incl_x,
-      .min_incl_y = min_incl_y,
-      .max_incl_x = max_incl_x,
-      .max_incl_y = max_incl_y,
-  });
+  wuffs_base__rect_ii_u32 ret;
+  ret.min_incl_x = min_incl_x;
+  ret.min_incl_y = min_incl_y;
+  ret.max_incl_x = max_incl_x;
+  ret.max_incl_y = max_incl_y;
+  return ret;
 }
 
 static inline wuffs_base__rect_ie_u32  //
@@ -4415,12 +4368,12 @@
                                       uint32_t min_incl_y,
                                       uint32_t max_excl_x,
                                       uint32_t max_excl_y) {
-  return ((wuffs_base__rect_ie_u32){
-      .min_incl_x = min_incl_x,
-      .min_incl_y = min_incl_y,
-      .max_excl_x = max_excl_x,
-      .max_excl_y = max_excl_y,
-  });
+  wuffs_base__rect_ie_u32 ret;
+  ret.min_incl_x = min_incl_x;
+  ret.min_incl_y = min_incl_y;
+  ret.max_excl_x = max_excl_x;
+  ret.max_excl_y = max_excl_y;
+  return ret;
 }
 
 // ---------------- Bureaucracy re -Wunused-function
@@ -4638,7 +4591,10 @@
   o->private_impl.limit = data.ptr + data.len;
   *ptr_iop_r = data.ptr;
   *ptr_io1_r = data.ptr + data.len;
-  return ((wuffs_base__empty_struct){0});
+
+  wuffs_base__empty_struct ret;
+  ret.private_impl = 0;
+  return ret;
 }
 
 static inline wuffs_base__empty_struct  //
@@ -4648,13 +4604,19 @@
   if (o && (((size_t)(o->private_impl.limit - iop_r)) > limit)) {
     o->private_impl.limit = iop_r + limit;
   }
-  return ((wuffs_base__empty_struct){0});
+
+  wuffs_base__empty_struct ret;
+  ret.private_impl = 0;
+  return ret;
 }
 
 static inline wuffs_base__empty_struct  //
 wuffs_base__io_reader__set_mark(wuffs_base__io_reader* o, uint8_t* mark) {
   o->private_impl.mark = mark;
-  return ((wuffs_base__empty_struct){0});
+
+  wuffs_base__empty_struct ret;
+  ret.private_impl = 0;
+  return ret;
 }
 
 static inline wuffs_base__slice_u8  //
@@ -4662,12 +4624,9 @@
   if (n <= ((size_t)(io1_r - *ptr_iop_r))) {
     uint8_t* p = *ptr_iop_r;
     *ptr_iop_r += n;
-    return ((wuffs_base__slice_u8){
-        .ptr = p,
-        .len = n,
-    });
+    return wuffs_base__make_slice_u8(p, n);
   }
-  return ((wuffs_base__slice_u8){0});
+  return wuffs_base__make_slice_u8(NULL, 0);
 }
 
 static inline wuffs_base__empty_struct  //
@@ -4687,25 +4646,51 @@
   o->private_impl.limit = data.ptr + data.len;
   *ptr_iop_w = data.ptr;
   *ptr_io1_w = data.ptr + data.len;
-  return ((wuffs_base__empty_struct){0});
+
+  wuffs_base__empty_struct ret;
+  ret.private_impl = 0;
+  return ret;
 }
 
 static inline wuffs_base__empty_struct  //
 wuffs_base__io_writer__set_mark(wuffs_base__io_writer* o, uint8_t* mark) {
   o->private_impl.mark = mark;
-  return ((wuffs_base__empty_struct){0});
+
+  wuffs_base__empty_struct ret;
+  ret.private_impl = 0;
+  return ret;
 }
 
 // ---------------- I/O (Utility)
 
+static inline wuffs_base__io_buffer  //
+wuffs_base__utility__null_io_buffer() {
+  wuffs_base__io_buffer ret;
+  ret.data.ptr = NULL;
+  ret.data.len = 0;
+  ret.meta.wi = 0;
+  ret.meta.ri = 0;
+  ret.meta.pos = 0;
+  ret.meta.closed = false;
+  return ret;
+}
+
 static inline wuffs_base__io_reader  //
 wuffs_base__utility__null_io_reader() {
-  return ((wuffs_base__io_reader){.private_impl = {0}});
+  wuffs_base__io_reader ret;
+  ret.private_impl.buf = NULL;
+  ret.private_impl.mark = NULL;
+  ret.private_impl.limit = NULL;
+  return ret;
 }
 
 static inline wuffs_base__io_writer  //
 wuffs_base__utility__null_io_writer() {
-  return ((wuffs_base__io_writer){.private_impl = {0}});
+  wuffs_base__io_writer ret;
+  ret.private_impl.buf = NULL;
+  ret.private_impl.mark = NULL;
+  ret.private_impl.limit = NULL;
+  return ret;
 }
 
 // ---------------- Bureaucracy re -Wunused-function
@@ -4731,6 +4716,7 @@
   (void)(wuffs_base__io_writer__is_valid);
   (void)(wuffs_base__io_writer__set);
   (void)(wuffs_base__io_writer__set_mark);
+  (void)(wuffs_base__utility__null_io_buffer);
   (void)(wuffs_base__utility__null_io_reader);
   (void)(wuffs_base__utility__null_io_writer);
 }
@@ -4784,7 +4770,7 @@
     0x7FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF,
 };
 
-const char* wuffs_base__warning__end_of_data = "~base: end of data";
+const char* wuffs_base__warning__end_of_data = "@base: end of data";
 const char* wuffs_base__suspension__short_read = "$base: short read";
 const char* wuffs_base__suspension__short_write = "$base: short write";
 const char* wuffs_base__error__bad_argument_length_too_short =
@@ -4998,9 +4984,18 @@
   }
 
   if ((initialize_flags & WUFFS_INITIALIZE__ALREADY_ZEROED) != 0) {
+// The whole point of this if-check is to detect an uninitialized *self.
+// We disable the warning on GCC. Clang-5.0 does not have this warning.
+#if !defined(__clang__) && defined(__GNUC__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif
     if (self->private_impl.magic != 0) {
       return wuffs_base__error__initialize_falsely_claimed_already_zeroed;
     }
+#if !defined(__clang__) && defined(__GNUC__)
+#pragma GCC diagnostic pop
+#endif
   } else {
     void* p = &(self->private_impl);
     size_t n = sizeof(self->private_impl);
@@ -5017,14 +5012,6 @@
   return NULL;
 }
 
-wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-wuffs_adler32__hasher__check_wuffs_version(wuffs_adler32__hasher* self,
-                                           size_t sizeof_star_self,
-                                           uint64_t wuffs_version) {
-  return wuffs_adler32__hasher__initialize(
-      self, sizeof_star_self, wuffs_version, WUFFS_INITIALIZE__ALREADY_ZEROED);
-}
-
 size_t  //
 sizeof__wuffs_adler32__hasher() {
   return sizeof(wuffs_adler32__hasher);
@@ -6009,9 +5996,18 @@
   }
 
   if ((initialize_flags & WUFFS_INITIALIZE__ALREADY_ZEROED) != 0) {
+// The whole point of this if-check is to detect an uninitialized *self.
+// We disable the warning on GCC. Clang-5.0 does not have this warning.
+#if !defined(__clang__) && defined(__GNUC__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif
     if (self->private_impl.magic != 0) {
       return wuffs_base__error__initialize_falsely_claimed_already_zeroed;
     }
+#if !defined(__clang__) && defined(__GNUC__)
+#pragma GCC diagnostic pop
+#endif
   } else {
     void* p = &(self->private_impl);
     size_t n = sizeof(self->private_impl);
@@ -6028,14 +6024,6 @@
   return NULL;
 }
 
-wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-wuffs_crc32__ieee_hasher__check_wuffs_version(wuffs_crc32__ieee_hasher* self,
-                                              size_t sizeof_star_self,
-                                              uint64_t wuffs_version) {
-  return wuffs_crc32__ieee_hasher__initialize(
-      self, sizeof_star_self, wuffs_version, WUFFS_INITIALIZE__ALREADY_ZEROED);
-}
-
 size_t  //
 sizeof__wuffs_crc32__ieee_hasher() {
   return sizeof(wuffs_crc32__ieee_hasher);
@@ -6299,9 +6287,18 @@
   }
 
   if ((initialize_flags & WUFFS_INITIALIZE__ALREADY_ZEROED) != 0) {
+// The whole point of this if-check is to detect an uninitialized *self.
+// We disable the warning on GCC. Clang-5.0 does not have this warning.
+#if !defined(__clang__) && defined(__GNUC__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif
     if (self->private_impl.magic != 0) {
       return wuffs_base__error__initialize_falsely_claimed_already_zeroed;
     }
+#if !defined(__clang__) && defined(__GNUC__)
+#pragma GCC diagnostic pop
+#endif
   } else {
     void* p = &(self->private_impl);
     size_t n = sizeof(self->private_impl);
@@ -6318,14 +6315,6 @@
   return NULL;
 }
 
-wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-wuffs_deflate__decoder__check_wuffs_version(wuffs_deflate__decoder* self,
-                                            size_t sizeof_star_self,
-                                            uint64_t wuffs_version) {
-  return wuffs_deflate__decoder__initialize(
-      self, sizeof_star_self, wuffs_version, WUFFS_INITIALIZE__ALREADY_ZEROED);
-}
-
 size_t  //
 sizeof__wuffs_deflate__decoder() {
   return sizeof(wuffs_deflate__decoder);
@@ -6338,11 +6327,11 @@
 WUFFS_BASE__MAYBE_STATIC wuffs_base__range_ii_u64  //
 wuffs_deflate__decoder__workbuf_len(const wuffs_deflate__decoder* self) {
   if (!self) {
-    return ((wuffs_base__range_ii_u64){0});
+    return wuffs_base__utility__make_range_ii_u64(0, 0);
   }
   if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
       (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
-    return ((wuffs_base__range_ii_u64){0});
+    return wuffs_base__utility__make_range_ii_u64(0, 0);
   }
 
   return wuffs_base__utility__make_range_ii_u64(1, 1);
@@ -6425,35 +6414,25 @@
         }
         goto ok;
       }
-      v_written = ((wuffs_base__slice_u8){
-          .ptr = a_dst.private_impl.mark,
-          .len = (size_t)(iop_a_dst - a_dst.private_impl.mark),
-      });
+      v_written = wuffs_base__make_slice_u8(
+          a_dst.private_impl.mark,
+          (size_t)(iop_a_dst - a_dst.private_impl.mark));
       if (((uint64_t)(v_written.len)) >= 32768) {
         v_written = wuffs_base__slice_u8__suffix(v_written, 32768);
         wuffs_base__slice_u8__copy_from_slice(
-            ((wuffs_base__slice_u8){
-                .ptr = self->private_data.f_history,
-                .len = 32768,
-            }),
+            wuffs_base__make_slice_u8(self->private_data.f_history, 32768),
             v_written);
         self->private_impl.f_history_index = 32768;
       } else {
         v_n_copied = wuffs_base__slice_u8__copy_from_slice(
             wuffs_base__slice_u8__subslice_i(
-                ((wuffs_base__slice_u8){
-                    .ptr = self->private_data.f_history,
-                    .len = 32768,
-                }),
+                wuffs_base__make_slice_u8(self->private_data.f_history, 32768),
                 (self->private_impl.f_history_index & 32767)),
             v_written);
         if (v_n_copied < ((uint64_t)(v_written.len))) {
           v_written = wuffs_base__slice_u8__subslice_i(v_written, v_n_copied);
           v_n_copied = wuffs_base__slice_u8__copy_from_slice(
-              ((wuffs_base__slice_u8){
-                  .ptr = self->private_data.f_history,
-                  .len = 32768,
-              }),
+              wuffs_base__make_slice_u8(self->private_data.f_history, 32768),
               v_written);
           self->private_impl.f_history_index =
               (((uint32_t)((v_n_copied & 32767))) + 32768);
@@ -7387,10 +7366,10 @@
          (((uint64_t)(io1_a_src - iop_a_src)) >= 12)) {
     if (v_n_bits < 15) {
       v_bits |= (((uint32_t)(wuffs_base__load_u8be(iop_a_src))) << v_n_bits);
-      (iop_a_src += 1, wuffs_base__return_empty_struct());
+      (iop_a_src += 1, wuffs_base__make_empty_struct());
       v_n_bits += 8;
       v_bits |= (((uint32_t)(wuffs_base__load_u8be(iop_a_src))) << v_n_bits);
-      (iop_a_src += 1, wuffs_base__return_empty_struct());
+      (iop_a_src += 1, wuffs_base__make_empty_struct());
       v_n_bits += 8;
     } else {
     }
@@ -7401,7 +7380,7 @@
     if ((v_table_entry >> 31) != 0) {
       (wuffs_base__store_u8be(iop_a_dst,
                               ((uint8_t)(((v_table_entry >> 8) & 255)))),
-       iop_a_dst += 1, wuffs_base__return_empty_struct());
+       iop_a_dst += 1, wuffs_base__make_empty_struct());
       goto label_0_continue;
     } else if ((v_table_entry >> 30) != 0) {
     } else if ((v_table_entry >> 29) != 0) {
@@ -7410,10 +7389,10 @@
     } else if ((v_table_entry >> 28) != 0) {
       if (v_n_bits < 15) {
         v_bits |= (((uint32_t)(wuffs_base__load_u8be(iop_a_src))) << v_n_bits);
-        (iop_a_src += 1, wuffs_base__return_empty_struct());
+        (iop_a_src += 1, wuffs_base__make_empty_struct());
         v_n_bits += 8;
         v_bits |= (((uint32_t)(wuffs_base__load_u8be(iop_a_src))) << v_n_bits);
-        (iop_a_src += 1, wuffs_base__return_empty_struct());
+        (iop_a_src += 1, wuffs_base__make_empty_struct());
         v_n_bits += 8;
       } else {
       }
@@ -7432,7 +7411,7 @@
       if ((v_table_entry >> 31) != 0) {
         (wuffs_base__store_u8be(iop_a_dst,
                                 ((uint8_t)(((v_table_entry >> 8) & 255)))),
-         iop_a_dst += 1, wuffs_base__return_empty_struct());
+         iop_a_dst += 1, wuffs_base__make_empty_struct());
         goto label_0_continue;
       } else if ((v_table_entry >> 30) != 0) {
       } else if ((v_table_entry >> 29) != 0) {
@@ -7463,10 +7442,10 @@
     if (v_table_entry_n_bits > 0) {
       if (v_n_bits < 15) {
         v_bits |= (((uint32_t)(wuffs_base__load_u8be(iop_a_src))) << v_n_bits);
-        (iop_a_src += 1, wuffs_base__return_empty_struct());
+        (iop_a_src += 1, wuffs_base__make_empty_struct());
         v_n_bits += 8;
         v_bits |= (((uint32_t)(wuffs_base__load_u8be(iop_a_src))) << v_n_bits);
-        (iop_a_src += 1, wuffs_base__return_empty_struct());
+        (iop_a_src += 1, wuffs_base__make_empty_struct());
         v_n_bits += 8;
       } else {
       }
@@ -7481,10 +7460,10 @@
     }
     if (v_n_bits < 15) {
       v_bits |= (((uint32_t)(wuffs_base__load_u8be(iop_a_src))) << v_n_bits);
-      (iop_a_src += 1, wuffs_base__return_empty_struct());
+      (iop_a_src += 1, wuffs_base__make_empty_struct());
       v_n_bits += 8;
       v_bits |= (((uint32_t)(wuffs_base__load_u8be(iop_a_src))) << v_n_bits);
-      (iop_a_src += 1, wuffs_base__return_empty_struct());
+      (iop_a_src += 1, wuffs_base__make_empty_struct());
       v_n_bits += 8;
     } else {
     }
@@ -7495,10 +7474,10 @@
     if ((v_table_entry >> 28) == 1) {
       if (v_n_bits < 15) {
         v_bits |= (((uint32_t)(wuffs_base__load_u8be(iop_a_src))) << v_n_bits);
-        (iop_a_src += 1, wuffs_base__return_empty_struct());
+        (iop_a_src += 1, wuffs_base__make_empty_struct());
         v_n_bits += 8;
         v_bits |= (((uint32_t)(wuffs_base__load_u8be(iop_a_src))) << v_n_bits);
-        (iop_a_src += 1, wuffs_base__return_empty_struct());
+        (iop_a_src += 1, wuffs_base__make_empty_struct());
         v_n_bits += 8;
       } else {
       }
@@ -7529,10 +7508,10 @@
     v_table_entry_n_bits = ((v_table_entry >> 4) & 15);
     if (v_n_bits < v_table_entry_n_bits) {
       v_bits |= (((uint32_t)(wuffs_base__load_u8be(iop_a_src))) << v_n_bits);
-      (iop_a_src += 1, wuffs_base__return_empty_struct());
+      (iop_a_src += 1, wuffs_base__make_empty_struct());
       v_n_bits += 8;
       v_bits |= (((uint32_t)(wuffs_base__load_u8be(iop_a_src))) << v_n_bits);
-      (iop_a_src += 1, wuffs_base__return_empty_struct());
+      (iop_a_src += 1, wuffs_base__make_empty_struct());
       v_n_bits += 8;
     }
     v_dist_minus_1 =
@@ -7565,10 +7544,8 @@
           v_n_copied = wuffs_base__io_writer__copy_n_from_slice(
               &iop_a_dst, io1_a_dst, v_hlen,
               wuffs_base__slice_u8__subslice_i(
-                  ((wuffs_base__slice_u8){
-                      .ptr = self->private_data.f_history,
-                      .len = 32768,
-                  }),
+                  wuffs_base__make_slice_u8(self->private_data.f_history,
+                                            32768),
                   (v_hdist & 32767)));
           if (v_hlen <= v_n_copied) {
             goto label_1_break;
@@ -7576,10 +7553,7 @@
           v_hlen -= v_n_copied;
           wuffs_base__io_writer__copy_n_from_slice(
               &iop_a_dst, io1_a_dst, v_hlen,
-              ((wuffs_base__slice_u8){
-                  .ptr = self->private_data.f_history,
-                  .len = 32768,
-              }));
+              wuffs_base__make_slice_u8(self->private_data.f_history, 32768));
           goto label_1_break;
         }
       label_1_break:;
@@ -7603,7 +7577,7 @@
   while (v_n_bits >= 8) {
     v_n_bits -= 8;
     if (iop_a_src > io0_a_src) {
-      (iop_a_src--, wuffs_base__return_empty_struct());
+      (iop_a_src--, wuffs_base__make_empty_struct());
     } else {
       status = wuffs_deflate__error__internal_error_inconsistent_i_o;
       goto exit;
@@ -7948,10 +7922,8 @@
             v_n_copied = wuffs_base__io_writer__copy_n_from_slice(
                 &iop_a_dst, io1_a_dst, v_hlen,
                 wuffs_base__slice_u8__subslice_i(
-                    ((wuffs_base__slice_u8){
-                        .ptr = self->private_data.f_history,
-                        .len = 32768,
-                    }),
+                    wuffs_base__make_slice_u8(self->private_data.f_history,
+                                              32768),
                     (v_hdist & 32767)));
             if (v_hlen <= v_n_copied) {
               v_hlen = 0;
@@ -7973,10 +7945,8 @@
               v_n_copied = wuffs_base__io_writer__copy_n_from_slice(
                   &iop_a_dst, io1_a_dst, v_hlen,
                   wuffs_base__slice_u8__subslice_i(
-                      ((wuffs_base__slice_u8){
-                          .ptr = self->private_data.f_history,
-                          .len = 32768,
-                      }),
+                      wuffs_base__make_slice_u8(self->private_data.f_history,
+                                                32768),
                       (v_hdist & 32767)));
               if (v_hlen <= v_n_copied) {
                 v_hlen = 0;
@@ -8097,9 +8067,18 @@
   }
 
   if ((initialize_flags & WUFFS_INITIALIZE__ALREADY_ZEROED) != 0) {
+// The whole point of this if-check is to detect an uninitialized *self.
+// We disable the warning on GCC. Clang-5.0 does not have this warning.
+#if !defined(__clang__) && defined(__GNUC__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif
     if (self->private_impl.magic != 0) {
       return wuffs_base__error__initialize_falsely_claimed_already_zeroed;
     }
+#if !defined(__clang__) && defined(__GNUC__)
+#pragma GCC diagnostic pop
+#endif
   } else {
     void* p = &(self->private_impl);
     size_t n = sizeof(self->private_impl);
@@ -8116,14 +8095,6 @@
   return NULL;
 }
 
-wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-wuffs_lzw__decoder__check_wuffs_version(wuffs_lzw__decoder* self,
-                                        size_t sizeof_star_self,
-                                        uint64_t wuffs_version) {
-  return wuffs_lzw__decoder__initialize(self, sizeof_star_self, wuffs_version,
-                                        WUFFS_INITIALIZE__ALREADY_ZEROED);
-}
-
 size_t  //
 sizeof__wuffs_lzw__decoder() {
   return sizeof(wuffs_lzw__decoder);
@@ -8136,18 +8107,18 @@
 WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
 wuffs_lzw__decoder__set_literal_width(wuffs_lzw__decoder* self, uint32_t a_lw) {
   if (!self) {
-    return ((wuffs_base__empty_struct){0});
+    return wuffs_base__make_empty_struct();
   }
   if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
-    return ((wuffs_base__empty_struct){0});
+    return wuffs_base__make_empty_struct();
   }
   if (a_lw < 2 || a_lw > 8) {
     self->private_impl.magic = WUFFS_BASE__DISABLED;
-    return ((wuffs_base__empty_struct){0});
+    return wuffs_base__make_empty_struct();
   }
 
   self->private_impl.f_set_literal_width_arg = a_lw;
-  return ((wuffs_base__empty_struct){0});
+  return wuffs_base__make_empty_struct();
 }
 
 // -------- func lzw.decoder.workbuf_len
@@ -8155,11 +8126,11 @@
 WUFFS_BASE__MAYBE_STATIC wuffs_base__range_ii_u64  //
 wuffs_lzw__decoder__workbuf_len(const wuffs_lzw__decoder* self) {
   if (!self) {
-    return ((wuffs_base__range_ii_u64){0});
+    return wuffs_base__utility__make_range_ii_u64(0, 0);
   }
   if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
       (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
-    return ((wuffs_base__range_ii_u64){0});
+    return wuffs_base__utility__make_range_ii_u64(0, 0);
   }
 
   return wuffs_base__utility__make_range_ii_u64(0, 0);
@@ -8311,15 +8282,14 @@
     if (v_n_bits < v_width) {
       if (((uint64_t)(io1_a_src - iop_a_src)) >= 4) {
         v_bits |= (wuffs_base__load_u32le(iop_a_src) << v_n_bits);
-        (iop_a_src += ((31 - v_n_bits) >> 3),
-         wuffs_base__return_empty_struct());
+        (iop_a_src += ((31 - v_n_bits) >> 3), wuffs_base__make_empty_struct());
         v_n_bits |= 24;
       } else if (((uint64_t)(io1_a_src - iop_a_src)) <= 0) {
         self->private_impl.f_read_from_return_value = 2;
         goto label_0_break;
       } else {
         v_bits |= (((uint32_t)(wuffs_base__load_u8be(iop_a_src))) << v_n_bits);
-        (iop_a_src += 1, wuffs_base__return_empty_struct());
+        (iop_a_src += 1, wuffs_base__make_empty_struct());
         v_n_bits += 8;
         if (v_n_bits >= v_width) {
         } else if (((uint64_t)(io1_a_src - iop_a_src)) <= 0) {
@@ -8328,7 +8298,7 @@
         } else {
           v_bits |=
               (((uint32_t)(wuffs_base__load_u8be(iop_a_src))) << v_n_bits);
-          (iop_a_src += 1, wuffs_base__return_empty_struct());
+          (iop_a_src += 1, wuffs_base__make_empty_struct());
           v_n_bits += 8;
           if (v_n_bits < v_width) {
             self->private_impl.f_read_from_return_value = 4;
@@ -8438,7 +8408,7 @@
     while (v_n_bits >= 8) {
       v_n_bits -= 8;
       if (iop_a_src > io0_a_src) {
-        (iop_a_src--, wuffs_base__return_empty_struct());
+        (iop_a_src--, wuffs_base__make_empty_struct());
       } else {
         self->private_impl.f_read_from_return_value = 4;
         goto label_2_break;
@@ -8457,7 +8427,7 @@
         iop_a_src - a_src.private_impl.buf->data.ptr;
   }
 
-  return ((wuffs_base__empty_struct){0});
+  return wuffs_base__make_empty_struct();
 }
 
 // -------- func lzw.decoder.write_to
@@ -8500,10 +8470,7 @@
         goto exit;
       }
       v_s = wuffs_base__slice_u8__subslice_ij(
-          ((wuffs_base__slice_u8){
-              .ptr = self->private_data.f_output,
-              .len = 8199,
-          }),
+          wuffs_base__make_slice_u8(self->private_data.f_output, 8199),
           self->private_impl.f_output_ri, self->private_impl.f_output_wi);
       v_n = wuffs_base__io_writer__copy_from_slice(&iop_a_dst, io1_a_dst, v_s);
       if (v_n == ((uint64_t)(v_s.len))) {
@@ -8544,20 +8511,17 @@
 WUFFS_BASE__MAYBE_STATIC wuffs_base__slice_u8  //
 wuffs_lzw__decoder__flush(wuffs_lzw__decoder* self) {
   if (!self) {
-    return ((wuffs_base__slice_u8){0});
+    return wuffs_base__make_slice_u8(NULL, 0);
   }
   if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
-    return ((wuffs_base__slice_u8){0});
+    return wuffs_base__make_slice_u8(NULL, 0);
   }
 
   wuffs_base__slice_u8 v_s = {0};
 
   if (self->private_impl.f_output_ri <= self->private_impl.f_output_wi) {
     v_s = wuffs_base__slice_u8__subslice_ij(
-        ((wuffs_base__slice_u8){
-            .ptr = self->private_data.f_output,
-            .len = 8199,
-        }),
+        wuffs_base__make_slice_u8(self->private_data.f_output, 8199),
         self->private_impl.f_output_ri, self->private_impl.f_output_wi);
   }
   self->private_impl.f_output_ri = 0;
@@ -8683,9 +8647,18 @@
   }
 
   if ((initialize_flags & WUFFS_INITIALIZE__ALREADY_ZEROED) != 0) {
+// The whole point of this if-check is to detect an uninitialized *self.
+// We disable the warning on GCC. Clang-5.0 does not have this warning.
+#if !defined(__clang__) && defined(__GNUC__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif
     if (self->private_impl.magic != 0) {
       return wuffs_base__error__initialize_falsely_claimed_already_zeroed;
     }
+#if !defined(__clang__) && defined(__GNUC__)
+#pragma GCC diagnostic pop
+#endif
   } else {
     void* p = &(self->private_impl);
     size_t n = sizeof(self->private_impl);
@@ -8710,14 +8683,6 @@
   return NULL;
 }
 
-wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-wuffs_gif__decoder__check_wuffs_version(wuffs_gif__decoder* self,
-                                        size_t sizeof_star_self,
-                                        uint64_t wuffs_version) {
-  return wuffs_gif__decoder__initialize(self, sizeof_star_self, wuffs_version,
-                                        WUFFS_INITIALIZE__ALREADY_ZEROED);
-}
-
 size_t  //
 sizeof__wuffs_gif__decoder() {
   return sizeof(wuffs_gif__decoder);
@@ -8860,11 +8825,11 @@
 WUFFS_BASE__MAYBE_STATIC wuffs_base__rect_ie_u32  //
 wuffs_gif__decoder__frame_dirty_rect(const wuffs_gif__decoder* self) {
   if (!self) {
-    return ((wuffs_base__rect_ie_u32){0});
+    return wuffs_base__utility__make_rect_ie_u32(0, 0, 0, 0);
   }
   if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
       (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
-    return ((wuffs_base__rect_ie_u32){0});
+    return wuffs_base__utility__make_rect_ie_u32(0, 0, 0, 0);
   }
 
   return wuffs_base__utility__make_rect_ie_u32(
@@ -8881,11 +8846,11 @@
 WUFFS_BASE__MAYBE_STATIC wuffs_base__range_ii_u64  //
 wuffs_gif__decoder__workbuf_len(const wuffs_gif__decoder* self) {
   if (!self) {
-    return ((wuffs_base__range_ii_u64){0});
+    return wuffs_base__utility__make_range_ii_u64(0, 0);
   }
   if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
       (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
-    return ((wuffs_base__range_ii_u64){0});
+    return wuffs_base__utility__make_range_ii_u64(0, 0);
   }
 
   return wuffs_base__utility__make_range_ii_u64(1, 1);
@@ -8949,7 +8914,7 @@
     WUFFS_BASE__COROUTINE_SUSPENSION_POINT_0;
 
     (memset(&self->private_impl.f_dirty_y, 0, sizeof(wuffs_base__range_ie_u32)),
-     wuffs_base__return_empty_struct());
+     wuffs_base__make_empty_struct());
     if (!self->private_impl.f_end_of_data) {
       if (self->private_impl.f_call_sequence == 0) {
         WUFFS_BASE__COROUTINE_SUSPENSION_POINT(1);
@@ -9199,7 +9164,7 @@
   self->private_impl.f_gc_transparent_index = 0;
   self->private_impl.f_gc_disposal = 0;
   self->private_impl.f_gc_duration = 0;
-  return ((wuffs_base__empty_struct){0});
+  return wuffs_base__make_empty_struct();
 }
 
 // -------- func gif.decoder.decode_up_to_id_part1
@@ -10393,14 +10358,8 @@
       }
     } else if (self->private_impl.f_gc_has_transparent_index) {
       wuffs_base__slice_u8__copy_from_slice(
-          ((wuffs_base__slice_u8){
-              .ptr = self->private_data.f_palettes[1],
-              .len = 1024,
-          }),
-          ((wuffs_base__slice_u8){
-              .ptr = self->private_data.f_palettes[0],
-              .len = 1024,
-          }));
+          wuffs_base__make_slice_u8(self->private_data.f_palettes[1], 1024),
+          wuffs_base__make_slice_u8(self->private_data.f_palettes[0], 1024));
     } else {
       self->private_impl.f_which_palette = 0;
     }
@@ -10420,20 +10379,16 @@
     }
     v_dst_palette = wuffs_base__pixel_buffer__palette(a_dst);
     if (((uint64_t)(v_dst_palette.len)) == 0) {
-      v_dst_palette = ((wuffs_base__slice_u8){
-          .ptr = self->private_data.f_dst_palette,
-          .len = 1024,
-      });
+      v_dst_palette =
+          wuffs_base__make_slice_u8(self->private_data.f_dst_palette, 1024);
     }
     wuffs_base__pixel_swizzler__prepare(
         &self->private_impl.f_swizzler,
         wuffs_base__pixel_buffer__pixel_format(a_dst), v_dst_palette,
         1191444488,
-        ((wuffs_base__slice_u8){
-            .ptr = self->private_data
-                       .f_palettes[self->private_impl.f_which_palette],
-            .len = 1024,
-        }));
+        wuffs_base__make_slice_u8(
+            self->private_data.f_palettes[self->private_impl.f_which_palette],
+            1024));
     if (self->private_impl.f_previous_lzw_decode_ended_abruptly) {
       wuffs_base__ignore_status(wuffs_lzw__decoder__initialize(
           &self->private_data.f_lzw, sizeof(wuffs_lzw__decoder), WUFFS_VERSION,
@@ -10492,11 +10447,9 @@
   bool v_need_block_size = false;
   uint64_t v_n_compressed = 0;
   wuffs_base__slice_u8 v_compressed = {0};
-  wuffs_base__io_reader v_r = {.private_impl = {0}};
-  wuffs_base__io_buffer u_r WUFFS_BASE__POTENTIALLY_UNUSED = {
-      .data = ((wuffs_base__slice_u8){0}),
-      .meta = ((wuffs_base__io_buffer_meta){0}),
-  };
+  wuffs_base__io_reader v_r = wuffs_base__utility__null_io_reader();
+  wuffs_base__io_buffer u_r WUFFS_BASE__POTENTIALLY_UNUSED =
+      wuffs_base__utility__null_io_buffer();
   uint8_t* iop_v_r WUFFS_BASE__POTENTIALLY_UNUSED = NULL;
   uint8_t* io1_v_r WUFFS_BASE__POTENTIALLY_UNUSED = NULL;
   wuffs_base__status v_lzw_status = NULL;
@@ -10565,10 +10518,8 @@
             wuffs_base__io_reader__take(&iop_a_src, io1_a_src, v_n_compressed);
         wuffs_base__slice_u8__copy_from_slice(
             wuffs_base__slice_u8__subslice_i(
-                ((wuffs_base__slice_u8){
-                    .ptr = self->private_data.f_compressed,
-                    .len = 4096,
-                }),
+                wuffs_base__make_slice_u8(self->private_data.f_compressed,
+                                          4096),
                 self->private_impl.f_compressed_wi),
             v_compressed);
         wuffs_base__u64__sat_add_indirect(&self->private_impl.f_compressed_wi,
@@ -10582,7 +10533,7 @@
           goto label_1_break;
         }
         v_block_size = ((uint64_t)(wuffs_base__load_u8be(iop_a_src)));
-        (iop_a_src += 1, wuffs_base__return_empty_struct());
+        (iop_a_src += 1, wuffs_base__make_empty_struct());
       }
     label_1_break:;
       if (1 > ((uint64_t)(a_workbuf.len))) {
@@ -10604,10 +10555,8 @@
           wuffs_base__io_reader__set(
               &v_r, &u_r, &iop_v_r, &io1_v_r,
               wuffs_base__slice_u8__subslice_ij(
-                  ((wuffs_base__slice_u8){
-                      .ptr = self->private_data.f_compressed,
-                      .len = 4096,
-                  }),
+                  wuffs_base__make_slice_u8(self->private_data.f_compressed,
+                                            4096),
                   self->private_impl.f_compressed_ri,
                   self->private_impl.f_compressed_wi));
           {
@@ -10758,10 +10707,7 @@
       }
       v_n = wuffs_base__pixel_swizzler__swizzle_packed(
           &self->private_impl.f_swizzler, v_dst,
-          ((wuffs_base__slice_u8){
-              .ptr = self->private_data.f_dst_palette,
-              .len = 1024,
-          }),
+          wuffs_base__make_slice_u8(self->private_data.f_dst_palette, 1024),
           v_src);
       wuffs_base__u64__sat_add_indirect(&v_src_ri, v_n);
       wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x,
@@ -10861,9 +10807,18 @@
   }
 
   if ((initialize_flags & WUFFS_INITIALIZE__ALREADY_ZEROED) != 0) {
+// The whole point of this if-check is to detect an uninitialized *self.
+// We disable the warning on GCC. Clang-5.0 does not have this warning.
+#if !defined(__clang__) && defined(__GNUC__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif
     if (self->private_impl.magic != 0) {
       return wuffs_base__error__initialize_falsely_claimed_already_zeroed;
     }
+#if !defined(__clang__) && defined(__GNUC__)
+#pragma GCC diagnostic pop
+#endif
   } else {
     void* p = &(self->private_impl);
     size_t n = sizeof(self->private_impl);
@@ -10896,14 +10851,6 @@
   return NULL;
 }
 
-wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-wuffs_gzip__decoder__check_wuffs_version(wuffs_gzip__decoder* self,
-                                         size_t sizeof_star_self,
-                                         uint64_t wuffs_version) {
-  return wuffs_gzip__decoder__initialize(self, sizeof_star_self, wuffs_version,
-                                         WUFFS_INITIALIZE__ALREADY_ZEROED);
-}
-
 size_t  //
 sizeof__wuffs_gzip__decoder() {
   return sizeof(wuffs_gzip__decoder);
@@ -10916,14 +10863,14 @@
 WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
 wuffs_gzip__decoder__set_ignore_checksum(wuffs_gzip__decoder* self, bool a_ic) {
   if (!self) {
-    return ((wuffs_base__empty_struct){0});
+    return wuffs_base__make_empty_struct();
   }
   if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
-    return ((wuffs_base__empty_struct){0});
+    return wuffs_base__make_empty_struct();
   }
 
   self->private_impl.f_ignore_checksum = a_ic;
-  return ((wuffs_base__empty_struct){0});
+  return wuffs_base__make_empty_struct();
 }
 
 // -------- func gzip.decoder.workbuf_len
@@ -10931,11 +10878,11 @@
 WUFFS_BASE__MAYBE_STATIC wuffs_base__range_ii_u64  //
 wuffs_gzip__decoder__workbuf_len(const wuffs_gzip__decoder* self) {
   if (!self) {
-    return ((wuffs_base__range_ii_u64){0});
+    return wuffs_base__utility__make_range_ii_u64(0, 0);
   }
   if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
       (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
-    return ((wuffs_base__range_ii_u64){0});
+    return wuffs_base__utility__make_range_ii_u64(0, 0);
   }
 
   return wuffs_base__utility__make_range_ii_u64(1, 1);
@@ -11194,10 +11141,9 @@
       if (!self->private_impl.f_ignore_checksum) {
         v_checksum_got = wuffs_crc32__ieee_hasher__update(
             &self->private_data.f_checksum,
-            ((wuffs_base__slice_u8){
-                .ptr = a_dst.private_impl.mark,
-                .len = (size_t)(iop_a_dst - a_dst.private_impl.mark),
-            }));
+            wuffs_base__make_slice_u8(
+                a_dst.private_impl.mark,
+                (size_t)(iop_a_dst - a_dst.private_impl.mark)));
         v_decoded_length_got += ((uint32_t)(
             (((uint64_t)(iop_a_dst - a_dst.private_impl.mark)) & 4294967295)));
       }
@@ -11347,9 +11293,18 @@
   }
 
   if ((initialize_flags & WUFFS_INITIALIZE__ALREADY_ZEROED) != 0) {
+// The whole point of this if-check is to detect an uninitialized *self.
+// We disable the warning on GCC. Clang-5.0 does not have this warning.
+#if !defined(__clang__) && defined(__GNUC__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif
     if (self->private_impl.magic != 0) {
       return wuffs_base__error__initialize_falsely_claimed_already_zeroed;
     }
+#if !defined(__clang__) && defined(__GNUC__)
+#pragma GCC diagnostic pop
+#endif
   } else {
     void* p = &(self->private_impl);
     size_t n = sizeof(self->private_impl);
@@ -11382,14 +11337,6 @@
   return NULL;
 }
 
-wuffs_base__status WUFFS_BASE__WARN_UNUSED_RESULT  //
-wuffs_zlib__decoder__check_wuffs_version(wuffs_zlib__decoder* self,
-                                         size_t sizeof_star_self,
-                                         uint64_t wuffs_version) {
-  return wuffs_zlib__decoder__initialize(self, sizeof_star_self, wuffs_version,
-                                         WUFFS_INITIALIZE__ALREADY_ZEROED);
-}
-
 size_t  //
 sizeof__wuffs_zlib__decoder() {
   return sizeof(wuffs_zlib__decoder);
@@ -11402,14 +11349,14 @@
 WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
 wuffs_zlib__decoder__set_ignore_checksum(wuffs_zlib__decoder* self, bool a_ic) {
   if (!self) {
-    return ((wuffs_base__empty_struct){0});
+    return wuffs_base__make_empty_struct();
   }
   if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
-    return ((wuffs_base__empty_struct){0});
+    return wuffs_base__make_empty_struct();
   }
 
   self->private_impl.f_ignore_checksum = a_ic;
-  return ((wuffs_base__empty_struct){0});
+  return wuffs_base__make_empty_struct();
 }
 
 // -------- func zlib.decoder.workbuf_len
@@ -11417,11 +11364,11 @@
 WUFFS_BASE__MAYBE_STATIC wuffs_base__range_ii_u64  //
 wuffs_zlib__decoder__workbuf_len(const wuffs_zlib__decoder* self) {
   if (!self) {
-    return ((wuffs_base__range_ii_u64){0});
+    return wuffs_base__utility__make_range_ii_u64(0, 0);
   }
   if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
       (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
-    return ((wuffs_base__range_ii_u64){0});
+    return wuffs_base__utility__make_range_ii_u64(0, 0);
   }
 
   return wuffs_base__utility__make_range_ii_u64(1, 1);
@@ -11565,10 +11512,9 @@
       if (!self->private_impl.f_ignore_checksum) {
         v_checksum_got = wuffs_adler32__hasher__update(
             &self->private_data.f_checksum,
-            ((wuffs_base__slice_u8){
-                .ptr = a_dst.private_impl.mark,
-                .len = (size_t)(iop_a_dst - a_dst.private_impl.mark),
-            }));
+            wuffs_base__make_slice_u8(
+                a_dst.private_impl.mark,
+                (size_t)(iop_a_dst - a_dst.private_impl.mark)));
       }
       if (wuffs_base__status__is_ok(v_status)) {
         goto label_0_break;