Update serde_test to 1.0.177

Test: m
Change-Id: Ie1b53069e95a645c863d03ef18123d9142397c2b
diff --git a/crates/serde_test/.android-checksum.json b/crates/serde_test/.android-checksum.json
index a5fae98..52a5611 100644
--- a/crates/serde_test/.android-checksum.json
+++ b/crates/serde_test/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"365d228d0e5a5b8eb8346321482412db3b6bdce0a22b89945792728e2f65568d","src/lib.rs":"44bd875d156399721562320b65152500702bcfd284c9b5d9242541621492e8c1","patches/LICENSE.patch":"59883a4fee89006584fe40eb5f89378e03639d1f8ee430b63d194b517dfdf3c9","LICENSE-MIT":"38620a3cfaeec97a9197e8c39e436ea7f0bc86699b1f1c35f1aa41785b6d4eac","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","src/token.rs":"7d207f06c6c31fd7fed1df5797f0034c52c4ae302f0b64e7fc0ce5d0707479c8","src/ser.rs":"a2d850b2c1622d8cf90327332040e8543a01da3e7524e87c06dbcf924438ea86","src/assert.rs":"0e285ca07004440d0ba1101b36284293736306e1541670cb5877e24040413520","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","METADATA":"e91fa9d23f4cd493e1864c1897e3f463d71a55740b6355b1eea6909e6e424329","Android.bp":"0826b7c52203c849b52c13ec13e3e0c858cb96857a4643b513f007fde5a0447a","TEST_MAPPING":"edcdd0ec7656910f74cd53b8521f27bd4b71c14819b62203dfe8ecb5e077c193","LICENSE":"dbad074de85b9acdef286ecb796ce96cc60af388a2b9484f94c22d6de6730202","src/configure.rs":"e66407fd3e801afb9792958de46551bb20836a5f8bd426ecf2e91dd4fed1b62a","README.md":"50d78f8b76a1a29b662e665e3b163c50ccc7fc29460580b3c65d70d636dd6427","src/de.rs":"a34d498405495b235f3cb20dc948d8f5d31fa10995b29f14863a78042a2da956","Cargo.toml":"56f418313bd38c0d72643cef33ac45ea05143929830a551ce79b42d841cc788e","src/error.rs":"be05a75fd8da8d3714c88146346e95f3fc0ffbca0b4220de6fa3c7d0b6a09dae","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e"}}
\ No newline at end of file
+{"package":null,"files":{"src/configure.rs":"45071d0e471c873d978689aff58d8fe8c0e476d4942edb8f3447f4d4c23c9c27","LICENSE":"dbad074de85b9acdef286ecb796ce96cc60af388a2b9484f94c22d6de6730202","Android.bp":"51e302e19922c3a1fa160de59a3c4bef24637cc771d8c049d35746ed49fd75fe","METADATA":"258572b43a1742c112c5ea6c6c5830306237b3f9d2b81d440df672684c9f60e3","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/token.rs":"7d207f06c6c31fd7fed1df5797f0034c52c4ae302f0b64e7fc0ce5d0707479c8","TEST_MAPPING":"edcdd0ec7656910f74cd53b8521f27bd4b71c14819b62203dfe8ecb5e077c193",".cargo-checksum.json":"a7031583b2c52259da59a03287a1c99938fd0e2d9526d604ee1b9689568721ca","src/ser.rs":"255cfe60194421abcb69b6c18c6c9ef56dd379652c8543801501abb637e4acaa","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","README.md":"50d78f8b76a1a29b662e665e3b163c50ccc7fc29460580b3c65d70d636dd6427","src/error.rs":"be05a75fd8da8d3714c88146346e95f3fc0ffbca0b4220de6fa3c7d0b6a09dae","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","patches/LICENSE.patch":"59883a4fee89006584fe40eb5f89378e03639d1f8ee430b63d194b517dfdf3c9","LICENSE-MIT":"38620a3cfaeec97a9197e8c39e436ea7f0bc86699b1f1c35f1aa41785b6d4eac","src/assert.rs":"d0253c20d94120e0867e63e5ee4c9d110b172b1c18c0bd4b7e0508995011bb67","src/lib.rs":"d9ec08d8b295cfa6fc534a7da199a74e234995232bc97c4e5bf65fa839419bc6","src/de.rs":"a34d498405495b235f3cb20dc948d8f5d31fa10995b29f14863a78042a2da956","Cargo.toml":"635af5a6e0322a14c4cc40e56204201e357720ce7609db4da68c79ceab48f017"}}
\ No newline at end of file
diff --git a/crates/serde_test/.cargo-checksum.json b/crates/serde_test/.cargo-checksum.json
index 95e1483..f3bcc92 100644
--- a/crates/serde_test/.cargo-checksum.json
+++ b/crates/serde_test/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"25303ae8f76378fb8a644f03e5e0d9adaaa33c359d6e6d001447e7f500111e8f","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"9acf439902ff6520eb54d7636fdbdb7f892b003a6ea4f530d63d48dc2f16af2c","src/assert.rs":"cfd019751ca9e31234ce73f13bf56ee30b0f2223209aacd23738a8c330349199","src/configure.rs":"bf870f78b7cd3013ed695bcc54f87586c4ac074aadd6243e6e98a55563f714a8","src/de.rs":"a5984f8adb4d100bb003fbc909890bf71c0efd52ba10a58497589f03c889f3fd","src/error.rs":"ebd762e36fcf0e43a2c455d74c2a80f62ecdaaa552d5364d1a185302de42c7de","src/lib.rs":"414b5309d2c1a23fb20a171607e73ed6686c9e7f79b4a3bab184008821a323a2","src/ser.rs":"65bb66df51ae2e3c6c25204c37e00a1a285e86a294a9f97b2f95933c2d4f8a2a","src/token.rs":"aefb6742960cda0ad6d6f5955349eb1b903b4e506d3bcb973411f60d6db8af92"},"package":"5a2f49ace1498612d14f7e0b8245519584db8299541dfe31a06374a828d620ab"}
\ No newline at end of file
+{"files":{"Cargo.toml":"9ec585089a6c3323bb8df93bd5d0fe599652e5de62dea26cf8eb993d45e80ff8","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"9acf439902ff6520eb54d7636fdbdb7f892b003a6ea4f530d63d48dc2f16af2c","src/assert.rs":"342ed46389411cee3da29996716a0639926a76177b41de035da8b5f824929b0f","src/configure.rs":"aa1739a4bf59e27cc44bea280d627a45ea285ebeea00bfbaac741fbb6c1772e1","src/de.rs":"a5984f8adb4d100bb003fbc909890bf71c0efd52ba10a58497589f03c889f3fd","src/error.rs":"ebd762e36fcf0e43a2c455d74c2a80f62ecdaaa552d5364d1a185302de42c7de","src/lib.rs":"a2191566b198681a89e33b0d617208cd3bf9567c1cf8c013e5e0669ac7650589","src/ser.rs":"853e13d120f047b7225ed69696be24747280f0c91817eca6b0172f8cb5305127","src/token.rs":"aefb6742960cda0ad6d6f5955349eb1b903b4e506d3bcb973411f60d6db8af92"},"package":"7f901ee573cab6b3060453d2d5f0bae4e6d628c23c0a962ff9b5f1d7c8d4f1ed"}
\ No newline at end of file
diff --git a/crates/serde_test/Android.bp b/crates/serde_test/Android.bp
index 3faaa7f..c3b1095 100644
--- a/crates/serde_test/Android.bp
+++ b/crates/serde_test/Android.bp
@@ -18,7 +18,7 @@
     host_supported: true,
     crate_name: "serde_test",
     cargo_env_compat: true,
-    cargo_pkg_version: "1.0.176",
+    cargo_pkg_version: "1.0.177",
     crate_root: "src/lib.rs",
     edition: "2021",
     rustlibs: ["libserde"],
diff --git a/crates/serde_test/Cargo.toml b/crates/serde_test/Cargo.toml
index c0a6c39..17d26bc 100644
--- a/crates/serde_test/Cargo.toml
+++ b/crates/serde_test/Cargo.toml
@@ -13,11 +13,16 @@
 edition = "2021"
 rust-version = "1.56"
 name = "serde_test"
-version = "1.0.176"
+version = "1.0.177"
 authors = [
     "Erick Tryzelaar <erick.tryzelaar@gmail.com>",
     "David Tolnay <dtolnay@gmail.com>",
 ]
+build = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
 description = "Token De/Serializer for testing De/Serialize implementations"
 documentation = "https://docs.rs/serde_test"
 readme = "README.md"
@@ -36,6 +41,8 @@
 targets = ["x86_64-unknown-linux-gnu"]
 
 [lib]
+name = "serde_test"
+path = "src/lib.rs"
 doc-scrape-examples = false
 
 [dependencies.serde]
diff --git a/crates/serde_test/METADATA b/crates/serde_test/METADATA
index 957e8da..f76a2ac 100644
--- a/crates/serde_test/METADATA
+++ b/crates/serde_test/METADATA
@@ -1,17 +1,17 @@
 name: "serde_test"
 description: "Token De/Serializer for testing De/Serialize implementations"
 third_party {
-  version: "1.0.176"
+  version: "1.0.177"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
-    month: 2
-    day: 5
+    month: 12
+    day: 20
   }
   homepage: "https://crates.io/crates/serde_test"
   identifier {
     type: "Archive"
-    value: "https://static.crates.io/crates/serde_test/serde_test-1.0.176.crate"
-    version: "1.0.176"
+    value: "https://static.crates.io/crates/serde_test/serde_test-1.0.177.crate"
+    version: "1.0.177"
   }
 }
diff --git a/crates/serde_test/src/assert.rs b/crates/serde_test/src/assert.rs
index bbdafd9..24e3c08 100644
--- a/crates/serde_test/src/assert.rs
+++ b/crates/serde_test/src/assert.rs
@@ -29,7 +29,7 @@
 ///     ],
 /// );
 /// ```
-#[cfg_attr(not(no_track_caller), track_caller)]
+#[track_caller]
 pub fn assert_tokens<'de, T>(value: &T, tokens: &'de [Token])
 where
     T: Serialize + Deserialize<'de> + PartialEq + Debug,
@@ -63,14 +63,14 @@
 ///     ],
 /// );
 /// ```
-#[cfg_attr(not(no_track_caller), track_caller)]
-pub fn assert_ser_tokens<T: ?Sized>(value: &T, tokens: &[Token])
+#[track_caller]
+pub fn assert_ser_tokens<T>(value: &T, tokens: &[Token])
 where
-    T: Serialize,
+    T: ?Sized + Serialize,
 {
     let mut ser = Serializer::new(tokens);
     match value.serialize(&mut ser) {
-        Ok(_) => {}
+        Ok(()) => {}
         Err(err) => panic!("value failed to serialize: {}", err),
     }
 
@@ -121,14 +121,14 @@
 ///     assert_ser_tokens_error(&example, expected, error);
 /// }
 /// ```
-#[cfg_attr(not(no_track_caller), track_caller)]
-pub fn assert_ser_tokens_error<T: ?Sized>(value: &T, tokens: &[Token], error: &str)
+#[track_caller]
+pub fn assert_ser_tokens_error<T>(value: &T, tokens: &[Token], error: &str)
 where
-    T: Serialize,
+    T: ?Sized + Serialize,
 {
     let mut ser = Serializer::new(tokens);
     match value.serialize(&mut ser) {
-        Ok(_) => panic!("value serialized successfully"),
+        Ok(()) => panic!("value serialized successfully"),
         Err(e) => assert_eq!(e, *error),
     }
 
@@ -162,7 +162,7 @@
 ///     ],
 /// );
 /// ```
-#[cfg_attr(not(no_track_caller), track_caller)]
+#[track_caller]
 pub fn assert_de_tokens<'de, T>(value: &T, tokens: &'de [Token])
 where
     T: Deserialize<'de> + PartialEq + Debug,
@@ -215,7 +215,7 @@
 ///     "unknown field `x`, expected `a` or `b`",
 /// );
 /// ```
-#[cfg_attr(not(no_track_caller), track_caller)]
+#[track_caller]
 pub fn assert_de_tokens_error<'de, T>(tokens: &'de [Token], error: &str)
 where
     T: Deserialize<'de>,
diff --git a/crates/serde_test/src/configure.rs b/crates/serde_test/src/configure.rs
index 9b10370..dc54d4d 100644
--- a/crates/serde_test/src/configure.rs
+++ b/crates/serde_test/src/configure.rs
@@ -6,7 +6,7 @@
     Serialize, SerializeMap, SerializeSeq, SerializeStruct, SerializeStructVariant, SerializeTuple,
     SerializeTupleStruct, SerializeTupleVariant, Serializer,
 };
-use std::fmt;
+use std::fmt::{self, Display};
 
 #[derive(Debug, PartialEq, Eq, PartialOrd, Ord)]
 pub struct Readable<T: ?Sized>(T);
@@ -86,11 +86,11 @@
     }
 }
 
-impl<T: ?Sized> Configure for T {}
+impl<T> Configure for T where T: ?Sized {}
 
-impl<T: ?Sized> Serialize for Readable<T>
+impl<T> Serialize for Readable<T>
 where
-    T: Serialize,
+    T: ?Sized + Serialize,
 {
     #[inline]
     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
@@ -100,9 +100,10 @@
         self.0.serialize(Readable(serializer))
     }
 }
-impl<T: ?Sized> Serialize for Compact<T>
+
+impl<T> Serialize for Compact<T>
 where
-    T: Serialize,
+    T: ?Sized + Serialize,
 {
     #[inline]
     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
@@ -112,6 +113,7 @@
         self.0.serialize(Compact(serializer))
     }
 }
+
 impl<'de, T> Deserialize<'de> for Readable<T>
 where
     T: Deserialize<'de>,
@@ -122,7 +124,15 @@
     {
         T::deserialize(Readable(deserializer)).map(Readable)
     }
+
+    fn deserialize_in_place<D>(deserializer: D, place: &mut Self) -> Result<(), D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        T::deserialize_in_place(Readable(deserializer), &mut place.0)
+    }
 }
+
 impl<'de, T> Deserialize<'de> for Compact<T>
 where
     T: Deserialize<'de>,
@@ -133,6 +143,13 @@
     {
         T::deserialize(Compact(deserializer)).map(Compact)
     }
+
+    fn deserialize_in_place<D>(deserializer: D, place: &mut Self) -> Result<(), D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        T::deserialize_in_place(Compact(deserializer), &mut place.0)
+    }
 }
 
 impl<'de, T> DeserializeSeed<'de> for Readable<T>
@@ -148,6 +165,7 @@
         self.0.deserialize(Readable(deserializer))
     }
 }
+
 impl<'de, T> DeserializeSeed<'de> for Compact<T>
 where
     T: DeserializeSeed<'de>,
@@ -205,17 +223,18 @@
                 serialize_i16 i16,
                 serialize_i32 i32,
                 serialize_i64 i64,
+                serialize_i128 i128,
                 serialize_u8 u8,
                 serialize_u16 u16,
                 serialize_u32 u32,
                 serialize_u64 u64,
+                serialize_u128 u128,
                 serialize_f32 f32,
                 serialize_f64 f64,
                 serialize_char char,
                 serialize_str &str,
                 serialize_bytes &[u8],
                 serialize_unit_struct &'static str
-
             }
 
             fn serialize_unit(self) -> Result<S::Ok, S::Error> {
@@ -231,18 +250,18 @@
                 self.0.serialize_unit_variant(name, variant_index, variant)
             }
 
-            fn serialize_newtype_struct<T: ?Sized>(
+            fn serialize_newtype_struct<T>(
                 self,
                 name: &'static str,
                 value: &T,
             ) -> Result<S::Ok, S::Error>
             where
-                T: Serialize,
+                T: ?Sized + Serialize,
             {
                 self.0.serialize_newtype_struct(name, &$wrapper(value))
             }
 
-            fn serialize_newtype_variant<T: ?Sized>(
+            fn serialize_newtype_variant<T>(
                 self,
                 name: &'static str,
                 variant_index: u32,
@@ -250,7 +269,7 @@
                 value: &T,
             ) -> Result<S::Ok, S::Error>
             where
-                T: Serialize,
+                T: ?Sized + Serialize,
             {
                 self.0
                     .serialize_newtype_variant(name, variant_index, variant, &$wrapper(value))
@@ -260,9 +279,9 @@
                 self.0.serialize_none()
             }
 
-            fn serialize_some<T: ?Sized>(self, value: &T) -> Result<S::Ok, Self::Error>
+            fn serialize_some<T>(self, value: &T) -> Result<S::Ok, Self::Error>
             where
-                T: Serialize,
+                T: ?Sized + Serialize,
             {
                 self.0.serialize_some(&$wrapper(value))
             }
@@ -318,6 +337,34 @@
                     .serialize_struct_variant(name, variant_index, variant, len)
                     .map($wrapper)
             }
+
+            fn collect_seq<I>(self, iter: I) -> Result<Self::Ok, Self::Error>
+            where
+                I: IntoIterator,
+                <I as IntoIterator>::Item: Serialize,
+            {
+                self.0
+                    .collect_seq(iter.into_iter().map(|item| $wrapper(item)))
+            }
+
+            fn collect_map<K, V, I>(self, iter: I) -> Result<Self::Ok, Self::Error>
+            where
+                K: Serialize,
+                V: Serialize,
+                I: IntoIterator<Item = (K, V)>,
+            {
+                self.0.collect_map(
+                    iter.into_iter()
+                        .map(|(key, value)| ($wrapper(key), $wrapper(value))),
+                )
+            }
+
+            fn collect_str<T>(self, value: &T) -> Result<Self::Ok, Self::Error>
+            where
+                T: ?Sized + Display,
+            {
+                self.0.collect_str(value)
+            }
         }
 
         impl<S> SerializeSeq for $wrapper<S>
@@ -326,12 +373,14 @@
         {
             type Ok = S::Ok;
             type Error = S::Error;
-            fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<(), S::Error>
+
+            fn serialize_element<T>(&mut self, value: &T) -> Result<(), S::Error>
             where
-                T: Serialize,
+                T: ?Sized + Serialize,
             {
                 self.0.serialize_element(&$wrapper(value))
             }
+
             fn end(self) -> Result<S::Ok, S::Error> {
                 self.0.end()
             }
@@ -343,12 +392,14 @@
         {
             type Ok = S::Ok;
             type Error = S::Error;
-            fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<(), S::Error>
+
+            fn serialize_element<T>(&mut self, value: &T) -> Result<(), S::Error>
             where
-                T: Serialize,
+                T: ?Sized + Serialize,
             {
                 self.0.serialize_element(&$wrapper(value))
             }
+
             fn end(self) -> Result<S::Ok, S::Error> {
                 self.0.end()
             }
@@ -360,12 +411,14 @@
         {
             type Ok = S::Ok;
             type Error = S::Error;
-            fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<(), S::Error>
+
+            fn serialize_field<T>(&mut self, value: &T) -> Result<(), S::Error>
             where
-                T: Serialize,
+                T: ?Sized + Serialize,
             {
                 self.0.serialize_field(&$wrapper(value))
             }
+
             fn end(self) -> Result<S::Ok, S::Error> {
                 self.0.end()
             }
@@ -377,12 +430,14 @@
         {
             type Ok = S::Ok;
             type Error = S::Error;
-            fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<(), S::Error>
+
+            fn serialize_field<T>(&mut self, value: &T) -> Result<(), S::Error>
             where
-                T: Serialize,
+                T: ?Sized + Serialize,
             {
                 self.0.serialize_field(&$wrapper(value))
             }
+
             fn end(self) -> Result<S::Ok, S::Error> {
                 self.0.end()
             }
@@ -394,29 +449,29 @@
         {
             type Ok = S::Ok;
             type Error = S::Error;
-            fn serialize_key<T: ?Sized>(&mut self, key: &T) -> Result<(), S::Error>
+
+            fn serialize_key<T>(&mut self, key: &T) -> Result<(), S::Error>
             where
-                T: Serialize,
+                T: ?Sized + Serialize,
             {
                 self.0.serialize_key(&$wrapper(key))
             }
-            fn serialize_value<T: ?Sized>(&mut self, value: &T) -> Result<(), S::Error>
+
+            fn serialize_value<T>(&mut self, value: &T) -> Result<(), S::Error>
             where
-                T: Serialize,
+                T: ?Sized + Serialize,
             {
                 self.0.serialize_value(&$wrapper(value))
             }
-            fn serialize_entry<K: ?Sized, V: ?Sized>(
-                &mut self,
-                key: &K,
-                value: &V,
-            ) -> Result<(), S::Error>
+
+            fn serialize_entry<K, V>(&mut self, key: &K, value: &V) -> Result<(), S::Error>
             where
-                K: Serialize,
-                V: Serialize,
+                K: ?Sized + Serialize,
+                V: ?Sized + Serialize,
             {
-                self.0.serialize_entry(key, &$wrapper(value))
+                self.0.serialize_entry(&$wrapper(key), &$wrapper(value))
             }
+
             fn end(self) -> Result<S::Ok, S::Error> {
                 self.0.end()
             }
@@ -428,16 +483,18 @@
         {
             type Ok = S::Ok;
             type Error = S::Error;
-            fn serialize_field<T: ?Sized>(
-                &mut self,
-                name: &'static str,
-                field: &T,
-            ) -> Result<(), S::Error>
+
+            fn serialize_field<T>(&mut self, name: &'static str, field: &T) -> Result<(), S::Error>
             where
-                T: Serialize,
+                T: ?Sized + Serialize,
             {
                 self.0.serialize_field(name, &$wrapper(field))
             }
+
+            fn skip_field(&mut self, key: &'static str) -> Result<(), Self::Error> {
+                self.0.skip_field(key)
+            }
+
             fn end(self) -> Result<S::Ok, S::Error> {
                 self.0.end()
             }
@@ -449,16 +506,18 @@
         {
             type Ok = S::Ok;
             type Error = S::Error;
-            fn serialize_field<T: ?Sized>(
-                &mut self,
-                name: &'static str,
-                field: &T,
-            ) -> Result<(), S::Error>
+
+            fn serialize_field<T>(&mut self, name: &'static str, field: &T) -> Result<(), S::Error>
             where
-                T: Serialize,
+                T: ?Sized + Serialize,
             {
                 self.0.serialize_field(name, &$wrapper(field))
             }
+
+            fn skip_field(&mut self, key: &'static str) -> Result<(), Self::Error> {
+                self.0.skip_field(key)
+            }
+
             fn end(self) -> Result<S::Ok, S::Error> {
                 self.0.end()
             }
@@ -498,10 +557,12 @@
                     deserialize_u16,
                     deserialize_u32,
                     deserialize_u64,
+                    deserialize_u128,
                     deserialize_i8,
                     deserialize_i16,
                     deserialize_i32,
                     deserialize_i64,
+                    deserialize_i128,
                     deserialize_f32,
                     deserialize_f64,
                     deserialize_char,
@@ -528,6 +589,7 @@
             {
                 self.0.deserialize_unit_struct(name, $wrapper(visitor))
             }
+
             fn deserialize_newtype_struct<V>(
                 self,
                 name: &'static str,
@@ -538,12 +600,14 @@
             {
                 self.0.deserialize_newtype_struct(name, $wrapper(visitor))
             }
+
             fn deserialize_tuple<V>(self, len: usize, visitor: V) -> Result<V::Value, D::Error>
             where
                 V: Visitor<'de>,
             {
                 self.0.deserialize_tuple(len, $wrapper(visitor))
             }
+
             fn deserialize_tuple_struct<V>(
                 self,
                 name: &'static str,
@@ -556,6 +620,7 @@
                 self.0
                     .deserialize_tuple_struct(name, len, $wrapper(visitor))
             }
+
             fn deserialize_struct<V>(
                 self,
                 name: &'static str,
@@ -567,6 +632,7 @@
             {
                 self.0.deserialize_struct(name, fields, $wrapper(visitor))
             }
+
             fn deserialize_enum<V>(
                 self,
                 name: &'static str,
@@ -589,153 +655,193 @@
             D: Visitor<'de>,
         {
             type Value = D::Value;
+
             fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
                 self.0.expecting(formatter)
             }
+
             fn visit_bool<E>(self, v: bool) -> Result<D::Value, E>
             where
                 E: Error,
             {
                 self.0.visit_bool(v)
             }
+
             fn visit_i8<E>(self, v: i8) -> Result<D::Value, E>
             where
                 E: Error,
             {
                 self.0.visit_i8(v)
             }
+
             fn visit_i16<E>(self, v: i16) -> Result<D::Value, E>
             where
                 E: Error,
             {
                 self.0.visit_i16(v)
             }
+
             fn visit_i32<E>(self, v: i32) -> Result<D::Value, E>
             where
                 E: Error,
             {
                 self.0.visit_i32(v)
             }
+
             fn visit_i64<E>(self, v: i64) -> Result<D::Value, E>
             where
                 E: Error,
             {
                 self.0.visit_i64(v)
             }
+
+            fn visit_i128<E>(self, v: i128) -> Result<D::Value, E>
+            where
+                E: Error,
+            {
+                self.0.visit_i128(v)
+            }
+
             fn visit_u8<E>(self, v: u8) -> Result<D::Value, E>
             where
                 E: Error,
             {
                 self.0.visit_u8(v)
             }
+
             fn visit_u16<E>(self, v: u16) -> Result<D::Value, E>
             where
                 E: Error,
             {
                 self.0.visit_u16(v)
             }
+
             fn visit_u32<E>(self, v: u32) -> Result<D::Value, E>
             where
                 E: Error,
             {
                 self.0.visit_u32(v)
             }
+
             fn visit_u64<E>(self, v: u64) -> Result<D::Value, E>
             where
                 E: Error,
             {
                 self.0.visit_u64(v)
             }
+
+            fn visit_u128<E>(self, v: u128) -> Result<D::Value, E>
+            where
+                E: Error,
+            {
+                self.0.visit_u128(v)
+            }
+
             fn visit_f32<E>(self, v: f32) -> Result<D::Value, E>
             where
                 E: Error,
             {
                 self.0.visit_f32(v)
             }
+
             fn visit_f64<E>(self, v: f64) -> Result<D::Value, E>
             where
                 E: Error,
             {
                 self.0.visit_f64(v)
             }
+
             fn visit_char<E>(self, v: char) -> Result<D::Value, E>
             where
                 E: Error,
             {
                 self.0.visit_char(v)
             }
+
             fn visit_str<E>(self, v: &str) -> Result<D::Value, E>
             where
                 E: Error,
             {
                 self.0.visit_str(v)
             }
+
             fn visit_borrowed_str<E>(self, v: &'de str) -> Result<D::Value, E>
             where
                 E: Error,
             {
                 self.0.visit_borrowed_str(v)
             }
+
             fn visit_string<E>(self, v: String) -> Result<D::Value, E>
             where
                 E: Error,
             {
                 self.0.visit_string(v)
             }
+
             fn visit_bytes<E>(self, v: &[u8]) -> Result<D::Value, E>
             where
                 E: Error,
             {
                 self.0.visit_bytes(v)
             }
+
             fn visit_borrowed_bytes<E>(self, v: &'de [u8]) -> Result<D::Value, E>
             where
                 E: Error,
             {
                 self.0.visit_borrowed_bytes(v)
             }
+
             fn visit_byte_buf<E>(self, v: Vec<u8>) -> Result<D::Value, E>
             where
                 E: Error,
             {
                 self.0.visit_byte_buf(v)
             }
+
             fn visit_none<E>(self) -> Result<D::Value, E>
             where
                 E: Error,
             {
                 self.0.visit_none()
             }
+
             fn visit_some<D2>(self, deserializer: D2) -> Result<Self::Value, D2::Error>
             where
                 D2: Deserializer<'de>,
             {
                 self.0.visit_some($wrapper(deserializer))
             }
+
             fn visit_unit<E>(self) -> Result<D::Value, E>
             where
                 E: Error,
             {
                 self.0.visit_unit()
             }
+
             fn visit_newtype_struct<D2>(self, deserializer: D2) -> Result<Self::Value, D2::Error>
             where
                 D2: Deserializer<'de>,
             {
                 self.0.visit_newtype_struct($wrapper(deserializer))
             }
+
             fn visit_seq<V>(self, seq: V) -> Result<D::Value, V::Error>
             where
                 V: SeqAccess<'de>,
             {
                 self.0.visit_seq($wrapper(seq))
             }
+
             fn visit_map<V>(self, map: V) -> Result<D::Value, V::Error>
             where
                 V: MapAccess<'de>,
             {
                 self.0.visit_map($wrapper(map))
             }
+
             fn visit_enum<V>(self, data: V) -> Result<D::Value, V::Error>
             where
                 V: EnumAccess<'de>,
@@ -749,12 +855,14 @@
             D: SeqAccess<'de>,
         {
             type Error = D::Error;
+
             fn next_element_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, D::Error>
             where
                 T: DeserializeSeed<'de>,
             {
                 self.0.next_element_seed($wrapper(seed))
             }
+
             fn size_hint(&self) -> Option<usize> {
                 self.0.size_hint()
             }
@@ -765,18 +873,21 @@
             D: MapAccess<'de>,
         {
             type Error = D::Error;
+
             fn next_key_seed<K>(&mut self, seed: K) -> Result<Option<K::Value>, D::Error>
             where
                 K: DeserializeSeed<'de>,
             {
                 self.0.next_key_seed($wrapper(seed))
             }
+
             fn next_value_seed<V>(&mut self, seed: V) -> Result<V::Value, D::Error>
             where
                 V: DeserializeSeed<'de>,
             {
                 self.0.next_value_seed($wrapper(seed))
             }
+
             fn next_entry_seed<K, V>(
                 &mut self,
                 kseed: K,
@@ -788,6 +899,7 @@
             {
                 self.0.next_entry_seed($wrapper(kseed), $wrapper(vseed))
             }
+
             fn size_hint(&self) -> Option<usize> {
                 self.0.size_hint()
             }
@@ -799,6 +911,7 @@
         {
             type Error = D::Error;
             type Variant = $wrapper<D::Variant>;
+
             fn variant_seed<V>(self, seed: V) -> Result<(V::Value, Self::Variant), Self::Error>
             where
                 V: DeserializeSeed<'de>,
@@ -814,21 +927,25 @@
             D: VariantAccess<'de>,
         {
             type Error = D::Error;
+
             fn unit_variant(self) -> Result<(), D::Error> {
                 self.0.unit_variant()
             }
+
             fn newtype_variant_seed<T>(self, seed: T) -> Result<T::Value, D::Error>
             where
                 T: DeserializeSeed<'de>,
             {
                 self.0.newtype_variant_seed($wrapper(seed))
             }
+
             fn tuple_variant<V>(self, len: usize, visitor: V) -> Result<V::Value, D::Error>
             where
                 V: Visitor<'de>,
             {
                 self.0.tuple_variant(len, $wrapper(visitor))
             }
+
             fn struct_variant<V>(
                 self,
                 fields: &'static [&'static str],
diff --git a/crates/serde_test/src/lib.rs b/crates/serde_test/src/lib.rs
index 4e3a9f2..e935799 100644
--- a/crates/serde_test/src/lib.rs
+++ b/crates/serde_test/src/lib.rs
@@ -144,7 +144,7 @@
 //! # }
 //! ```
 
-#![doc(html_root_url = "https://docs.rs/serde_test/1.0.176")]
+#![doc(html_root_url = "https://docs.rs/serde_test/1.0.177")]
 // Ignored clippy lints
 #![allow(clippy::float_cmp, clippy::needless_doctest_main)]
 // Ignored clippy_pedantic lints
diff --git a/crates/serde_test/src/ser.rs b/crates/serde_test/src/ser.rs
index c18a4ae..245bbe8 100644
--- a/crates/serde_test/src/ser.rs
+++ b/crates/serde_test/src/ser.rs
@@ -188,15 +188,15 @@
         Ok(())
     }
 
-    fn serialize_newtype_struct<T: ?Sized>(self, name: &'static str, value: &T) -> Result<(), Error>
+    fn serialize_newtype_struct<T>(self, name: &'static str, value: &T) -> Result<(), Error>
     where
-        T: Serialize,
+        T: ?Sized + Serialize,
     {
         assert_next_token!(self, NewtypeStruct { name });
         value.serialize(self)
     }
 
-    fn serialize_newtype_variant<T: ?Sized>(
+    fn serialize_newtype_variant<T>(
         self,
         name: &'static str,
         _variant_index: u32,
@@ -204,7 +204,7 @@
         value: &T,
     ) -> Result<(), Error>
     where
-        T: Serialize,
+        T: ?Sized + Serialize,
     {
         if self.tokens.first() == Some(&Token::Enum { name }) {
             self.next_token();
@@ -220,9 +220,9 @@
         Ok(())
     }
 
-    fn serialize_some<T: ?Sized>(self, value: &T) -> Result<(), Error>
+    fn serialize_some<T>(self, value: &T) -> Result<(), Error>
     where
-        T: Serialize,
+        T: ?Sized + Serialize,
     {
         assert_next_token!(self, Some);
         value.serialize(self)
@@ -320,9 +320,9 @@
     type Ok = ();
     type Error = Error;
 
-    fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+    fn serialize_element<T>(&mut self, value: &T) -> Result<(), Error>
     where
-        T: Serialize,
+        T: ?Sized + Serialize,
     {
         value.serialize(&mut **self)
     }
@@ -337,9 +337,9 @@
     type Ok = ();
     type Error = Error;
 
-    fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+    fn serialize_element<T>(&mut self, value: &T) -> Result<(), Error>
     where
-        T: Serialize,
+        T: ?Sized + Serialize,
     {
         value.serialize(&mut **self)
     }
@@ -354,9 +354,9 @@
     type Ok = ();
     type Error = Error;
 
-    fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+    fn serialize_field<T>(&mut self, value: &T) -> Result<(), Error>
     where
-        T: Serialize,
+        T: ?Sized + Serialize,
     {
         value.serialize(&mut **self)
     }
@@ -371,9 +371,9 @@
     type Ok = ();
     type Error = Error;
 
-    fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+    fn serialize_field<T>(&mut self, value: &T) -> Result<(), Error>
     where
-        T: Serialize,
+        T: ?Sized + Serialize,
     {
         value.serialize(&mut *self.ser)
     }
@@ -392,16 +392,16 @@
     type Ok = ();
     type Error = Error;
 
-    fn serialize_key<T: ?Sized>(&mut self, key: &T) -> Result<(), Self::Error>
+    fn serialize_key<T>(&mut self, key: &T) -> Result<(), Self::Error>
     where
-        T: Serialize,
+        T: ?Sized + Serialize,
     {
         key.serialize(&mut **self)
     }
 
-    fn serialize_value<T: ?Sized>(&mut self, value: &T) -> Result<(), Self::Error>
+    fn serialize_value<T>(&mut self, value: &T) -> Result<(), Self::Error>
     where
-        T: Serialize,
+        T: ?Sized + Serialize,
     {
         value.serialize(&mut **self)
     }
@@ -416,13 +416,9 @@
     type Ok = ();
     type Error = Error;
 
-    fn serialize_field<T: ?Sized>(
-        &mut self,
-        key: &'static str,
-        value: &T,
-    ) -> Result<(), Self::Error>
+    fn serialize_field<T>(&mut self, key: &'static str, value: &T) -> Result<(), Self::Error>
     where
-        T: Serialize,
+        T: ?Sized + Serialize,
     {
         key.serialize(&mut **self)?;
         value.serialize(&mut **self)
@@ -438,13 +434,9 @@
     type Ok = ();
     type Error = Error;
 
-    fn serialize_field<T: ?Sized>(
-        &mut self,
-        key: &'static str,
-        value: &T,
-    ) -> Result<(), Self::Error>
+    fn serialize_field<T>(&mut self, key: &'static str, value: &T) -> Result<(), Self::Error>
     where
-        T: Serialize,
+        T: ?Sized + Serialize,
     {
         key.serialize(&mut *self.ser)?;
         value.serialize(&mut *self.ser)
diff --git a/pseudo_crate/Cargo.lock b/pseudo_crate/Cargo.lock
index b4899c0..17a7f96 100644
--- a/pseudo_crate/Cargo.lock
+++ b/pseudo_crate/Cargo.lock
@@ -4723,9 +4723,9 @@
 
 [[package]]
 name = "serde_test"
-version = "1.0.176"
+version = "1.0.177"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a2f49ace1498612d14f7e0b8245519584db8299541dfe31a06374a828d620ab"
+checksum = "7f901ee573cab6b3060453d2d5f0bae4e6d628c23c0a962ff9b5f1d7c8d4f1ed"
 dependencies = [
  "serde",
 ]
diff --git a/pseudo_crate/Cargo.toml b/pseudo_crate/Cargo.toml
index 804693b..06040f1 100644
--- a/pseudo_crate/Cargo.toml
+++ b/pseudo_crate/Cargo.toml
@@ -294,7 +294,7 @@
 serde_derive = "=1.0.195"
 serde_json = "=1.0.94"
 serde_spanned = "=0.6.8"
-serde_test = "=1.0.176"
+serde_test = "=1.0.177"
 serde_yaml = "=0.9.32"
 sharded-slab = "=0.1.7"
 shared_child = "=1.0.0"