Add set_quirk_enabled interface methods
diff --git a/lang/builtin/builtin.go b/lang/builtin/builtin.go
index 34ba6ec..6bce082 100644
--- a/lang/builtin/builtin.go
+++ b/lang/builtin/builtin.go
@@ -391,6 +391,7 @@
 var InterfaceFuncs = []string{
 	// ---- hasher_u32
 
+	"hasher_u32.set_quirk_enabled!(quirk: u32, enabled: bool)",
 	"hasher_u32.update_u32!(x: slice u8) u32",
 
 	// ---- image_decoder
@@ -408,17 +409,20 @@
 	"image_decoder.num_decoded_frame_configs() u64",
 	"image_decoder.num_decoded_frames() u64",
 	"image_decoder.restart_frame!(index: u64, io_position: u64) status",
+	"image_decoder.set_quirk_enabled!(quirk: u32, enabled: bool)",
 	"image_decoder.set_report_metadata!(fourcc: u32, report: bool)",
 	"image_decoder.workbuf_len() range_ii_u64",
 
 	// ---- io_transformer
 
+	"io_transformer.set_quirk_enabled!(quirk: u32, enabled: bool)",
 	"io_transformer.transform_io?(dst: io_writer, src: io_reader, workbuf: slice u8)",
 	"io_transformer.workbuf_len() range_ii_u64",
 
 	// ---- token_decoder
 
 	"token_decoder.decode_tokens?(dst: token_writer, src: io_reader, workbuf: slice u8)",
+	"token_decoder.set_quirk_enabled!(quirk: u32, enabled: bool)",
 	"token_decoder.workbuf_len() range_ii_u64",
 }
 
diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index 50346ab..14f3222 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -3827,11 +3827,19 @@
 extern const char* wuffs_base__hasher_u32__vtable_name;
 
 typedef struct {
+  wuffs_base__empty_struct (*set_quirk_enabled)(void* self,
+                                                uint32_t a_quirk,
+                                                bool a_enabled);
   uint32_t (*update_u32)(void* self, wuffs_base__slice_u8 a_x);
 } wuffs_base__hasher_u32__func_ptrs;
 
 typedef struct wuffs_base__hasher_u32__struct wuffs_base__hasher_u32;
 
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_base__hasher_u32__set_quirk_enabled(wuffs_base__hasher_u32* self,
+                                          uint32_t a_quirk,
+                                          bool a_enabled);
+
 WUFFS_BASE__MAYBE_STATIC uint32_t  //
 wuffs_base__hasher_u32__update_u32(wuffs_base__hasher_u32* self,
                                    wuffs_base__slice_u8 a_x);
@@ -3850,6 +3858,11 @@
   using unique_ptr = std::unique_ptr<wuffs_base__hasher_u32, decltype(&free)>;
 #endif
 
+  inline wuffs_base__empty_struct  //
+  set_quirk_enabled(uint32_t a_quirk, bool a_enabled) {
+    return wuffs_base__hasher_u32__set_quirk_enabled(this, a_quirk, a_enabled);
+  }
+
   inline uint32_t  //
   update_u32(wuffs_base__slice_u8 a_x) {
     return wuffs_base__hasher_u32__update_u32(this, a_x);
@@ -3889,6 +3902,9 @@
   wuffs_base__status (*restart_frame)(void* self,
                                       uint64_t a_index,
                                       uint64_t a_io_position);
+  wuffs_base__empty_struct (*set_quirk_enabled)(void* self,
+                                                uint32_t a_quirk,
+                                                bool a_enabled);
   wuffs_base__empty_struct (*set_report_metadata)(void* self,
                                                   uint32_t a_fourcc,
                                                   bool a_report);
@@ -3950,6 +3966,11 @@
                                          uint64_t a_io_position);
 
 WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_base__image_decoder__set_quirk_enabled(wuffs_base__image_decoder* self,
+                                             uint32_t a_quirk,
+                                             bool a_enabled);
+
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
 wuffs_base__image_decoder__set_report_metadata(wuffs_base__image_decoder* self,
                                                uint32_t a_fourcc,
                                                bool a_report);
@@ -4036,6 +4057,12 @@
   }
 
   inline wuffs_base__empty_struct  //
+  set_quirk_enabled(uint32_t a_quirk, bool a_enabled) {
+    return wuffs_base__image_decoder__set_quirk_enabled(this, a_quirk,
+                                                        a_enabled);
+  }
+
+  inline wuffs_base__empty_struct  //
   set_report_metadata(uint32_t a_fourcc, bool a_report) {
     return wuffs_base__image_decoder__set_report_metadata(this, a_fourcc,
                                                           a_report);
@@ -4057,6 +4084,9 @@
 extern const char* wuffs_base__io_transformer__vtable_name;
 
 typedef struct {
+  wuffs_base__empty_struct (*set_quirk_enabled)(void* self,
+                                                uint32_t a_quirk,
+                                                bool a_enabled);
   wuffs_base__status (*transform_io)(void* self,
                                      wuffs_base__io_buffer* a_dst,
                                      wuffs_base__io_buffer* a_src,
@@ -4066,6 +4096,11 @@
 
 typedef struct wuffs_base__io_transformer__struct wuffs_base__io_transformer;
 
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_base__io_transformer__set_quirk_enabled(wuffs_base__io_transformer* self,
+                                              uint32_t a_quirk,
+                                              bool a_enabled);
+
 WUFFS_BASE__MAYBE_STATIC wuffs_base__status  //
 wuffs_base__io_transformer__transform_io(wuffs_base__io_transformer* self,
                                          wuffs_base__io_buffer* a_dst,
@@ -4090,6 +4125,12 @@
       std::unique_ptr<wuffs_base__io_transformer, decltype(&free)>;
 #endif
 
+  inline wuffs_base__empty_struct  //
+  set_quirk_enabled(uint32_t a_quirk, bool a_enabled) {
+    return wuffs_base__io_transformer__set_quirk_enabled(this, a_quirk,
+                                                         a_enabled);
+  }
+
   inline wuffs_base__status  //
   transform_io(wuffs_base__io_buffer* a_dst,
                wuffs_base__io_buffer* a_src,
@@ -4118,6 +4159,9 @@
                                       wuffs_base__token_buffer* a_dst,
                                       wuffs_base__io_buffer* a_src,
                                       wuffs_base__slice_u8 a_workbuf);
+  wuffs_base__empty_struct (*set_quirk_enabled)(void* self,
+                                                uint32_t a_quirk,
+                                                bool a_enabled);
   wuffs_base__range_ii_u64 (*workbuf_len)(const void* self);
 } wuffs_base__token_decoder__func_ptrs;
 
@@ -4129,6 +4173,11 @@
                                          wuffs_base__io_buffer* a_src,
                                          wuffs_base__slice_u8 a_workbuf);
 
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_base__token_decoder__set_quirk_enabled(wuffs_base__token_decoder* self,
+                                             uint32_t a_quirk,
+                                             bool a_enabled);
+
 WUFFS_BASE__MAYBE_STATIC wuffs_base__range_ii_u64  //
 wuffs_base__token_decoder__workbuf_len(const wuffs_base__token_decoder* self);
 
@@ -4155,6 +4204,12 @@
                                                     a_workbuf);
   }
 
+  inline wuffs_base__empty_struct  //
+  set_quirk_enabled(uint32_t a_quirk, bool a_enabled) {
+    return wuffs_base__token_decoder__set_quirk_enabled(this, a_quirk,
+                                                        a_enabled);
+  }
+
   inline wuffs_base__range_ii_u64  //
   workbuf_len() const {
     return wuffs_base__token_decoder__workbuf_len(this);
@@ -4227,6 +4282,11 @@
 
 // ---------------- Public Function Prototypes
 
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_adler32__hasher__set_quirk_enabled(wuffs_adler32__hasher* self,
+                                         uint32_t a_quirk,
+                                         bool a_enabled);
+
 WUFFS_BASE__MAYBE_STATIC uint32_t  //
 wuffs_adler32__hasher__update_u32(wuffs_adler32__hasher* self,
                                   wuffs_base__slice_u8 a_x);
@@ -4318,6 +4378,11 @@
     return (wuffs_base__hasher_u32*)this;
   }
 
+  inline wuffs_base__empty_struct  //
+  set_quirk_enabled(uint32_t a_quirk, bool a_enabled) {
+    return wuffs_adler32__hasher__set_quirk_enabled(this, a_quirk, a_enabled);
+  }
+
   inline uint32_t  //
   update_u32(wuffs_base__slice_u8 a_x) {
     return wuffs_adler32__hasher__update_u32(this, a_x);
@@ -4393,6 +4458,11 @@
 
 // ---------------- Public Function Prototypes
 
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_bmp__decoder__set_quirk_enabled(wuffs_bmp__decoder* self,
+                                      uint32_t a_quirk,
+                                      bool a_enabled);
+
 WUFFS_BASE__MAYBE_STATIC wuffs_base__status  //
 wuffs_bmp__decoder__decode_image_config(wuffs_bmp__decoder* self,
                                         wuffs_base__image_config* a_dst,
@@ -4573,6 +4643,11 @@
     return (wuffs_base__image_decoder*)this;
   }
 
+  inline wuffs_base__empty_struct  //
+  set_quirk_enabled(uint32_t a_quirk, bool a_enabled) {
+    return wuffs_bmp__decoder__set_quirk_enabled(this, a_quirk, a_enabled);
+  }
+
   inline wuffs_base__status  //
   decode_image_config(wuffs_base__image_config* a_dst,
                       wuffs_base__io_buffer* a_src) {
@@ -4710,6 +4785,11 @@
 
 // ---------------- Public Function Prototypes
 
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_crc32__ieee_hasher__set_quirk_enabled(wuffs_crc32__ieee_hasher* self,
+                                            uint32_t a_quirk,
+                                            bool a_enabled);
+
 WUFFS_BASE__MAYBE_STATIC uint32_t  //
 wuffs_crc32__ieee_hasher__update_u32(wuffs_crc32__ieee_hasher* self,
                                      wuffs_base__slice_u8 a_x);
@@ -4801,6 +4881,12 @@
     return (wuffs_base__hasher_u32*)this;
   }
 
+  inline wuffs_base__empty_struct  //
+  set_quirk_enabled(uint32_t a_quirk, bool a_enabled) {
+    return wuffs_crc32__ieee_hasher__set_quirk_enabled(this, a_quirk,
+                                                       a_enabled);
+  }
+
   inline uint32_t  //
   update_u32(wuffs_base__slice_u8 a_x) {
     return wuffs_crc32__ieee_hasher__update_u32(this, a_x);
@@ -4891,6 +4977,11 @@
 wuffs_deflate__decoder__add_history(wuffs_deflate__decoder* self,
                                     wuffs_base__slice_u8 a_hist);
 
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_deflate__decoder__set_quirk_enabled(wuffs_deflate__decoder* self,
+                                          uint32_t a_quirk,
+                                          bool a_enabled);
+
 WUFFS_BASE__MAYBE_STATIC wuffs_base__range_ii_u64  //
 wuffs_deflate__decoder__workbuf_len(const wuffs_deflate__decoder* self);
 
@@ -5043,6 +5134,11 @@
     return wuffs_deflate__decoder__add_history(this, a_hist);
   }
 
+  inline wuffs_base__empty_struct  //
+  set_quirk_enabled(uint32_t a_quirk, bool a_enabled) {
+    return wuffs_deflate__decoder__set_quirk_enabled(this, a_quirk, a_enabled);
+  }
+
   inline wuffs_base__range_ii_u64  //
   workbuf_len() const {
     return wuffs_deflate__decoder__workbuf_len(this);
@@ -5125,6 +5221,11 @@
 // ---------------- Public Function Prototypes
 
 WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_lzw__decoder__set_quirk_enabled(wuffs_lzw__decoder* self,
+                                      uint32_t a_quirk,
+                                      bool a_enabled);
+
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
 wuffs_lzw__decoder__set_literal_width(wuffs_lzw__decoder* self, uint32_t a_lw);
 
 WUFFS_BASE__MAYBE_STATIC wuffs_base__range_ii_u64  //
@@ -5247,6 +5348,11 @@
   }
 
   inline wuffs_base__empty_struct  //
+  set_quirk_enabled(uint32_t a_quirk, bool a_enabled) {
+    return wuffs_lzw__decoder__set_quirk_enabled(this, a_quirk, a_enabled);
+  }
+
+  inline wuffs_base__empty_struct  //
   set_literal_width(uint32_t a_lw) {
     return wuffs_lzw__decoder__set_literal_width(this, a_lw);
   }
@@ -6106,6 +6212,11 @@
 WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
 wuffs_gzip__decoder__set_ignore_checksum(wuffs_gzip__decoder* self, bool a_ic);
 
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_gzip__decoder__set_quirk_enabled(wuffs_gzip__decoder* self,
+                                       uint32_t a_quirk,
+                                       bool a_enabled);
+
 WUFFS_BASE__MAYBE_STATIC wuffs_base__range_ii_u64  //
 wuffs_gzip__decoder__workbuf_len(const wuffs_gzip__decoder* self);
 
@@ -6220,6 +6331,11 @@
     return wuffs_gzip__decoder__set_ignore_checksum(this, a_ic);
   }
 
+  inline wuffs_base__empty_struct  //
+  set_quirk_enabled(uint32_t a_quirk, bool a_enabled) {
+    return wuffs_gzip__decoder__set_quirk_enabled(this, a_quirk, a_enabled);
+  }
+
   inline wuffs_base__range_ii_u64  //
   workbuf_len() const {
     return wuffs_gzip__decoder__workbuf_len(this);
@@ -6566,6 +6682,11 @@
 
 // ---------------- Public Function Prototypes
 
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_wbmp__decoder__set_quirk_enabled(wuffs_wbmp__decoder* self,
+                                       uint32_t a_quirk,
+                                       bool a_enabled);
+
 WUFFS_BASE__MAYBE_STATIC wuffs_base__status  //
 wuffs_wbmp__decoder__decode_image_config(wuffs_wbmp__decoder* self,
                                          wuffs_base__image_config* a_dst,
@@ -6729,6 +6850,11 @@
     return (wuffs_base__image_decoder*)this;
   }
 
+  inline wuffs_base__empty_struct  //
+  set_quirk_enabled(uint32_t a_quirk, bool a_enabled) {
+    return wuffs_wbmp__decoder__set_quirk_enabled(this, a_quirk, a_enabled);
+  }
+
   inline wuffs_base__status  //
   decode_image_config(wuffs_base__image_config* a_dst,
                       wuffs_base__io_buffer* a_src) {
@@ -6885,6 +7011,11 @@
 WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
 wuffs_zlib__decoder__set_ignore_checksum(wuffs_zlib__decoder* self, bool a_ic);
 
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_zlib__decoder__set_quirk_enabled(wuffs_zlib__decoder* self,
+                                       uint32_t a_quirk,
+                                       bool a_enabled);
+
 WUFFS_BASE__MAYBE_STATIC wuffs_base__range_ii_u64  //
 wuffs_zlib__decoder__workbuf_len(const wuffs_zlib__decoder* self);
 
@@ -7013,6 +7144,11 @@
     return wuffs_zlib__decoder__set_ignore_checksum(this, a_ic);
   }
 
+  inline wuffs_base__empty_struct  //
+  set_quirk_enabled(uint32_t a_quirk, bool a_enabled) {
+    return wuffs_zlib__decoder__set_quirk_enabled(this, a_quirk, a_enabled);
+  }
+
   inline wuffs_base__range_ii_u64  //
   workbuf_len() const {
     return wuffs_zlib__decoder__workbuf_len(this);
@@ -7606,6 +7742,33 @@
 const char* wuffs_base__hasher_u32__vtable_name =
     "{vtable}wuffs_base__hasher_u32";
 
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_base__hasher_u32__set_quirk_enabled(wuffs_base__hasher_u32* self,
+                                          uint32_t a_quirk,
+                                          bool a_enabled) {
+  if (!self) {
+    return wuffs_base__make_empty_struct();
+  }
+  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+    return wuffs_base__make_empty_struct();
+  }
+
+  const wuffs_base__vtable* v = &self->private_impl.first_vtable;
+  int i;
+  for (i = 0; i < 63; i++) {
+    if (v->vtable_name == wuffs_base__hasher_u32__vtable_name) {
+      const wuffs_base__hasher_u32__func_ptrs* func_ptrs =
+          (const wuffs_base__hasher_u32__func_ptrs*)(v->function_pointers);
+      return (*func_ptrs->set_quirk_enabled)(self, a_quirk, a_enabled);
+    } else if (v->vtable_name == NULL) {
+      break;
+    }
+    v++;
+  }
+
+  return wuffs_base__make_empty_struct();
+}
+
 WUFFS_BASE__MAYBE_STATIC uint32_t  //
 wuffs_base__hasher_u32__update_u32(wuffs_base__hasher_u32* self,
                                    wuffs_base__slice_u8 a_x) {
@@ -7954,6 +8117,33 @@
 }
 
 WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_base__image_decoder__set_quirk_enabled(wuffs_base__image_decoder* self,
+                                             uint32_t a_quirk,
+                                             bool a_enabled) {
+  if (!self) {
+    return wuffs_base__make_empty_struct();
+  }
+  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+    return wuffs_base__make_empty_struct();
+  }
+
+  const wuffs_base__vtable* v = &self->private_impl.first_vtable;
+  int i;
+  for (i = 0; i < 63; i++) {
+    if (v->vtable_name == wuffs_base__image_decoder__vtable_name) {
+      const wuffs_base__image_decoder__func_ptrs* func_ptrs =
+          (const wuffs_base__image_decoder__func_ptrs*)(v->function_pointers);
+      return (*func_ptrs->set_quirk_enabled)(self, a_quirk, a_enabled);
+    } else if (v->vtable_name == NULL) {
+      break;
+    }
+    v++;
+  }
+
+  return wuffs_base__make_empty_struct();
+}
+
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
 wuffs_base__image_decoder__set_report_metadata(wuffs_base__image_decoder* self,
                                                uint32_t a_fourcc,
                                                bool a_report) {
@@ -8011,6 +8201,33 @@
 const char* wuffs_base__io_transformer__vtable_name =
     "{vtable}wuffs_base__io_transformer";
 
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_base__io_transformer__set_quirk_enabled(wuffs_base__io_transformer* self,
+                                              uint32_t a_quirk,
+                                              bool a_enabled) {
+  if (!self) {
+    return wuffs_base__make_empty_struct();
+  }
+  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+    return wuffs_base__make_empty_struct();
+  }
+
+  const wuffs_base__vtable* v = &self->private_impl.first_vtable;
+  int i;
+  for (i = 0; i < 63; i++) {
+    if (v->vtable_name == wuffs_base__io_transformer__vtable_name) {
+      const wuffs_base__io_transformer__func_ptrs* func_ptrs =
+          (const wuffs_base__io_transformer__func_ptrs*)(v->function_pointers);
+      return (*func_ptrs->set_quirk_enabled)(self, a_quirk, a_enabled);
+    } else if (v->vtable_name == NULL) {
+      break;
+    }
+    v++;
+  }
+
+  return wuffs_base__make_empty_struct();
+}
+
 WUFFS_BASE__MAYBE_STATIC wuffs_base__status  //
 wuffs_base__io_transformer__transform_io(wuffs_base__io_transformer* self,
                                          wuffs_base__io_buffer* a_dst,
@@ -8105,6 +8322,33 @@
   return wuffs_base__make_status(wuffs_base__error__bad_vtable);
 }
 
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_base__token_decoder__set_quirk_enabled(wuffs_base__token_decoder* self,
+                                             uint32_t a_quirk,
+                                             bool a_enabled) {
+  if (!self) {
+    return wuffs_base__make_empty_struct();
+  }
+  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+    return wuffs_base__make_empty_struct();
+  }
+
+  const wuffs_base__vtable* v = &self->private_impl.first_vtable;
+  int i;
+  for (i = 0; i < 63; i++) {
+    if (v->vtable_name == wuffs_base__token_decoder__vtable_name) {
+      const wuffs_base__token_decoder__func_ptrs* func_ptrs =
+          (const wuffs_base__token_decoder__func_ptrs*)(v->function_pointers);
+      return (*func_ptrs->set_quirk_enabled)(self, a_quirk, a_enabled);
+    } else if (v->vtable_name == NULL) {
+      break;
+    }
+    v++;
+  }
+
+  return wuffs_base__make_empty_struct();
+}
+
 WUFFS_BASE__MAYBE_STATIC wuffs_base__range_ii_u64  //
 wuffs_base__token_decoder__workbuf_len(const wuffs_base__token_decoder* self) {
   if (!self) {
@@ -10854,6 +11098,8 @@
 
 const wuffs_base__hasher_u32__func_ptrs
     wuffs_adler32__hasher__func_ptrs_for__wuffs_base__hasher_u32 = {
+        (wuffs_base__empty_struct(*)(void*, uint32_t, bool))(
+            &wuffs_adler32__hasher__set_quirk_enabled),
         (uint32_t(*)(void*, wuffs_base__slice_u8))(
             &wuffs_adler32__hasher__update_u32),
 };
@@ -10932,6 +11178,22 @@
 
 // ---------------- Function Implementations
 
+// -------- func adler32.hasher.set_quirk_enabled
+
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_adler32__hasher__set_quirk_enabled(wuffs_adler32__hasher* self,
+                                         uint32_t a_quirk,
+                                         bool a_enabled) {
+  if (!self) {
+    return wuffs_base__make_empty_struct();
+  }
+  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+    return wuffs_base__make_empty_struct();
+  }
+
+  return wuffs_base__make_empty_struct();
+}
+
 // -------- func adler32.hasher.update_u32
 
 WUFFS_BASE__MAYBE_STATIC uint32_t  //
@@ -11068,6 +11330,8 @@
         (wuffs_base__status(*)(void*, uint64_t, uint64_t))(
             &wuffs_bmp__decoder__restart_frame),
         (wuffs_base__empty_struct(*)(void*, uint32_t, bool))(
+            &wuffs_bmp__decoder__set_quirk_enabled),
+        (wuffs_base__empty_struct(*)(void*, uint32_t, bool))(
             &wuffs_bmp__decoder__set_report_metadata),
         (wuffs_base__range_ii_u64(*)(const void*))(
             &wuffs_bmp__decoder__workbuf_len),
@@ -11147,6 +11411,22 @@
 
 // ---------------- Function Implementations
 
+// -------- func bmp.decoder.set_quirk_enabled
+
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_bmp__decoder__set_quirk_enabled(wuffs_bmp__decoder* self,
+                                      uint32_t a_quirk,
+                                      bool a_enabled) {
+  if (!self) {
+    return wuffs_base__make_empty_struct();
+  }
+  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+    return wuffs_base__make_empty_struct();
+  }
+
+  return wuffs_base__make_empty_struct();
+}
+
 // -------- func bmp.decoder.decode_image_config
 
 WUFFS_BASE__MAYBE_STATIC wuffs_base__status  //
@@ -13286,6 +13566,8 @@
 
 const wuffs_base__hasher_u32__func_ptrs
     wuffs_crc32__ieee_hasher__func_ptrs_for__wuffs_base__hasher_u32 = {
+        (wuffs_base__empty_struct(*)(void*, uint32_t, bool))(
+            &wuffs_crc32__ieee_hasher__set_quirk_enabled),
         (uint32_t(*)(void*, wuffs_base__slice_u8))(
             &wuffs_crc32__ieee_hasher__update_u32),
 };
@@ -13364,6 +13646,22 @@
 
 // ---------------- Function Implementations
 
+// -------- func crc32.ieee_hasher.set_quirk_enabled
+
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_crc32__ieee_hasher__set_quirk_enabled(wuffs_crc32__ieee_hasher* self,
+                                            uint32_t a_quirk,
+                                            bool a_enabled) {
+  if (!self) {
+    return wuffs_base__make_empty_struct();
+  }
+  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+    return wuffs_base__make_empty_struct();
+  }
+
+  return wuffs_base__make_empty_struct();
+}
+
 // -------- func crc32.ieee_hasher.update_u32
 
 WUFFS_BASE__MAYBE_STATIC uint32_t  //
@@ -13605,6 +13903,8 @@
 
 const wuffs_base__io_transformer__func_ptrs
     wuffs_deflate__decoder__func_ptrs_for__wuffs_base__io_transformer = {
+        (wuffs_base__empty_struct(*)(void*, uint32_t, bool))(
+            &wuffs_deflate__decoder__set_quirk_enabled),
         (wuffs_base__status(*)(void*,
                                wuffs_base__io_buffer*,
                                wuffs_base__io_buffer*,
@@ -13746,6 +14046,22 @@
   return wuffs_base__make_empty_struct();
 }
 
+// -------- func deflate.decoder.set_quirk_enabled
+
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_deflate__decoder__set_quirk_enabled(wuffs_deflate__decoder* self,
+                                          uint32_t a_quirk,
+                                          bool a_enabled) {
+  if (!self) {
+    return wuffs_base__make_empty_struct();
+  }
+  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+    return wuffs_base__make_empty_struct();
+  }
+
+  return wuffs_base__make_empty_struct();
+}
+
 // -------- func deflate.decoder.workbuf_len
 
 WUFFS_BASE__MAYBE_STATIC wuffs_base__range_ii_u64  //
@@ -15475,6 +15791,8 @@
 
 const wuffs_base__io_transformer__func_ptrs
     wuffs_lzw__decoder__func_ptrs_for__wuffs_base__io_transformer = {
+        (wuffs_base__empty_struct(*)(void*, uint32_t, bool))(
+            &wuffs_lzw__decoder__set_quirk_enabled),
         (wuffs_base__status(*)(void*,
                                wuffs_base__io_buffer*,
                                wuffs_base__io_buffer*,
@@ -15558,6 +15876,22 @@
 
 // ---------------- Function Implementations
 
+// -------- func lzw.decoder.set_quirk_enabled
+
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_lzw__decoder__set_quirk_enabled(wuffs_lzw__decoder* self,
+                                      uint32_t a_quirk,
+                                      bool a_enabled) {
+  if (!self) {
+    return wuffs_base__make_empty_struct();
+  }
+  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+    return wuffs_base__make_empty_struct();
+  }
+
+  return wuffs_base__make_empty_struct();
+}
+
 // -------- func lzw.decoder.set_literal_width
 
 WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
@@ -16181,6 +16515,8 @@
         (wuffs_base__status(*)(void*, uint64_t, uint64_t))(
             &wuffs_gif__config_decoder__restart_frame),
         (wuffs_base__empty_struct(*)(void*, uint32_t, bool))(
+            &wuffs_gif__config_decoder__set_quirk_enabled),
+        (wuffs_base__empty_struct(*)(void*, uint32_t, bool))(
             &wuffs_gif__config_decoder__set_report_metadata),
         (wuffs_base__range_ii_u64(*)(const void*))(
             &wuffs_gif__config_decoder__workbuf_len),
@@ -16216,6 +16552,8 @@
         (wuffs_base__status(*)(void*, uint64_t, uint64_t))(
             &wuffs_gif__decoder__restart_frame),
         (wuffs_base__empty_struct(*)(void*, uint32_t, bool))(
+            &wuffs_gif__decoder__set_quirk_enabled),
+        (wuffs_base__empty_struct(*)(void*, uint32_t, bool))(
             &wuffs_gif__decoder__set_report_metadata),
         (wuffs_base__range_ii_u64(*)(const void*))(
             &wuffs_gif__decoder__workbuf_len),
@@ -20747,6 +21085,8 @@
 
 const wuffs_base__io_transformer__func_ptrs
     wuffs_gzip__decoder__func_ptrs_for__wuffs_base__io_transformer = {
+        (wuffs_base__empty_struct(*)(void*, uint32_t, bool))(
+            &wuffs_gzip__decoder__set_quirk_enabled),
         (wuffs_base__status(*)(void*,
                                wuffs_base__io_buffer*,
                                wuffs_base__io_buffer*,
@@ -20861,6 +21201,22 @@
   return wuffs_base__make_empty_struct();
 }
 
+// -------- func gzip.decoder.set_quirk_enabled
+
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_gzip__decoder__set_quirk_enabled(wuffs_gzip__decoder* self,
+                                       uint32_t a_quirk,
+                                       bool a_enabled) {
+  if (!self) {
+    return wuffs_base__make_empty_struct();
+  }
+  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+    return wuffs_base__make_empty_struct();
+  }
+
+  return wuffs_base__make_empty_struct();
+}
+
 // -------- func gzip.decoder.workbuf_len
 
 WUFFS_BASE__MAYBE_STATIC wuffs_base__range_ii_u64  //
@@ -21419,6 +21775,8 @@
                                wuffs_base__io_buffer*,
                                wuffs_base__slice_u8))(
             &wuffs_json__decoder__decode_tokens),
+        (wuffs_base__empty_struct(*)(void*, uint32_t, bool))(
+            &wuffs_json__decoder__set_quirk_enabled),
         (wuffs_base__range_ii_u64(*)(const void*))(
             &wuffs_json__decoder__workbuf_len),
 };
@@ -23608,6 +23966,8 @@
         (wuffs_base__status(*)(void*, uint64_t, uint64_t))(
             &wuffs_wbmp__decoder__restart_frame),
         (wuffs_base__empty_struct(*)(void*, uint32_t, bool))(
+            &wuffs_wbmp__decoder__set_quirk_enabled),
+        (wuffs_base__empty_struct(*)(void*, uint32_t, bool))(
             &wuffs_wbmp__decoder__set_report_metadata),
         (wuffs_base__range_ii_u64(*)(const void*))(
             &wuffs_wbmp__decoder__workbuf_len),
@@ -23687,6 +24047,22 @@
 
 // ---------------- Function Implementations
 
+// -------- func wbmp.decoder.set_quirk_enabled
+
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_wbmp__decoder__set_quirk_enabled(wuffs_wbmp__decoder* self,
+                                       uint32_t a_quirk,
+                                       bool a_enabled) {
+  if (!self) {
+    return wuffs_base__make_empty_struct();
+  }
+  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+    return wuffs_base__make_empty_struct();
+  }
+
+  return wuffs_base__make_empty_struct();
+}
+
 // -------- func wbmp.decoder.decode_image_config
 
 WUFFS_BASE__MAYBE_STATIC wuffs_base__status  //
@@ -24391,6 +24767,8 @@
 
 const wuffs_base__io_transformer__func_ptrs
     wuffs_zlib__decoder__func_ptrs_for__wuffs_base__io_transformer = {
+        (wuffs_base__empty_struct(*)(void*, uint32_t, bool))(
+            &wuffs_zlib__decoder__set_quirk_enabled),
         (wuffs_base__status(*)(void*,
                                wuffs_base__io_buffer*,
                                wuffs_base__io_buffer*,
@@ -24552,6 +24930,22 @@
   return wuffs_base__make_empty_struct();
 }
 
+// -------- func zlib.decoder.set_quirk_enabled
+
+WUFFS_BASE__MAYBE_STATIC wuffs_base__empty_struct  //
+wuffs_zlib__decoder__set_quirk_enabled(wuffs_zlib__decoder* self,
+                                       uint32_t a_quirk,
+                                       bool a_enabled) {
+  if (!self) {
+    return wuffs_base__make_empty_struct();
+  }
+  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+    return wuffs_base__make_empty_struct();
+  }
+
+  return wuffs_base__make_empty_struct();
+}
+
 // -------- func zlib.decoder.workbuf_len
 
 WUFFS_BASE__MAYBE_STATIC wuffs_base__range_ii_u64  //
diff --git a/std/adler32/common_adler32.wuffs b/std/adler32/common_adler32.wuffs
index 9c18fe0..fd3f078 100644
--- a/std/adler32/common_adler32.wuffs
+++ b/std/adler32/common_adler32.wuffs
@@ -18,6 +18,9 @@
 	started : base.bool,
 )
 
+pub func hasher.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
+}
+
 pub func hasher.update_u32!(x: slice base.u8) base.u32 {
 	// The Adler-32 checksum's magic 65521 and 5552 numbers are discussed in
 	// this package's README.md.
diff --git a/std/bmp/decode_bmp.wuffs b/std/bmp/decode_bmp.wuffs
index e0f6658..e5663e4 100644
--- a/std/bmp/decode_bmp.wuffs
+++ b/std/bmp/decode_bmp.wuffs
@@ -54,6 +54,9 @@
 	util     : base.utility,
 )
 
+pub func decoder.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
+}
+
 pub func decoder.decode_image_config?(dst: nptr base.image_config, src: base.io_reader) {
 	var magic           : base.u32
 	var bitmap_info_len : base.u32
diff --git a/std/crc32/common_crc32.wuffs b/std/crc32/common_crc32.wuffs
index a5f352c..4d78085 100644
--- a/std/crc32/common_crc32.wuffs
+++ b/std/crc32/common_crc32.wuffs
@@ -17,6 +17,9 @@
 	state : base.u32,
 )
 
+pub func ieee_hasher.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
+}
+
 // TODO: should it be ? instead of ! because it's public, and might need a way
 // to signal "initializer not called"? Should the return type, in the generated
 // C code, be "struct{ uint32_t checksum; wuffs_crc32__status status }"?
diff --git a/std/deflate/decode_deflate.wuffs b/std/deflate/decode_deflate.wuffs
index d99ee6d..57f4318 100644
--- a/std/deflate/decode_deflate.wuffs
+++ b/std/deflate/decode_deflate.wuffs
@@ -190,6 +190,9 @@
 	this.history[0x8000 ..].copy_from_slice!(s: this.history[..])
 }
 
+pub func decoder.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
+}
+
 pub func decoder.workbuf_len() base.range_ii_u64 {
 	return this.util.make_range_ii_u64(
 		min_incl: decoder_workbuf_len_max_incl_worst_case,
diff --git a/std/gzip/decode_gzip.wuffs b/std/gzip/decode_gzip.wuffs
index 0664003..816cf13 100644
--- a/std/gzip/decode_gzip.wuffs
+++ b/std/gzip/decode_gzip.wuffs
@@ -36,6 +36,9 @@
 	this.ignore_checksum = args.ic
 }
 
+pub func decoder.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
+}
+
 pub func decoder.workbuf_len() base.range_ii_u64 {
 	return this.util.make_range_ii_u64(
 		min_incl: decoder_workbuf_len_max_incl_worst_case,
diff --git a/std/lzw/decode_lzw.wuffs b/std/lzw/decode_lzw.wuffs
index 4ec5d3d..7cdb1a5 100644
--- a/std/lzw/decode_lzw.wuffs
+++ b/std/lzw/decode_lzw.wuffs
@@ -69,6 +69,9 @@
 	output : array[8192 + 7] base.u8,
 )
 
+pub func decoder.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
+}
+
 pub func decoder.set_literal_width!(lw: base.u32[..= 8]) {
 	this.set_literal_width_arg = args.lw + 1
 }
diff --git a/std/wbmp/decode_wbmp.wuffs b/std/wbmp/decode_wbmp.wuffs
index cef9c53..6ae61a0 100644
--- a/std/wbmp/decode_wbmp.wuffs
+++ b/std/wbmp/decode_wbmp.wuffs
@@ -28,6 +28,9 @@
 	util     : base.utility,
 )
 
+pub func decoder.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
+}
+
 pub func decoder.decode_image_config?(dst: nptr base.image_config, src: base.io_reader) {
 	var c   : base.u8
 	var i   : base.u32
diff --git a/std/zlib/decode_zlib.wuffs b/std/zlib/decode_zlib.wuffs
index 9db5ff1..b3de981 100644
--- a/std/zlib/decode_zlib.wuffs
+++ b/std/zlib/decode_zlib.wuffs
@@ -63,6 +63,9 @@
 	this.ignore_checksum = args.ic
 }
 
+pub func decoder.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
+}
+
 pub func decoder.workbuf_len() base.range_ii_u64 {
 	return this.util.make_range_ii_u64(
 		min_incl: decoder_workbuf_len_max_incl_worst_case,