diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/dart_to_cpp/dart_to_cpp.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/dart_to_cpp/dart_to_cpp.mojom.dart
index 74b4847..6ce4364 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/dart_to_cpp/dart_to_cpp.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/dart_to_cpp/dart_to_cpp.mojom.dart
@@ -1331,7 +1331,7 @@
   // serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
   // a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
   // file. The string contains the base64 encoding of the gzip-compressed bytes.
-  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/9yaz2/bNhTHLcVObMdOnMTNvK3rPKDFuh+N+wuFsVOGLkOHFYOxFsV6ctSItTVYkifJQ3frn+BjjjvuuOOO+xN23NG79dhLgd06cn5yWJqUZAI03RB4oGUTFt9HXz4+kmrkpqUG9XWo2e/jusjUbLu/ob6KLY+tCdeHUB9D/Rzqy9guYnv4uHPU/fbo8Re2FUTdyO+eDIcHd4fDB46NSLsr2D4QtfsKf4aGie2OTvr+l0EvxL9/gu2jtHb3nTCCft4Df4ifa9jalN/k+vnm2bWB7eX+m9eTz6bXTYZbXF5S92HLa1zi59KmvhO1J2Ub2wa2GOH7+PMeNgHeuedIOJaxPcL2HbZW33dRKxjZvut4KGi5/o9+KwxOph/Iv7ZGnhNFKIzCFnKfINtGQZdc4sb0TUl7d/5+NBfCuf3ofuH15FUh98+rgoGN1VPbnNad/LTur5/pjv6/FwwX8r8ibuS36xz29Lhgyw62ErYHEfbxIZrphfXvY2ymQp6srl4wdZquWH/bAn/fBZ9n/l4L0E8jsd9xUeV3MffmOCsKxlcxl00f/2tOxAv/tqg+6tgqJM5gD752PCfsI5vH6dNzoo+L4DPtLy2Rt10fJB7J8ErTR8fxet+jcOh7IeJxunbO9EH7e570YSjSB0lJkvRxoEkfx6YafdD+6tQHq4tDJg8jvxeo/C2tZOWUY/TGlgrkQwOHz+UAWKrWQ06Qx9G6pVPpRfPupHFpCPJHlXl1DfoSLzlivQqWI3PP5YamvLoO65SYm0n9vkb18xQa/VrIOB9Kzg+p+TSK7g4c5Inyypua4l3HVJRPx/5qzqdXNd7F69kTWLPy9FDXEO8agvV21n2NrPGNHYcTNu+QHIdp8wvJ03g6vLXk8TdhahX599uch7J6MBXpgUzRPD63NenheE2NHoifOvXQAJ6zOGOI43EOYrKKeCz6/gK2KjZv5H6DXbAiB2fqAl1UFXJadH4qSvIwUuanTcijrKCXE42PKxrnpzhvjVPsrPvkSfHIpK7Z8fkv1H/W1eTfcRd5+TfV/bnnUIJ5WtVzOMX/uYttDPcbg3DGEJDHEK/GsG89hoE7hv3r8QbUAPy0BPl4eVr/BucMv1em9R9V4Lw1rf/aBp3vwHPZTY4b65rWraFz5zbv+ZTh+S4zXiTFT1Xx4ozDrZs8DpuaOOQT+ivDwczM4cYdHoeKJg5rgv5uSXJYyzh/hE6bO39UFcctEYdyQhyW4ZDPqIeRID5sQQxfNoeSoL8NSQ6FzBz48WFbE4diwr6tDIf1zBz48aGmicNGwj6FDIeNjPFhJIgPO5ripCnob1OSQzFl3RHvDz4d+FbU/dkaCPbJdleMx2VJHqWFeDjeUwGPvRXjcVWSR3khHp7lCXjUNfEwMq6zs/LYTOGxC8xsf/RkgM4GDMvjgqY4KuLRluRRWYzHbMCwPPZXjMehJI/qYjxmA4bl8Y4GHkbCPs49SR5bGfMNz3K553cNxed3rA54XExqf4UtHUku2yk6ifdFwyhwvF7XCgLrFx6f+DxL9T6XAX6w+1M1wbih+eUT+H0uya+Wwm8ftOeiMLR6qNu3PHuA5vm9B0yXoS9Dgs8Pknx2UvjswVxmW5E1g8PRF3mP9dKS+Jgp+58kdvZF7x/AAJ5kPJ84ZPY/OxnOJ+hXJZpwb9HrFCzHS4r3E9jzi2fGar4/46Fn3POdD+HzMuKYyvdnVuV8JObtRMjl8W5Cm2XzXtb5yH8BAAD//8CK6V9oMQAA";
+  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/9yaz2/bNhTHJdlObMdOnMTNvK3rPKDFsmKN0x8ojJ08dBkyrBiMtSjak6vGrK3Blj1JHrJbjjvu2D9lf8L+hByz2467FNitJdtHh6VJWhYk0YmAB1oNa/H74ePj45NrxvurAu0+tPy/0zbPtXy/U2h3sWWx1eG+Be1zaE+gvY7tKrbHz9oHnR8Pnn3Ttb2gE4w6R+Px3oPx+JHTRaTfDWyfyfp9hz9DR2W/g6P+6Fuv5+O/f4Xti3n9Hjp+AOM8BD1EZwZbk9H97n7t/N4kOnc+vP/r5jkXg+FCr/+4+xZ3T+eFPvcNXIeG+NrAtoqNIvwUf97GJsE7M4+EYxHbE2w/YWv0R0PU8Cbd0dBxkdcYjn4ZNXzv6P0H8q2NiesEAfIDv4GGL1C3i7wOucWd2YeS/sPZ59UZfyKcm08e5t6cvc4Z/7zOmdh4f9q1gEsWuKyI+Z5xXMj3qviy/QjffQnfTWwFbI8CrO0xmvoJr+tLbFaCHOvcc8+4dp5O6kdNic6PQetU5y0P/TqR66VXUnrzxofrio9DBhef5vnDOx8Lwwn3U/lDFVuJxBM88u8d1/H7qCvic/OC+8NV0MrqZF3iovsDiTeLcJrnD23H7f2M/PHI9ZGIz61L4g+szsvkD2bM/kBSC5U/7Gnyh7YVrz+wOnX6A+8HLS6PIn8nE/yvEe4Kw4f1K/4qQR4zcMQ89oBh0vNvSPIv1k/ZFHjRfFm1/kzmuWnlwxUYCz0qUD+VHCNm5uW2pny4CucLys1i/p5hxnkCnY5zIfe5BeP/3DwYBQ8GDnJleeEdTXGtZcWcB1OdmvPgZYtr9Lx5BGdK0fxXNcS1muQ8HLbuEDWOnfJ5xILrbd7+QfItkd/dTXmdnXJtnHnzRc4j+fm3Yp5/suWKuNzTNP+HmXjnn+jTOf814Ditf5ryOGtArI0zzsr4XMFWxuZOhj/goduBgzNsiR+UE+Sz6H6Tj8DBVOw3a5D/2F7PkK2DGxr3G5pv0tQ4bF1aFW8s5p5fhzRf3q3Gmy/ToYnyZWbYM/wLsN8mxf8V/s4tbH/C8/6A9XkCgfYY4tEY6sN9WKDPoU78dBXOvQC6XYC2CC3U89slaMvQrsP/34DnguBXm+r4sJLy+dJ37t8TzUsR5jXNuKCKj3HHhXP9d++I9K9p0p9VjHdR/VYo/bfvi/SXNOnPSMa7HkF/JsS+4DtN4b5QTjguyfQXFXF2Uf3ZEPM/kaz/dYjNaesvSMZbi6A/F0q/eP1vaNKfV9RLF9W/Ekq/eP1XNOlfVdQNFtW/GmL9TyTrf1NT/LMk461H0J9XnA9oPe7lYGQHnd/sgaQ+tbVkHK5H4FAIzcFxX0o4bC8Zh90IHIqhObi2K+FQ1cTBlIx7PwKHNQWHLdiDu6PJiwE6Xxg8hyua4qOMQzMCh1J4DtOFwXPYWTIOrQgcyuE5TBcGz+EjDRxMRR3lMAKH9RD5gmsPhe+9agm/96pI6uMsD0vwPpBe7Qg8NhR+QeuPfuA5bq9je579u4gLfR+UdH3JhDHzdSHZuYHlllVw+zoCt4qC2w6cLYbI9+0e6vRttztAs9w+AZZp+JMZgcvTCFw2FVy2ISft2oE9hSLwJ/L7zGspcbHm1BlJbOxL6oz/Q/v3nHp/i6sztkPU+9mfENThmbKfGfD8riV8ruffB4zN5fo9iYuOhe9JPofPacSpJH9Povt9A+XsBGgo4lyHPmlzTut9w9sAAAD//+quIuEoMAAA";
 
   // Deserialize RuntimeTypeInfo
   var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/imported/sample_import.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/imported/sample_import.mojom.dart
index fa713e9..9a6ee91 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/imported/sample_import.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/imported/sample_import.mojom.dart
@@ -542,7 +542,7 @@
   // serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
   // a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
   // file. The string contains the base64 encoding of the gzip-compressed bytes.
-  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/8yYzW7TThDA18m/f9I2LYF+fwApFAgg4h4jTq1KRCIqVLU5tFz6aYhRExvblcob9DE48hg8Ro88Qo/cYF3PxvZ4N11bifFKo43tjT3z29nZnZknXitBvwY9vs/6AurxOKL47xmhUoHbDehN6C+h/w79MyoPqbT2t+sH7+v7b/SOaViOdlrd6BpOW7N220emRsgrOuYJd1wTfjS7jmZ9OjrRbt77iMocd/y2oXedPs+9D76gz1a4z/c1J6zaTdsDu0vIbvc679o/4l+7qK4LYX6NYvj66n5/zuz9wfaHNjaP64F7br9N+G2aivtpbNIDKjNUBNMR0WsK7P9IZYeK2jY6mmqdnxodvatZasf4Yqi2deL9MM+Pz/QTVWdTZqvHevdU7362VUezHVu1jzrmmXbgfb3q/qfjfacMPNn3L4DHz1zYj5n/lZWwnjW4HiPJOO4JON6jMuraXt9sbXx4t1WH+8/BF7kcq/5ozNOdl1wKPGXXH/PjMcLnPK/wuYxLcq5J+usklf+pbDZ3Nl3Iq/T3spAvGxX115mM8ZXlWRwwzxLE9NZO88YRmb58nmxUlOdsxniW0T7Vs1cyfjYQv0MBvwVY+/xdiJDHVBaDPAUDMc9VWGvD5om/Ox/wMwX5iRLY/3vxFfprAZ/bOBPEeU3wnimIJW+NXQrCaVPbuPo/TckPsX9doz6u3TWB3Utge8Du15b29Zxqxz8fQBu2/QWBX+D1ViB8Xr+ZH+WTxbN1Aa8JOId4pzwvLk0G1x88wNzcPfpOSustF1xvSvicUUN6jRC5JutvBK1f3EZhPi8E5/wyzOmwOcXl8V9CHookj28CHisp8ei3znKc+F2KGY/iri+WB0TWFzzAeoynlB9UwBdYvDFhgn9AfvAr3//8yvStKGH/GFS+JcoTyjB3YY5+goB5FlPa527Lk1leoAjygpLgHJtL6JcNybwgkr+ihADznMgIT1l++QHzw3kA0xPx6yUAmN9kxvmx+MnqAYPmV4S4s7Wx2wqe2xA/9jjC725G+OFzfUXSXyrwH8F7e44z7HrWHLDEVbpIfEUDsF4L/6iedQk8rgT1rArapxqKXy9KwvEw5j71EnJaEccq+gPmupiSn8et37J9bDpmfWtmyPWtSP0Q84aBmPNSRjmL6rO4zSbkuicZr5jeQq5+qYvrx8sZ5fs3AAD//2TQyaPYGQAA";
+  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/8yYzXLTPhDA5eTfP2mblkC/0g/AhQIFhrjHDqd2SoZm6DCZNoeUSz8NMVN/YLszcOPII3DkEXgEjn2UHjlyAzlexfZaSm1IjDWzo9iSI+1Pq9Vqq8QvFajXoMbvWV1CNe5HpOB/RqiswuttqC2oP0P9FeoHVG5Tae036wcv6/vPNN0ybVc9rW0apttR7b3OkaUS8oT2ucft14AfDcNV7TdHJ2r3f+9QmeP2b5qa4fZp9wd8RNuWue37qhudWre0Qe8K0tt7LlJpjgTPHqrvJcSvHH1u3+Rz/gn1BomWNfT+F5Qm4ZdpGBKrcovKDBXBMsTmMwV6v6ayS0XpmLqq2Oenpq4Zqq3o5jtTcewT/4d1fnymnSgaWypHOdaMU8146yiu6riO4hzp1pl64I9e877R/XFk4MjGt8DevhWi+jO7q0rIvuF5LCW/toDfDSqjns71rdbmqxc7dXj/EGyPy68W9MYcvfUoZMAx6X5jdjtG+HwrEp/L+BV81xPa5ySV/6lsNXa3PLgr9PeSkCvrFbfPmZxxTcqxPCCOFfDZrd1G1/DYPPkcWa84x9mccWT8ZKwv4init434HQr4zcNe558yhNylshDmKeiIea7A3ho2TzxuNWRfErITKXS+Y76XAj4ivgTxXRN8PwU+47m5RwG4HaoTd973M7I/GXG6RHVSfdcF+i6CziF9n9rq+3M6K35cBWXYepcEdlBF8ygRPqcf7PtiOr+1IeA0AXGFH635/mcyvM+gAfPyzt5rGe2rQjhOlqJ6r6N5jZBkJYl9hfcnLqOwfh8EcboMazhsPmk5/PcHHKQEHD4KOCxnxKHffipw/HIlob9Ju49Y/B7bR9CAxx/PKK5fhbVn/qQD++gLxPUXxf7xZ8+upcg19K/vR6L4Xoa1ivILAnvMsZzRuXXVfZbF85Igni8J4tBCSjvcThjPx+6ZKJDHHCdywjEpt+KAuOH4nc0PcesF7pjbZM65Mf/I7uuD4lYGv7KzudcKx12IG2uOcbueE26i+B3bxSr4JsH/9AxkWPmkOWCGs2Mxf4k64PnM/6N80iewvwtBPklG582GFORt0vA7THnePIY7pohfDX2AeS5kZMdp86XsPJpOmV+aGVJ+KZa3w5yhI+a7mFO+onwoLrMpebYTnlNsvkKeQaqJa7dLOeX6OwAA///rt7rUOBkAAA==";
 
   // Deserialize RuntimeTypeInfo
   var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/imported/sample_import2.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/imported/sample_import2.mojom.dart
index edfd92f..229d233 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/imported/sample_import2.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/imported/sample_import2.mojom.dart
@@ -288,7 +288,7 @@
   // serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
   // a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
   // file. The string contains the base64 encoding of the gzip-compressed bytes.
-  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/8yXzW7TQBCA101DgoASaKGh/IUDkrnEiFPEKSVERGqFKpJLxaFKHVMvir2R7QqJJ+AReAwehUfhyA3G8Wzkjr3ZJGrcjjTa2Lve3flmdmZTZ4nUsH2NLX0v2ypp6bgf2DZAS6l+OW8P2+egu6CD46PuyUH3+C33JiKInFGzI8YiYM+g72Fuf59/d+Z9P3C5f8ZauL7cl5napwH6q3TxuVrJt+cP2Xda/oFIu1qpd3HbZvlyB7QMmliZ2LgFSszP7EN+9xm0D2q5wnOs4HwkPO47geWJr8IKAzv5MTk/HXPb4n7kBF+GthNap9wfAZfQipwwCq1w6E3Gzkmy6ptm/JE3s38jtW7PuOi/GUeDzZVlefUU89xCP37qvp8+74Hez/Bqyu4Mty20Z93cdPG8KD/jkvnJuHl3uN85gPYJ6E6Wn+zO8Lt7Tfg1SL75K3mWLvd83gbdjG2dZhnGHiBDkn4ynOKYrFzB+axjwLSJnbK/zBYTHT8qpibevvFR5OZw2sbasW5Oy/LYXJGHoeER558boK7Dz9woy2OnIB6zOkfOESPxpDpnPyvrqYNJtc6pg9hBee0WdM5MjIlGGhLIb8w3Zll97sopbnLfbaOYcxe6w0lefoqf7xXArUH2ReMq4+d+smF1/k8G0Pg1ybwqXrHNN6f3h85g/+OHwy6+fwX6Qr1ek45f1M8tY735RPrZxvsj9fOjgvKJys91xT1XV99X9e823hHJNYa9BH2qXm82UudXKtUV/bqh8WsN5x4Lexhx4VO/7l0zvx4JmHyuX5MRy/Ktrci3pOEr73Uh3uso38cF1RUdX3r/1P0PnlfX0/XrfwAAAP//FZeVoOgPAAA=";
+  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/8yXzW7TQBCA101Cg4ASaKGl/IUDUrnEFaeIU0uIqNQKRSSXikOVOqZeFHsj2xUST8AjcOSxeIQe+wYwzs5Wzthru1FiutJo6uzvfDM7s91isjVQ76KmvytdJ5qO+4m6CVKJ9at1D1C/BNkEGRz3uieH3eN33J0IP7RHrY4YC5+9gL7Hqf19/sPOmj9wuHfG2ri/OtdO7JwGyK/K7PefW+n2XKDeY7NN2dNG/RcbHafaPZAaiLRO2rYGQsxO7K/mfQHpg5iOcG3TPx8Jl3u2b7rimzAD35J/TM5Px9wyuRfa/tehZQfmKfdGwCMwQzsIAzMYupOxfSJ3fduKJrlXdq/E9t0zZu1U/OoGy2xFOR1o5t9Bv33ufph+b4M8THBqqe4ErzW0Y9m88uK3KDdjQdxUnLw/2u8cgn4GspHkproT3O7fEG5Nklcu1Tkri7mHd0GqkY3TLMLYI2RH0kuCTxSDq//hHjaMWbvb5Fw1VqzpuLEYt3i86uLrOx+FTgqfdawJy+ZzXQ7VOTgYGRyi/BKVCsfmZ06Y5LBREgdVt2gdZiR+dPept7rYuiarbkpdww7KabOk+7SDMaA4XOB9+o355LKqv1+1eP5R/cZy71fgDCdp+Sf6flACryY5F42jhH/78sD6vC4H6OKVrh/ZeHta/zuD/U8fj7r4+xuQV/r1W3R8UX/uGsvJE8qfFr73qL1PSsoTOn9uad6lefW5qB/X8S1Hnh3sNchz/fpXI/P8R1t9Dv+tZPivgWuOhTUMufConds3zH89AYtn+k+OuC7XxhxcKxlc1fsrwPcX5fq0pLqQx5W+E/P+H82qx/H68y8AAP//Xq2n0nAPAAA=";
 
   // Deserialize RuntimeTypeInfo
   var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/math/math_calculator.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/math/math_calculator.mojom.dart
index fa68da9..643c892 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/math/math_calculator.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/math/math_calculator.mojom.dart
@@ -790,7 +790,7 @@
   // serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
   // a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
   // file. The string contains the base64 encoding of the gzip-compressed bytes.
-  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xXS0/qQBiFcm/C417FJ7gjccNGhiVxhTEkJsbEhRsSE1LaUWr6sg8T/61Lli7d6dR+A8MwI9CAoOmXfPm0zLRzTs45hWomrjLMJkz+Op15bvLrWsz/WWZdDdbedK87vctO99RSg0HjXDW10FQDx6vC+mhfjtvHPofWG8yLzHS9k6I42sw12fqodkkXSY9PFF+vkN4mzR13Cnce9t9GGEmjgWNh5IW6Yxk29pDlPDjI97T4Dzfsm4aGDDvA3p2qYR/1DVs37HsfBdgPfBQ9rqeNHteIdlkivik/+8BbBnhUmM9zzD73TzxfCvGsc/cZUjzKJD8y3poC7tn78vWf9N+IZxOrngBPAc6+ah55XQ25OUtXPN6mBO8BYP7Ee+Lhx5CcS4Cb1qpx5yX+5P0l8x/lhwpsWTwdkt5iePJdx/bx+nji+WkL8o16bZ6a1z+0ZvnnSTVDLPFPZQ38sPrJMueR5UstN8mfiJ9sgnwpQd6d6brw/VRcc74s2zd7gJngZdIl9c2ivinCe35TfPNd+om+N/wb6YembqqfJPo5/kG5q3zBj5Igd8twpqvQDAzXfOb5Kf2y3K0CNoqXhm/qm8V8U4IM2tTcfeV+Dy2qn5aElyPSO5P6GYdvmr+JdFTfIB19BAAA///PwtgdWBEAAA==";
+  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xXS2vyQBQ1+n0Q9XvYp+lO6MZNHZfSlaUIhVJw0Y1QkJhMa0oeNo9C/0l/nssuu+yunTR3dLxNSARFW3LhMk06Q+45nHMGlUJUNVjbsOL3fJXRivd1hGdJ2NeAvdeDfm942RucWqo/bp2rphaYqu+4CuwPz5WEc03hvFhv6LmLntvo/TvURSG+dllXWM8nit7XWf9njcb9gluG8zchRtZk7FiUuIHuWIZNXWI59w7xXC36YxKMTEMjhu1T91bVqEdGhq0b9p1HfOr5Hgk/N9Rmn2uFp6w4vjkv+8BbAXgsCv8vCef6v6L1uRzP75TzK2XjV6yQ32YCv39Z/w75NanqxuAow8zr5q+BdDtFaxpOrqN2As4DwPqJ88SlDwGbJwYvr3XjlRP8qKA5ZKQDzM+rtBp+Dln/E/jxJo7t0c3xg3npxuQY91SWyuIT0XdJPnlUzYAm+KS+AV5EvUjCPEn5IZcWeUvjRUrJjyrk2Jmux947lQ3nx6r8sQdYGU4hPXJ/ZPVHBe7rbfHHuvUS3vt/ZnrhaZrrZRm9HH+jPC1m5KWYkqc1mOUqMH1jYj5hXqo/JE8VwMRx8lDN/ZHNH1XImG3N0xf0eyWrXjoJfByx3lnUyzxU81xdSjfNLdLNRwAAAP//xXhfzegQAAA=";
 
   // Deserialize RuntimeTypeInfo
   var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/examples/echo.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/examples/echo.mojom.dart
index 7092573..fc33d16 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/examples/echo.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/examples/echo.mojom.dart
@@ -406,7 +406,7 @@
   // serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
   // a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
   // file. The string contains the base64 encoding of the gzip-compressed bytes.
-  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/5JggAABKL0CSqOLWyDxGYGYA8qXAWIRIM7Nz8q3skqtSMwtyEkttrJyTc7Ix6Ye3VwDKK0MxNJAHBIZ4Brv7RppBTJQD2aeHsw4nOY44HAfseZKQPWB9DMj6VdAs8+DEUInQGkPNPtB4D8QzICyFyCJgegNDNgBursVsPiTHUlcGIi5gTg4tagsMznVLzE3laj44AFiFiCG8aWAWAiqHkuwYIQzJxBzAbElEBsCsX5Gfm6qflFpSn5uZl5qkT7IHP3iomR9mFn6qUCzwIQeSC6XyHSDbi+MzwMNJ1zhpoEWfheg9AMm1PD2wBIHoDgywCKGnE7RgRA0PEDuDi4pysxLxx5uIDVMVAg39HQB898NRvL8ZYHDX7B0gfCXblFqYWlqcQl2/8EApf5Dj08HHOXPDQbiALHhwYCWftABLxCzAnFZYk5pKo74FaWS/xmQ0jiu8pMBqbyiZ7qQhpY9KOmiuCA/rzh1NF3gSBcaA5guAAEAAP//asaJYeAHAAA=";
+  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/5JggAABKL0CSqOLWyDxGYGYA8qXAWIRIM7Nz8q3skqtSMwtyEkttrJyTc7Ix6Ye3VwDKK0MxNJAHBIZ4Brv7RppBTJQD2aeHsw4nOY44HAfseZKQPWB9DMj6deA0gpQ2oMRQidAaQY0+2HhNANKL4DS/6FgAwN2gO5uBSz+ZEcSFwZibiAOTi0qy0xO9UvMTSUqPniAmAWIYXwpIBaCqscSLBjhzAnEXEBsCcSGQKyfkZ+bql9UmpKfm5mXWqQPMke/uChZH2aWfirQLDChB5LLJTLdoNsL4/NAwwlXuKHH1wkYzYQ9vhjQ0iEDWnwZ4IgvIWg4gNwbXFKUmZeOPbxAapioEF7o6QHuL0bS/GOBwz+wdIDwj25RamFpanEJdn/BAKX+Qo8/BxzlzQUG4gAx4YCcTtABLxCzAnFZYk5pKo74FKWSvxmQ0jKucpIBqVyiRzqQhpYtKOmguCA/rzh1NB2gpQONAUwHgAAAAP//sUetcLgHAAA=";
 
   // Deserialize RuntimeTypeInfo
   var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/rect.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/rect.mojom.dart
index f39ffdb..a6111e7 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/rect.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/rect.mojom.dart
@@ -139,7 +139,7 @@
   // serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
   // a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
   // file. The string contains the base64 encoding of the gzip-compressed bytes.
-  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/5JggAABKG0ApdHFYTQHGo2uzgKJz4ikTh6IxYE4JDLANd7bNdIqNz8rX68ktbhELyg1uQRsDiMWfQpo9nyAuZMVQnswYIL/QGCA5h6QGIh2YMAOeICYBYjBjgECMSDmA2I0Z2L4F+ROdiAOBGJPINbPyM9N1S8qTcnPzcxLLdIH6dcvLkqGMApKk3Iyk/Uz80pSi9ISk1OL9ZMy81Iy89KL9UF2FOsXAS3RAynNhZqvAXUXLBwUGKE0E5RmhtAOWMIfBFgZiAOEwhEdaOAQ54TGXwWO9MEJDTNahRep4cBCZjgwEhkOlTjCgWuQhQMHmeHARCAceKF2lmemlGRgCQfuQRYOPGSGAzOBcACVJWxAnJGamZ6BpRzhoXE4oJerEmh5AMYHBAAA//8bWnY5EAYAAA==";
+  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/5JggAABKG0ApdHFYTQHGo2uzgKJz4ikTh6IxYE4JDLANd7bNdIqNz8rX68ktbhELyg1uQRsDiMWfQpo9ryA2c8KoR0YUIEBmjv+QwG6OhjgAWIWIAY7AgjEgJgPiNGch+FPkPvYgTgQiD2BWD8jPzdVv6g0JT83My+1SB+kX7+4KBnCKChNyslM1s/MK0ktSktMTi3WT8rMS8nMSy/WB9lRrF8EtEQPpDQXar4G1F1w/zNC7WeC2s+M6n8LNPexMhAHcIUfA1L4wdyDDXBC46sCR3rghIYVrcKJVP+zkOF/RiL8X4nD/1yDzP8cZPifCY//eaF2lWemlGRg8T/3IPM/Dxn+Z8bjf1BZwQbEGamZ6RlYygkeGvsfvbyUQEvrMD4gAAD///PaA+DoBQAA";
 
   // Deserialize RuntimeTypeInfo
   var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/serialization_test_structs.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/serialization_test_structs.mojom.dart
index 4168607..c6c0948 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/serialization_test_structs.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/serialization_test_structs.mojom.dart
@@ -588,7 +588,7 @@
   // serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
   // a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
   // file. The string contains the base64 encoding of the gzip-compressed bytes.
-  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+yYzW7TQBDH47RV3NKqQQIp5UMyLYccUJbmSxGnXipVQgIkONCTcRK3WeTYldeRKk48BkeOPAJHHqNHHqM32MWzaL31hiXBHxUdaTTZ1dQe//fn2XUbldjqEJ9ClOd5NKUo502MOB5Qr1EfwPxbiOcQP0H8CvEC4iXEXer3qL85fnVoPz88fjYN3getyCVR63UUzkbRvmZeWzOvo5nX1czraeb147wn1B/Py3t58mLmec7QcwnXsQa6M8knwjqw8bdqctxcS44vasnxl43k+HwrOf6+HY8tad1NWO8m3O+octV+UONcDYQ5VT6zbXg+vtg79Pdt6goMrnBowt+fUrepo0kwdVE4GwdT7LshYtdBJBzFP85mQw+PEPYjNzxxRi5BQ+yPsX9KELsXQcQNsePhD06EA99mczb5dX/SYheY/taJvxcH0vPyumoVPfuTjrI1FfPrUBdW6LQONRelU0Oo1RDqUnE2yJSztpKztkK/zRJytsrFzJGzW9RXWB8ae6k6bQFreeok2rLcfcyUu46Su86c/bhs3K0VwF0daoqrtfdlnZimGznqZKXUJ66fvK/pnnOW5fdzpvx2lfx2FfzeKSG/1QL43YR+PXYiJ02nu6BrEfyy5+HvtSnx9X/x3VPy3VPw3bjhO8H3mYPDNJ12oBcUwXdV2LfKzne2596+ku++gu8HJeTbKPDcS6tN1enhNT33WqDj5aqeXkcSd+8UenHOUv+pQW2P+v0UDuVMWWcrZx4tWHdex0Dah67Ld9mjnM/HdYG9Rb4jzAV1Mpb8jtgFLfPep4x/vA/9bd+sL6h3dcm+uVcwl/P65orQL38GAAD//+ZT6wRAFwAA";
+  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+yYzW7TQBDHbbdV3NKqQQLJ5UMKLYccUNzmSxUnLpUqIQESHOjJOInbLHLsyOtIiBOPwJFH4MiRR+mjcIPdeqyuF0/kxvgDwUqj8Vpje/yfn2c3MZRoNMEfgpfPx16XvBw3VSP/jFmD2TGcfwv+A/gv4L+DvwT/A/w+s3vM3py9OrGen5w9nfnv/U7o0LDzOgwW4/AoY1w3Y1wvY1w/Y9wgY9wwinvC7PGyuJfnLxaua49ch8Y6NkB3LvlUqAOff9OSc30jOf/aSM6nW8l5eyc5/7QbzVtS3RWot6Fd110cMU8xBz9hnCrpYxfeKy7yHju+zQwp/2/86XD9BTOLmTn1Z44ZLCb+jHhOYPL7mDQYRwfzxcglY5N4oROc22OHmiPiTYh3QU3+LGpSJyC2Sz7aIfE9i5+z6NXzaYffYHatr5J8/2Mpr4aSbWD6KYJ+3LeR6zchH4Loswm5VqWPIeSqCnlhXLUL4aqLctVFdNuuIVfrQr8smqtbzNZ4n5i4qfrsAFtl6iOOvJzNC+Gsh3LWW7LO1o2zjRI5a0IuUZbWkawP13KrRH1aKfmJdZPXq6z7lry8fi6E1z7Kax/h9U4NedVK5HUb+vDEDu00fe6CnlXwynOPv19d4unf4HmA8jxAeDb+83zF89wmQZo+e/DNV8GzJqxHdee5mH3rEOV5iPD8oIY8qxXsW1mWqfo8/Ev3rQZwdrm+XKdTibN3iE4xV6l/NrBxwOx+CndypKxvq2T+WlDvOI9DZH2p6++oRyXvb5vJtnXj/b++gj5qjv3/PmhY9vqj/uH15aZ9sbmCzlqOvnhQMYfL+uKa0A9/BQAA//9CnCj5wBYAAA==";
 
   // Deserialize RuntimeTypeInfo
   var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_enums.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_enums.mojom.dart
index 6134d07..b6f3ca9 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_enums.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_enums.mojom.dart
@@ -91,7 +91,7 @@
   // serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
   // a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
   // file. The string contains the base64 encoding of the gzip-compressed bytes.
-  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/5JggAABKG0ApdHFYTQHGo2uzgGJz4ikThmIpYE4JDLANd7bNdIqNz8rX68ktbhELwRIuOaV5sLNY8RiH7o9H6C0BwMm+A8EMH9YIInhUg8zF2QXzDFSQLYQEONwJoZ7mIGYFYjDgdgfiPUz8nNT9YtKU/JzM/NSi/RB5ugXFyVDGAWlSTmZyfqZeSWpRWmJyanF+kmZeSmZeenF+iC7IGR8KtC2Yj2QhlwGDaCZLECsALUvgxFCb2CC0D+YUeNPAxZ+jKjuVGBE9Te1wo8H6r4Q1+AQEF8eiMWxhp8eWAl6+IH0MtEw/IhNfwLQuGRgIC08GakcnpxQM8OgfBkgFsEenmHY0iPrIAtPRhLDk4nK4ckNdYebvz+YLwfEYtjDE6wEPTzZBll4MpEYnsw0Ck8nxyBC4QlWgh6e7IMsPGHhAwgAAP//ez9ctxAHAAA=";
+  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/5JggAABKG0ApdHFYTQHGo2uzgGJz4ikThmIpYE4JDLANd7bNdIqNz8rX68ktbhELwRIuOaV5sLNY8RiH7o9L9DsY0BzvwWU/g8FHgzYgQDUDpgjpIBsISDG4TwMdzADMSsQhwOxPxDrZ+TnpuoXlabk52bmpRbpg8zRLy5KhjAKSpNyMpP1M/NKUovSEpNTi/WTMvNSMvPSi/VBdkHI+FSgbcV6IA25DBpAM1mAWAFqXwIjhF7ABKEfMKP6WwPmMUZUd0owovqb0nDjgborxDU4BMSXB2JxrOGmB1aCHm4gvUw0DDdi05sANA7Rw4FQODJSKRw5oWaFQfkyQCyCPRzDsKU/1kEWjowkhiMTlcKRG2q/m78/mC8HxGLYwxGsBD0c2QZZODKRGI7MVA5HJ8cgQuEIVoIejuyDLBxh4QIIAAD//1XEaKPoBgAA";
 
   // Deserialize RuntimeTypeInfo
   var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_included_unions.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_included_unions.mojom.dart
index bf5bda8..edb6f59 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_included_unions.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_included_unions.mojom.dart
@@ -104,7 +104,7 @@
   // serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
   // a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
   // file. The string contains the base64 encoding of the gzip-compressed bytes.
-  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/5JggAABKG0ApdHFYTQHGo2uzgGJz4ikTgOIFYA4JDLANd7bNdIqNz8rX68ktbhEzzMvOac0JTUlNC8zP08Cqg+knwmPPRyMENqDARP8BwIDNPeAxEB0AAN2IArEvECM4hggXx6IxYEYh3Mx3MUOxGxAnAjEkUCsn5Gfm6pfVJqSn5uZl1qkDzJHv7goGcIoKE3KyUzWz8wrSS1KS0xOLdZPysxLycxLL9YH2QUh4zOhNsaXgqws1gNpzcUTzgzQsEZ2FzOafwmFGzrQwCHOCbU/EVc8QcOEXuEBCAAA//98lSXf0AIAAA==";
+  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/5JggAABKG0ApdHFYTQHGo2uzgGJz4ikTgOIFYA4JDLANd7bNdIqNz8rX68ktbhEzzMvOac0JTUlNC8zP08Cqg+knwmPPWBFSPYxoLkfJv4fCgIYsANRIOYFYhRHAPnyQCwOxDicieEediBmA+JEII4EYv2M/NxU/aLSlPzczLzUIn2QOfrFRckQRkFpUk5msn5mXklqUVpicmqxflJmXkpmXnqxPsguCBmfCbUxvhRkZbEeSGsunvBlgIYxsruY0fyLK7wYkMIL2Tx0wAm1NxFHvHBAw4Je4QAIAAD//8B6whbAAgAA";
 
   // Deserialize RuntimeTypeInfo
   var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_structs.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_structs.mojom.dart
index 76dedd8..3e82cdc 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_structs.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_structs.mojom.dart
@@ -6234,7 +6234,7 @@
   // serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
   // a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
   // file. The string contains the base64 encoding of the gzip-compressed bytes.
-  var serializedRuntimeTypeInfo = "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";
+  var serializedRuntimeTypeInfo = "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";
 
   // Deserialize RuntimeTypeInfo
   var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_unions.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_unions.mojom.dart
index 413a617..e9d90e5 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_unions.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_unions.mojom.dart
@@ -3441,7 +3441,7 @@
   // serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
   // a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
   // file. The string contains the base64 encoding of the gzip-compressed bytes.
-  var serializedRuntimeTypeInfo = "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";
+  var serializedRuntimeTypeInfo = "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";
 
   // Deserialize RuntimeTypeInfo
   var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/validation_test_interfaces.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/validation_test_interfaces.mojom.dart
index fd7db41..e8c626a 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/validation_test_interfaces.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/validation_test_interfaces.mojom.dart
@@ -4498,7 +4498,7 @@
   // serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
   // a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
   // file. The string contains the base64 encoding of the gzip-compressed bytes.
-  var serializedRuntimeTypeInfo = "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";
+  var serializedRuntimeTypeInfo = "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";
 
   // Deserialize RuntimeTypeInfo
   var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/versioning/versioning_test_client.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/versioning/versioning_test_client.mojom.dart
index 9e3b8ba..a6d8122 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/versioning/versioning_test_client.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/versioning/versioning_test_client.mojom.dart
@@ -1200,7 +1200,7 @@
   // serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
   // a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
   // file. The string contains the base64 encoding of the gzip-compressed bytes.
-  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xaT4/bRBS3vYFNt1Rd+m8Nha0XBESFxhEIKUovWbFBQRQUWFRRcYi8zpQYre1gO6vtrUeOfAyO/Rh8BI49cuS4NzrTvKmd8YztOI6dSB3padaO1zPvN+/93m8mUaVZ24X+H+jZ+4PItYytDtdfYruHzXZ/czudAPlBp3OGPN9yHcv5tdPpT23D+RH57tQz0ZERGCeGjzjvYcfrQ38f2xfYfno06A2/7T3qkIGaZJxmOExTNIr4/X9Dr2HbinzehX4MfQtbI3X8IzQxvMBGTtDEz36c+nzPnpy6TxBa3r82zJ/61WDWSauF1+S5/iU+HrvyPO7R9j9uLQYfco/0P0v8dg3bDrYQmdn9T7DdgXhJgDE2v8vY3sBmYvsFmz52baR705FrWw7ydPI+3ffM2R+T6cmpZeqWEyDvsWEiXz+xnBEewtfJmL4eDjokN4bmqUUWj/yz/QofJTL+RA7jIYpzQ5YSWxqe7Yx4XgH/jw8f9I4h5z5Kx7FJn2fxfAv8KwvPRfMoK85ywThfhjw56j18ef0ptg8z4EyfZ3G+suY4ayw/AqAXtXy4DgS47gIXU+Yjsfu+CNeQHuM8hW27RDzZ+tACfAbKPB+2mXnuSNlaGr5sE92/DrGLALqhNeLG49vYLpWIHw8fOZq4TKvnxEdm+IJthO9ISDuGjXi4XCsZl11mfjycCN/XZXE+5cFJSYkjWrdHTN1m8boO3FZmHvL811L0xqJ8KNKlEvCAxoxLP38G6/Sc0VFdZj2eMfqT8uZ/CbwZnY/G0bPbkfuUB46Rd2aZ6HsI99w6nXD0TeKP4PPPsd0V8bhYtsbiaQ/Wr6x4youHKog/FfiFcpEC8dKA+/S51puz/o+rEC+35nmLPncB/V9b+fKcxlVavTgcjSLVNu6fWrJ+YeOb4nCu5PO/LfD/NmAQ8f+eh36f4klxcaCtzPoQzXtRfZDk1eiMRoqOozqDFy97a1AXVIHuXHR/nlQPZAEPRONWLThu38N2Ixa3/sR1fLQpcbtIKypur0Kd9Kcmdsvn8tzdCnESxZWoLjyvLbb/zVoXboKu+2GKvCcJ+7B316Qu/LlVbH5RvTPnf6QyVJ1f7LmUJlezDxXl2Q7MD7af3LjZq3j/mdTqgnMlVsefC/afT5fQ8VuR99D9zHeW83Dm43x8eijwLHSGho+x78gbTjzLCQR461XGZwq/qYxmVlPqab1WbL7vY7vFyXdaUdct35/Km6UHb4NeKbtOyCvSgzzcyfoM5NXwyfmK+eQGnI0xNCLx1vF+RetI8KHz2Gb2pcvyDKuv+gDYv7X587Ks60b5ZtV14B04yz0MAsMcf/1y9QZ08Tjrt1+xXqMOjXPqta4AzwPAIobD3G7+tW5bVrftAwdUqduUhPPwZb83EOGVlR8JPp9VdO7B48ek/WWSzqKAaEqxefoBaFFenoanF6/PL/KeX5D4+2oDzi+6EF8TJfxOJU99XVYXKSn1dQ8wf2D5AVV/34ziuB+syTnIhVTsvugOYMD4/6qqVp2n9Qw8JyXEAcWrXfD5rAZjxHGbsdwm8JtSwT6S/u7GwjnGqwMH8NuxqvcfOxniLsp/LwIAAP//eB9e3mApAAA=";
+  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xa3Y7bRBS2vVs23VI19C+GwtYLAqJCYwRCitKbXbFBiygosKii4iJ4nSkxWtvBdlbpHY/Ao/QRuOwj9JJH2Mve0ZnNmWYynvFP4rUTqSMdzdpxPHO+Oeeb78xGV6atDv0L6Pn7PeZaxVaD66+x3cfm+n/6nU6EwqjTOUVB6Pie4/3R6RyOXcv7GYX+OLDRgRVZx1aIBO/hxzuE/gG2r7D98rjX7X/ffdwhA7XIOK3ZMC3ZKPL3P4fewLbBfL4H/RD6L7A1U8c/QCMriFzkRS387Cepz3fd0Yn/FKHl/WvD/KlfTX6dNmfX589dFuNRU+f9Vxj/2fv/Q/tVEbfr2LaxzRCZ3v8U212IkwT4YvO6gu0SNhvbb9jMoe8iMxgPfNfxUGCS95lhYE//GI2PTxzbdLwIBU8sG4XmseMN8BChScYMzdmgfXKjb584ZNHIl93XuGjM+EN1HgeKr6EqiU2GYzsjjlfB76P9h90jyLGP0/Fr0ed5HN8Gv8rCMW/eZMVXLQjfK5APB91H59efYfsoA770eR7fqyuOr8HxIM33F5v58OxJ8KwD11JmI7H6gQzPGf3FcCT9Vok48vzfpDyozePS5ua5rWRrMlwVBlfRfdpuQKwigKzvDITx9w62yyXiJsKFQPdS4kdtAVxUhg/4RviMhK5nuUiEx/WS8ahL/GPxucQSmCB/8uKjJcQN3YcH3D7M43QDuKvMfBP5baToh7x8J9OXCuS7we830D+D9flPTV7PZ5yOpPx4lsCP7HwMgS7dYu7TvD9Cwaljox8hzBfW24SLbxFdLfn8S2z3ZHwtl5+xeGrA+pUVT4vioUviTwdeoamqQbw04T59rvYWxM81qI9ui+OJxsM/G/nzm7S0fWF/MGB207hfesm6hI9r6v9Qy+d3W+L3HfCd8ft+gP4a48kI/aetzH2AzXPZPvCyYP3QTNFlVD+I4qOxAvyvS3Rk3no6ifdVSb6zcVorKE7fx3YzFqfhyPdCtC5xmqctG6fXYP8LxzZ2JxTy2L0K8ZHFkYzv/93MVq9m5ftboNN+GqPgaUL99N6K8P1ko5g8orplzm+G8avOI/68SFfLrRtl+bQN84JyURgnjYrrxaRWk5z30O9PJPXi30vo7w1mPFqH/OB4j6a+zcdjgKLAQaeo/wT7jIL+KHC8SIKzWWE8Gin8pXNaV0/ZH88KyusdbLcFeU13yFXL64m6HnruDuiOsvlfvSA9J8KbrMuhWixvTC6YN27CmRVHF4po/R5UtH4ECzqPLa5+XJZPeJ20B4A9B52k5Vgv0i6a59+FM9X9KLLs4bfnq9ajiyZYt52KdRfln15Oft6T4LgLGMT8n6u23+ivRfXXDuR6lfpLSziPXvS8Xla/ZOU/gsvnFZ1HiPgvqQ5M0ks0H+taMfn4IWhJUT7OThXenCvkPVcg8fbNGpwrtCFPf9dm/8PIs18uq2+0lP2yAVg/dMKIqrfvBnG8d1fkfOJMKaaOuQu+c36/3iWrzsdaBh5TEtaf4tQs6FzUgHfH8Zqy2Drwl1ZivUd/p+LgXBLx+y78tqrqemE7Q5yx/PYqAAD///NL0cV4KAAA";
 
   // Deserialize RuntimeTypeInfo
   var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/regression_tests/regression_tests.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/regression_tests/regression_tests.mojom.dart
index f06d9b3..5b3c4d8 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/regression_tests/regression_tests.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/regression_tests/regression_tests.mojom.dart
@@ -3292,7 +3292,7 @@
   // serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
   // a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
   // file. The string contains the base64 encoding of the gzip-compressed bytes.
-  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xdzVcbRxKfETgmNkns3TiR49ghzm7MxrEA29iKkxcjsDAEEDwkEvKyu7IsBqSgD3YksvbNR4455rjHHH30n5CjjznmyDFH3zbdmmo0XZqe6RnNFwrzXr+mRdeo+9fVVd1dVa2kYjznIJ+EHH/O8hGU43prp4z8BUnvkPQcPn8J+e+Qj6lGvgD5M8ifQ/4b5ErCyMYhfwT5AeQvID+EPDlk5DOQVyD/EfKXkI8Mw/dDvgf5RyRdIqnw7Vq2uJT99p6u7ehaq1VtNoptrdVupTKS9WY79W6RdN223lyprtXmSi2tQIrZxn69QzdB0jV7uopW3qX150p7LeVLUveOc/0VrV1pbn1TbVey9b3203WttddstDRFuU1oP3Wmz5HGzjVrtSr9B23nNEk37OmajXap2mhldL30dHUbevgxSVds6bJbO5rx7r/b16Mdybf1/XKb1PuMpCn7+qQBFIDFXCG7nsssZ2q1DoLGcx3G1pl+SXJ8Wf3l5n81vVyiYEMb/yFFl9uvP9Z01j7571vXtjVda5SN76Nj+zdbulxTr5dqjAGd+W/96IPp6SmJccpr+g/VskY5iNR7SNJ9+/qdIaU9Ac5ZKDW2alprrlSraVtQ6LzjruR7DBqens7Se5L0i422pm+XyugVkvOVTu+jNyjjVAba1v9a09vak4pqyFEqX6lI3FS78pb++WqIl78/vdYt03+lk3y5cpkvJ6/x71uY5Mszt/jyb9P8943d5cuHX/Dlyn2+fDDHl5PzfPnVV3z7fs3x5ZcbfHt+/o4vP/o3Xz58hOjLqL870A+kzxTAeQ/0yoLS+/yfPExfpk2fierT53V4dQbK75H0F5IEakax0s+nSfoXSRSKiUqzrk3o+1vNerWh6RP15vfNiZZeNv7Y239cq5YnqoztWhOPq42tamOnNdH5lomer6VkdRM+TM/PoH7S/1NV/0qRe5zww8+4A36PBeuPKWhX0PiM8WzS5WfUzllFcbVewLgnTX1XzfMuZH6ddeLXWevxuH3Cr512lQT8Oh0zfs0o7tbBsvyK+51U5XBeQHxaEeB8kaTzJFmvphXlE5KuWvGtgAC3txzSOFF1dZbqefjeXwCnNOj5n2GfkgQ9f3Aa9CYMQOWMkf96FvB7A/ZJb/L7O8avk2p/82BGcnyozKBNm11dXS4WFhZzD7v8f0NqXFIcKR6fLdgqBj0+XvdzsrirPuP+NkmjJD1Y3ZhdznaRvwtrVgncOVKMuzYguCd8xv2vMI/nl1czBRPD0z16Sg53jhTjvj0guA8FJGfI7j7tUc5wpBj3nQHBfTg43KfueMa9S4pxrwwI7qcCkjMEvFs3CddOuZczHCnGvToguL8WHO53bhcLlanGjgfcu6QY9+8HBPfTAeG+QaV0oegFd44U4747ILiPBLSO3OhI6TZBz/U6kiPFuNcGBPfXA8TdkNIGw7vE/YgU414fENzPBIg7ldIL3vj9iBTj3og57mMW5zkduaJ6w3lTgPMFkugRBW/N7NoHHcyePbh+CbwQNK5JwTnaqGkPb3U+No7ObxW1v/NHhu+MAN+rcGab19q2hk/cn/sh8afoHPunhDccROfY7PxPjMMNXfvPPmmbNR7s+bOfY2uKmF+mQ+QXBX0/a/cHJL1LkojZ+/UP8GyfYe2UlJ9riK+fCMaF2vTfZ/JT6N1htw+3J8TjfCZi+XrOdFanwucJU73/DdnL2XQiGDnL7PkUw+Z+e62kE7VKep1pbHGQ4n6djVjOKqq/cnYSsHDCgUnbqOTsiMR8Nu+jMH5sHTTiEb81AX7ML0gCv+7kjlBfucVRNC/XhtzZP2TnJfVJugx4CsG0wG804nmZ9Hn9w/yzbHEwLYHivP5x84TldzIK+IaNj1v/EL/lfQr2ak58xSbacZX3SkB+C8yfxtq7tuuPKumO24PvW8dsP8z2NZvD/a3T0g5+Ih3P2l64Lf3eo9ADDIfxIX/14YeAQU//+e1vZPMUr+fZfIuLHngLbBp10vrSjmbJLxdDwMkLHqoHPFQHPM7BXNYF+xuaX4tYLyZs9GJQ84ydu1nNM/PC/WSeeZtn56HOyTzr4nE5xvOMxXv9kvB3/XQJbMLWUUbduBfJsKQePvtGiY//csLGXtDvPBR9TmNPqOtoicJUbG4XNQKUhd1lE2xmYZ7/0v6w83C8bsfnw2PIT4mPdnIfHxU3P/1R8OkyouYMWXDBiu+hAh6/j5UTP33arh8E699rIe2jxpA+wPupN8GXyYgOU6TjyLzy6zmVz/2y+zI/Hj56s2vPcAjz7BmfVEj86/YcIei4Byd7FzuPlzVz4famlfDiU4ZMeP3I+G5IceUHIisX0pL4snVXvpDJPcisP2D2Q1k8U4xQwA+fhXS+0K/dE+Of9jl+YU+AP9PX8xvLy/m59WwW4kE/B98W6XFAL8DjcG/AxiHh8zicBx25uLKSXc8vfp014XbTzTigF+Bx+PyYjANut99+UQxv/raB7rmCw7UEPe27GpIcx3oR82tSRfpF7U9urzms55aQn4QYt9SSFW4fhcSPbu+dYPHsSkjrDHZubn2bhU18pYAAt/diSPyJz73YvTNRxUWyeb5WKzVK+vzUHfic3cfijGeKI8W4vqfExc/UmhGiiotEuN+66Rl3gxTjfinmuAetv96F81l8iw3brzpdd4PbdyUm+msM6S92f9WwR/0lwu8N6O9u8WZxymRnd8ItBQQYvw9C4kev9xoxfTYckT7jb0uS0GeIALf37Yj02XOBPltDfPtE7c4rL/6oBw725d1iniybs6tFsvulfDC7SvbAxZVFuP5HofvhL6TwTdm+CuN+IXZyl2cUxudXJOSLapIvVwKTLyuZTZPfptR4EBKM+zsxxx37mcz0yb8rVHa4a4ctIwetj0V2D3bPi4O5o6d96xHJt4pqP2/8Og90mjfzi+v5Aui6D+3xS7G6VjjmQ5o3bu1bsviqPuPL7Bv57Nxq7oGNHjbhy+pa4VuIKb4i/8Kg4uv42xpt4utQRYznd8fMn/CQ2aeH+vMnFNkNz4I+f6i1LfnvnxH5D7J+pz36kU862O1IfzmPwTj7i0fhN8Hih3e1p8U9XduuPjFuCrXij6j8JlRkz1Rs5pWsvfgQGSD84juGp8F3XQ+6uMcpnArZj4HpT9Lq/Vrbmt8+VWIcpxCQHmRyi7+F2MYugCpiHIvHTA+ye9eTfcY/OumFFsIXt/9RRPrwd5T7FU/A/A9N/Y6FXuw33uXonv6Ev3i9D7Kcx+t4yHM1gnWEm3l1KSSc/FgnzACOB5L8tSl5/sjiHOVuj1eOfjfB4/XzPeMwHzN/4bD9KJnffgUAwvg8hL+jWO8OB7DeZfbKzYS3c3TRvQ4sbtn+1wts7j1zIMTjMhsjvh2OId/Ogb34uMhX5lfzwiNfPrPBb4zjS+tfxRD6Scr9nEYP/jnlz+2f7sSfqxHIVcWC/9h5I/9rJ+5/HyVu+0dRv4TnqKgiHq+vjun+0St/y+4f8wSGFYj5s5IDSwO6fzT1eyD2j4y5nvkc54TjX1j8gyDspQe/T5STOCe7e9yuK+HE1Y4h+yGW56L4ILe/ByerR/4IAAD//83aCUwIcQAA";
+  var serializedRuntimeTypeInfo = "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";
 
   // Deserialize RuntimeTypeInfo
   var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_factory.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_factory.mojom.dart
index dea6215..708f886 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_factory.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_factory.mojom.dart
@@ -1764,7 +1764,7 @@
   // serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
   // a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
   // file. The string contains the base64 encoding of the gzip-compressed bytes.
-  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xaT3PbRBRfyS41/1KnGRpR2tShbXBhiE05kMkpM1CaDjPQIRzocAiOsyEKlSUkhQk3jjn22I/AR8jH4GP0yJEb7EZvHelpV5JV648z3pmdtWVZ2vfb3/u3+wwStDaMf8GIr2+Evmust+D7B6wvse4NLOc53dz8dmDR/e/2jujQl96Pn9uH8S4864dnTx/tfvPo2WbwwHX8PNVzzmDsst5kvYPm/SOMDox3WF+WvO/rwdC33T8yz0f1nO/pb8fU88/nYUh/9xx75NFtmC+Xo4Fw5t9fdKK4Gx9Hv/8MAHYQLqL9A+M2ibf/WOsjnPg1Pm4RebvG+lXWBU432OeF8fqP4Yutzyrrb7H+E+s7rPcObYv23ON92zJH1O1Z9pHd89xh8ME53ntuDnvmyKfuwWBIvd6eOdo3R794PZ+h6vWC1+0eBK9b53+ypLzowniL9SvwmeOmA77NEA+vhO4/BaJ1FoLx78VgPDSizxW4v4LxZTOKVxruBOHeTcH9K3vHPz44iMn5IchUNL6YZ0Luk0Y+efsKeZdBZpD3Uxf0CcstWhm80kPvPdSCcUtiHzmP/iXZWla8COKzih8qnDg/rpfID4Leb6B5CvuYZj9l+DYT8G3lxFdLwfcdeK9jOlRmZzi+n5WAbzs0Xy3BvxLgq0FIqXprwJwu9Dbwc3O9lbc2rJ0Kp7sQX1Wtt2KeIm5Ji2u2FHFjVXrr0xNfprcc33sl6i1RxNEqvVXFGf1GVP5pxRlinUF/H2K87lUcZ7T1Qu3VQxFoVGWvMC8m9X9F2ak0/8d5sVayHukpeqSF7sd8EnmRkZNPGwqc3md9McqnwCAq8tY68UqrkFcq+8x59UXN7LMmyS8FvzB+OimGX1+6dOBTvBsRx+9+RfZa4ODk1C/V/sMqYBCTf5wh1l/Pqogz34b9DnvvSMmT1RJ5oqP3i+tLMFfM7Kz7ca+rt2cQVzWmrLciXoa89onl2K5P958IBPF6rFWst6dT1tsuvEsl/yzEXXXU27WS/KNKb/uh/Y+brJuwsOuxFQ7u+wR0eazHKX/IG9+JxOhFTh5vK9bjAdjJBB7PTLxXRz5/VFIeUXc+p/mn5pT9023W3+NyDH6lspnLzlUuk3+6DxhI5Q/FlnN9nkyf+f8+r3D/sq7+qSgec9u5ksBj4ZzmPJ6Mxw/ARsx5HP3dgTjrVIuuxxZaj5eovkTw+CxhHzo8n44knroqyRt3qPu7OTzfGMhUn6LKN2/CeakizYzx41ZJ9Q1p8hgJ5zd6aD3xudjTRvJ5Q169y1rXsEP98zXD8799yc4bRF0DyFt5XUPd94VHoMgyXizO0L6w4FNLL+bcTujRY4UerVSsR69IMXr0uCZ61MrAD5Lgz4o+37zAqdp6jFm1NyvAubraG1V+YbyRDadJ6z9FfRaq/xSXY/i9C/8rGj9c/9sV9T6gV3821Lwj5KJGtCzevQnreKLYL1yAtS8at0nrDJoF1+uo6gyuwbWy6+xk+OhhgaZUz6SjfA+365BnWLZLdzlInpw3fLxTor/XQB7Bm5bEv2g58v12Thwbr5nvL4HNLxO/uuT7Yfup8isbjen6FVxfKOI7VFYYW6cbJfkVnC8b2mz5keW5H4nti1ThR9LqPsX9/wcAAP//M5QIlJg1AAA=";
+  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xaT3PbRBTXH3tq/rR1mqEWpU0c2oZkGCJTDnhy6gyUtsMMdDAHOhwS/1lThcoSksyYG0c+AkeOfIQeOfZj5Mgxx9xgZb215dWuJDvySk6tmZ2NFFna99vf7723q6dJwVGF/m/o6evN0LmMWwXOP8BtEze3bdov0eHhN20T9b7tnKCux7yffm4D+rvwrO+fP3t09PWj54fBAw/o5/Ge8wr6PdxKuNWpcf8AvQ39Nm41xvu+anc9y/kt9Xh4z/kO/TJErjceh8b8v2tbAxc9gfH6dqgUzv756+1Z3LX92fOmPrVbCtlNjjPq/CF13qBw+g8O+j5yXMftCm4Ep5v472uT+Z/AF5mfHdzexu1H3Fq46S8sE+nOsGeZxgA5ummdWLrrdIM/7GHnpdHVjYGHnH67i1y9Ywx6xuAnV/cwqq4evO6oH7zuwP+RyeQFweU2bmX428dNAXxLIRzKofufAdH+uQr82Qj61zU23qfQj0rp8JYovPcS8P7SannDfj9i34dgy7JxrVO6I/Yeq/PZ2eDYWQNbwc5PHNAPbS85RPBICb33WJ61M6zTMkNnvCMNTmF+8fjAw8fnww2BfJCo92vUOIkfTPKTLFxLMbhWFsBVjsH1XXifbdiI5Ud8XD8VgGs15KPkmPgpAT81yg8tS58ajGWqzyB+rfUZ1UFlrE82PnchX8pbn2ScJA9JylMecvJA0fr00Mhj6dPH9Z5AfUqcfJinT16+oKlTvWeRL5B5BZ0+oHG6l3O+MH559v7oAUkY8vJHNA/mjWdZ+6GkeObzYFewXpQEvcih+2n+/Ev8ypz8aXLweR+3jVn+BI6Os74sEo/kHHjE87s+jz4vmN+VGeu/Omc9rEjZ8ukLB7U9RO8SRHG7n5MfJvYfz6kj3n7ADtgesXuygiu+nkTmh+/AvoPVOeHyYkcgLxTq/eT6JoyVZnLafbGL6vMvyIvUjPRJ8ltYbz41bcvxUO8pQY6eh92c9TnKSJ978A6e3auQNxVJn7uC4h1Pn43QfsQt3AyY0IPIzAb3fQyaneg14QeL5mfn0P8+J2+fcOZhH/xgDG9XJl8rEn8/EpT3F52/SXGnlFHcuYPbe/742z8j1ohZ3ysuQ9y5D7Yz7Q7lhmvdptOt/7vPctw3LGrcyZq3vm/ciuEtCTpr3qbj7T74gjedt3S8sWHD9w+ZPR9kPv+k6jIIf1/F7P+Gx1Nn5EdXGOu8FnJ+NbrjBXyqug7e+vAWfH/kLAsj/LgtqC4gyR4t5juJEppP+rtTU43f319Eb2nqAVrIG88VPe47l2R/n9QDgJ251wMUdV92AIJl8WBjhfZlCX/O5Wy/hxG9POboZStnvZxK2erlcUH0UknBBykmTi3re+EUn3zrF1bNn2wBx4rqT3jrgrNyPD7z1j2SeiWq7pFcjuB2FX63bNzoutc6ONAG6OeFyueZJE1rI5fNs7dg3kacfbtrMNfLxmve7/MlwfVm1+Ga6HozFi5KaH83izofhXGdHDdgPWBaDjrywXHZPPH7bYFxW4axE55UGHFDXmA9Xl0AP/UC6/FN8OUicSvKenzGP3LiRV3NJl7Q9XUkP6PK6iLzc1NQvKDXsVV5NeJDbR0fJrjkER+S6h3J/f8HAAD//4yBIXxYNAAA";
 
   // Deserialize RuntimeTypeInfo
   var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_interfaces.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_interfaces.mojom.dart
index d1dd010..53422cb 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_interfaces.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_interfaces.mojom.dart
@@ -2332,7 +2332,7 @@
   // serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
   // a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
   // file. The string contains the base64 encoding of the gzip-compressed bytes.
-  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xbTXPjNBj2R7qUXTp0ty2k7Fd2mYVeWqdlBjqc0kOGdqAzmSl0uhd20kQ0Zho72A5Tbhz5GfwMjhw5cuQncNwjN1ZqpEZ+Izl2Y1tKt57RqI6dyHr8vM8jvVKrxuhYpnWd1vBzVi+CGt73J603cKngUqPnu7Q+ofWA1o9wWcXl25et5quvmy+/DNv9wTnaanrDPrn+KS5PBdcPvAidoWCv00Fh6AeX7VQF97UC/2e3iwLZ7xxdVuTXgh/aHWTs0+deBs9Nzm1cLqz4ee/9+Pk/jhiX17TeNyaP//FRB+2Rz0jdMMTHe/Q5GU4ruNzDBcA38Rzkewu4fI/LMS5Oz+8jJxh2/b7rocDp+z/6Thh0Rn8MhqfnbsdxGTyhc+p6Xdc7C50IhVHojJp7Nb5hi3yvP2rP5HhS53hx+TymkXhkxWlf8jtLtL/He99818T1Oi734zhtsWsivMj3rRLwmhYHNfB8V4eZDq8GwKslwetDXAilYXw9wZ99MMYNXp7AjZzfLQE3Ubvs3OIgqtJzdl/rTpyPNRCnVSsbHw2Ab12C7wOKy1coohiKebdeEu8gr15n1CvY711Jvz+ifR/3ezNAPw3xw4n7z46i+7/ItWsKfM0AfifD6w87X7weUk2P4RUOfC9ESvGCcVQ14/qyC57rjpHuSIubAXxE5ovddtSWxdV6CTiJ8CA+1JD4HuOXBfBoADwuxPJ/NZ6CB+R1TaCTNtcu06dD1ztGQej6XhzX6JcBkuH6WYl6ZUh0H46Lpvkq5LPIZ01BOxYtVUPsI7um+D2lfa9MHy5mfK/mlPfKPj+a4kcPFftR3vrK/OhIMz+ad31lvqWrvtqK9NWeUV8Jrptvkb7aQF9l85+859XL9F2yvAGbD4F0gjA/omK+s8HlURY4PC2KYYWbfy9w9/9Nb/5raVT/tjKqf19Pnhc17GLnRc1Ozz+KAgyFWIfvK/YhNi/M24fG/dbDh6CuifSWXP+vZP95l7bbNuT8WC0JnyQfkOlbWbxiPhzjlQbzx3nm1XONeSXT615FPP+YVa9ZvnnMr1CI2wPFet2wi46rMCbYuswbNsz5ii/CkzUF8ZUVn8Vr4mOmxOc0AZ+nmulP0vi8qPhj8414/I2N7Tb+rh9/m7fxlxh/X2gcf9D/GX4tW5xXnjUOH1O9JnF4iMKwfYZa7gDtt73uORLgt6JoHMBwqF1zfC3LE7ygGAj7z40IdB5nVzTUoRUFOmTOMH8ril+f4PIkgV/M8W75lZ1fBxrzC+r4vyz/bIvz12l5tjEl30l4RnK2EK9VRbrN+t2y8p23VmnfWH+ZVOscRwsaxtEq/Xve1iNmzdOd5JynY/vROD5yWTq99V1XXj66wbyU+UONGkMlZ38ga1/vUH4eeNEE3muK/cHI2R/Yeh/t79VIXuc4NLi1P13icK0kf7iunhfFH358MeLPSM5v+ZOdP4815g9MLOW9/xr+XwLYfw0vT+BXU7Qfocb5sA32I7DrNodjg17o3U1ex0rDQ1FcTotXwrOlK7wPUdTzu3UBH58bN2s/NsvfxfqtQd4q635sGV9OUqx7mjnxZVuA1zPFfKnbxfNlWwO+ZN0vWbbP3aN653rbQp97Rj9TsV9SxTrLGI8dKR4vSszPmTmtc/6ac7wxv4fxpjrvq/s6J5t3+8NoW8avzxXwK2v+pKj44/DZkeGzd8PyJ0nrpHB8mbROauU0XtgR4P7xWzC+3JnD8eWbAAAA//8RY20kID8AAA==";
+  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xa3W7jRBT2T7qEXSqy2xZS9s+7aCE3bdIiQcRVexGRCipVKlTsDas0GRqjxg62g5a34XIfg0fhci/3DWCmmbMZn84kdurYk5KRRhP/ZXw+f+c7M2emaoxLhbcN3uLz0JZRi+/7m7c1Wku0Ovy4ydufeTvk7SNaN2n98eVJ69X3rZffhp3B8JLstrzRgF3/ktankutHXkQuSHDY7ZIw9IOrfqqS+04C/w+3RwLV/5xeNezfgl87XWK0+XtX0HuzY5vWvhU/rnwcP36zK8flLW8PjHhpoH7+5QXfB+Uj/n6Azwat92hFsF3rnz23RusvtJ7RWu/7A1IPRj1/4HokqA/83/x6GHTHP4aj80u3W3cBlrB+7no917sI6xEJo7A+7u7V5IZd9txg3J8p8KMh8OGKN6YxtSTFp614fp3beXb4w08t2m7Tej+Ozy5ck+HEnrdywGkW7wEvBxtoJsPrAOF1osDrU1oZhbE/PaHnPpnghi9fw40d380BN1m/cGwJEFX5MdxXuxPnoYP8smwlw9VAuDYUuD7geHxHIo6dnG/bOfHNQXi9TahL2N6mwt7PuM0Te3cC8vuIvpTcbiiLtrss9GtK4paB4pkKp7/sbHB6yDU7hlM49L2QFIoT9peKGbe3id7rjpGsJMFL9EtVvOt1oo7Kf7ZzwEeGA4szTUU8Az5ZhhzH1xIcTGFchAvmryPRP1voD/Tn2PXOSBC6vhfHM/pzSFR4fpWjHhkKPcfjnFnxEvPXkfi5KenH4rVqyONDw5SH3yTfk5XXN/ye5ozvCedPZ8SZhwXHmaz0E+LMqWZxZln1E+KRrvpp56yf9g31k+G58z/ST3uGfkJ5N+c872DK92TfEub3MI9B035pHqOIeUpNyHesCXhaHMOSgMOacP8bfnN/nZ/Y4HhWp89navZi5jOtbt8/jQIKgVxv7xccZ2Ael1WcmdirR5zBOibTVVPib4uKLx/y/jqGmg+bOeEyTe9VOrZoHkF8jfFIg/neMvLoucY8UulwuySfN8yrw5DvnfAplOL1oGAdrtmL8p8wJsS6jPcdczn8iPFiqwA/SotLeQ5czAS4nE/B5alm+iKOqxftZzA/iPvZJFCt/Cy9n+2s/EyKyzca+xmO44Bb05bnc+f1t8dch5m/HZMw7FyQE3dI2h2vd0kkuG0UFM/B/krK8bBq3v6C2y61W4jsOo+LSxrpzEYBOmPeYH6VNZ++oPXJFD5BBFvxKTmfjjTmE9bnf2BfkS3PF8/iVW1GfpHxiuVIMU6bBekx2HtgZTOfrHKbwE6QYJ39ZU0jf9nkv5ct33/T/Fg7o/wY7M8S+Cdkx/TWbd14+OgW81Cl+2Uu+KWMdJ+tIX3A+XjkRddw3ipY99+Z2eg+rJdxO9+PvHX2N0NYOyva37Zy0v15dTprvojjhDFfxjK94ktyvjzWiC957y/G++zR/mJ8+Rp+TkHr9o4QX220bg/XbQHnBr/g3J2+LpSWf4C1yj8Zv9bf43xMor7fa0h4+Ny4HfuNIX8Ws1eD/FHa/cYqfjRTrhuac/BjT4LTs4L5UbUXx489DfiRdp9gXvHrHtcx19uTxq9n/FwR+wTzXL+Y4LCvxOFFjvkxM6N1wn5GfgVxG/tV0XlWXdcJYT7sj6I9FZ++LoBPafMZWfuZgMu+CpfDW5bPmLbOiMeFSdcZrTni/r4E789v8bhwfwnHhf8FAAD//wVxl3mYPQAA";
 
   // Deserialize RuntimeTypeInfo
   var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_service.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_service.mojom.dart
index 6e3b6e8..ae05e1b 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_service.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_service.mojom.dart
@@ -2195,7 +2195,7 @@
   // serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
   // a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
   // file. The string contains the base64 encoding of the gzip-compressed bytes.
-  var serializedRuntimeTypeInfo = "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";
+  var serializedRuntimeTypeInfo = "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";
 
   // Deserialize RuntimeTypeInfo
   var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/test/echo_service.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/test/echo_service.mojom.dart
index 743a39a..c3481db 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/test/echo_service.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/test/echo_service.mojom.dart
@@ -694,7 +694,7 @@
   // serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
   // a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
   // file. The string contains the base64 encoding of the gzip-compressed bytes.
-  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xXS2/TQBB2HB6hBcSjSOZxCJzCgW6PUSSkHIhUCQmB4FJxiKxkIUZ+hF27Ejd+Rn8CR34CP6dHjtxgB8/CerILlpXWrZSRptPdeGf3+3YeduCVcgPtF7R0fmiMO0p7OL6r9KbSnMt8NJrMFtlrLg6jGXc8T/3uoX2Ivt4cvJxMn08ORuBwd9Wfy8/YsV9dvwGug/VdY32f7LfolPYz2n2yP8hPJUeET5gD+9WzCz1334LzsjF/W+m2UkTxIkx4rfvQ6+gvAe5B6aE8w/m2lL6FvZWyRZZwJop5lkQpFyzJPmRMiln5zzwUOQuXS/AqGfydqpFkUZpz8S6cccm42msqy812YVFSCwc9l+ZlB+/PQz594/euse7bxdIeXS3tgPj5ru+1W72nfcvdwd3uWebM+KZyC3n8jSwXUfrejusKYjhpvmm8afyB3wz30IH7HmL/i/uJ4B8LdVI7fi0njZ/m39hR93549aQuX1oGjvlrSiFUD8O44I74uHNK/Oic+ldd94w6eppxdR9rWyWu5DJLJd/EVcO4GpzhuKL1WvO3uFD1t6740v3oGY/DT3xOy/YKf1st1W3Nw7DbDP/YgV+/R63gr5bv1vIsQL7/xEfnfOUbxMuDFvLNxo+HZ7VJryE/nf/wc13pJaVJFMeRtPPzuIV6bdYf3xi78q7vrzfvHuE7ky3vjPa26W8N8u3pOepvxwSf37C/ufiCzyBona+KKLfF03ZL/eyY2HV9f+0gZsBrtrC28qhXIz7M534FAAD//4ZAZ4q4EQAA";
+  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xXzW7UMBB2En5CC6hAkcLPYeFUDtQ9Vish7YGVkJAQCC4Vh1WUNWxQfhY7qcSNx+gjcOSReuTIG4BNxuCdtauE0oaV1tLsrJN47O+bvyQizdgC/QU0vr5vzD0pIczvSLkhpWKiGg7Hyax8zfhhmjDH89juHugHYOvNwcvx5Pn4YKgM7i7bc9kZOfZrazeCdWp9YKzfAT0APfMa/Rk0Qftrno4Qnz9gfCX2gc89sOC8bFy/JWVTCqB4EeeslT/0Onwngj0wPZhndb4NKW/V3lLorMwZ5fW0zNOCcZqXH0oqeNL8mca8ovF8rqwKqn4nciZoWlSMv4sTJiiTe01Es9muWpS3woHPpXnZBv8R4NM37gfGuqOL4Lerdj9/0/4P7H4mKH4J8vOew883gb9fiCqeFu/teK7A2c+aZxxnGnfod8O778B7FzD/wfuYs4+1PKEdtx5njRvn28hR576TdqMNT2ac4XFNigrJwzirmSMebp8TLzp3TqrfxKiX5xFH96B2LcSRmJeFYOs46hhHO/9xHOE6rHl7dmHR3mnjSfeXpyyLP7EpLsdLvG30VI81/kHQDffIgVu/Dy3hXizLveVTBDz/riveauSVio/7PeSVjRcCZ7WN8C948U7g5bqUS1LyNMtSYeflUQ912KwvvjF35deW/2/y6yG889jyy2hX637VIa+erFC/Okb4/I79ysWT+kxRLfBVnVa2+NnsqT8dI33a76NtwKpwmi2pr3wJW8SD+dzPAAAA///d7h3UUBEAAA==";
 
   // Deserialize RuntimeTypeInfo
   var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/test/pingpong_service.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/test/pingpong_service.mojom.dart
index bb9910e..5463c64 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/test/pingpong_service.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/test/pingpong_service.mojom.dart
@@ -1231,7 +1231,7 @@
   // serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
   // a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
   // file. The string contains the base64 encoding of the gzip-compressed bytes.
-  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xZy04UTRSu7uEyP/zDRUFHQEBFMxtpEl0QVpMo0URjRsUoq8lkKKGV6W77Qly65BF4BB+Bx/AxWLp0p1X0KSiqq+xm0rcxVHIoqgeq63x1zvedqqmjsE1B/x168fk6N9aIVWF8m9gsMR97/sZGy7R2W7a1+xa7B2YXS/5enHcN+vsw19Z2a7P9YnN7g064Gp1PNY/DPdcl868QW1DO/2TfxJZ/mXU0uPdUhPXQ8dFQOF4W1nvWtLB7jqLtN2ls3U3uGe1bSN5uEJugnwsezZNn12F/JO5GcFwkNkasTew9MWPP7mHDDXbsnmlh1+jZn2zDc7vhLzsd1zc6jkNn9wz6s01GnmFaPnY/drrYMxzyToe8s+2F2K3Sf+xF3svG/59DI423BrqI64kCjzhckYBrQzEPXQ/dSgqbDK8liIOs8RLjiPld1fvzd03h7wz4TP196OIvAVmjzG/WsvZb3P+mhI8Q93lcS4oTEvhDbNcgT06XfNDZD7Ccl5YgL/PGqS5QzRSS85EDyXYo8FFTwOdI0AcWR8cKfMT1LEt4e5R7TjlqnBgw7KtODyfSl5vEJjneY58sQCwr6DuyT9WceC/OH3FdPN+NcPupg85QbhqGfBjh4vVHBfwaDfvjGjyfCftvdTmf/kyJT1V5M03sv9N99jkVivo9VhCvMv/3+uTVdYXft8D3M795ci05v9L4+pURv6p0dwLiuQtBIouP+RzjAwnvX46pu5LWm0l5O67u0bKqe0x53VP7V+se86ruSVT3mH+ve2olq3tUOvcBzml6yjo3CxjQeNrquLvYf/fmpQSn6YJ1bq2Srs6x+uaC31xCFZVP4r1AQ1PnlVaA3o1DPRe4+9J8moZaN4984ttleafaJz5aDD41qEO6dmD5CnzuFcw3OjdW5Vs15bpyEWoQMd88snYPl1+/UM55xs4V9mekzLNHJdYtxkvHoFsVlM055TyeuEOzBK/ZgvSL4XDYp341Ff7fAQwi/pfkvCbq2FetXOe2SbjXgVVL42WlBOc21b1R0vv/QdFFivfjEusii88pPd08vktsTpHHTBsH4XxXNn2k8fR0APSRtaGU9XEOzsDPsC+5VUbS77WK1Ecno7yK+n9RIK/uMy+ni3T8IMc40TPSxbTuM4czus98HZjSe735gu8zT1A295nU3zLcZ1YV3wvWFXXSnwAAAP///12id5giAAA=";
+  var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xZzVITTxDf3QD//MHwoSAREKKixUWWKj1QnKhSyoOWFRVLOMWtMOJqsrvuB2ePPgKP4CPwKB5z9MjRm86QHp3MTucDN7uLxVQ1y0yyM/Pr6e5fT6estds0PL/CUx7fFPo6lSL0b1KZoxKSINzaqtrOYdV1Dl8R/8iuE8X35Xk34HkX5trdr+7Unu7sb7EJ1+PzYfN4wrihmH+VyhI6/6OGTZxwkH2sCesUpP2w/ueRdn8Nxiua1PTO7rb08YY0/hNaVVO361QmqciIFunYNTgfBdyYHpepjFOpUXlDxXzvNonpRwdu03aIbzbdD64Z+PX2PweWH5qW57HZA5P9rdFeYNpOSPx3Vp0EpkfX9OiataCtu3X2YjO2Lu9fkVQj24+szxaiD0yfmqTPNeR9tg92hExdKj2twPkPW08VST8c7w99MJwbCM5ZwMpw3vfJp4juTYWXt2Hjlc97WxF/NOHzXq0f/ajGebsK/nC21SOrERF1/FkB/0tbP2UppEwjfuKBvXxB4g7X77HEA9x+ThD9yPupKOLzf8I4i0UTVCCSPreapC8emacyJcQ3/skS2DASpmPnVEwpvvXCI+9LPK8x4TwN4BMWi0bhnMYEez0ptJ/f4KW9EpzrLIzPq+3h+1/GTcxfZqj8f3a+ocAycbzjGcVPjnvPGAzvJoL3BmD+jVcMojmPo8yeThOOoxifToLd1sEoVPawmKI9aNL6lR55VL/543njcwtJDxPLY2x1HlP61/IY+zKP6ZrH2N3zmFLO8xgevzfhfmUkxFtzgJ3Zz67lH5Lw9ctnCv3MZMxb5UIyvMXzkw68guNk5Tfy/b2i4/6jp8hfE5CHRX5D6TczkKOm4Tfd8vdecaV4Dr3oXfRSgjyi7kZOiOjlTsbxxBD6mF8NykOYXy1DDiH7VUD3HJD885GWkj/x/N/9qKH+9CDHPMTjzjHwUEFL9j7xx36Ey6xCT3MZ8RHH7w3IR9sI7luAPYY7J/cpmZc8PR/3qimor8BulfaxmoN7FVa/6bfenneeY3p+mGOeOxW/lIC/3qaygPgr57qLcP/KC98x+3l8AfiOt5GE+G4B7qZPSKio3mrK34my5Lu3CftPHHcn4V3WD/vjOda/l6JdGEPiuaTqh6MJ1w9fRLaynraYcf2wpSVbP2Q481A/LCK/r5WRPOdXAAAA///ipr9cyCEAAA==";
 
   // Deserialize RuntimeTypeInfo
   var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/mojo/lib/mojo/bindings/types/mojom_types.mojom.dart b/mojo/dart/packages/mojo/lib/mojo/bindings/types/mojom_types.mojom.dart
index db07e9e..1da6414 100644
--- a/mojo/dart/packages/mojo/lib/mojo/bindings/types/mojom_types.mojom.dart
+++ b/mojo/dart/packages/mojo/lib/mojo/bindings/types/mojom_types.mojom.dart
@@ -1211,6 +1211,7 @@
   DeclarationData declData = null;
   Type type = null;
   int tag = 0;
+  int minVersion = 0;
 
   UnionField() : super(kVersions.last.size);
 
@@ -1264,6 +1265,10 @@
       
       result.tag = decoder0.decodeUint32(32);
     }
+    if (mainDataHeader.version >= 0) {
+      
+      result.minVersion = decoder0.decodeUint32(36);
+    }
     return result;
   }
 
@@ -1290,13 +1295,21 @@
           "tag of struct UnionField: $e";
       rethrow;
     }
+    try {
+      encoder0.encodeUint32(minVersion, 36);
+    } on bindings.MojoCodecError catch(e) {
+      e.message = "Error encountered while encoding field "
+          "minVersion of struct UnionField: $e";
+      rethrow;
+    }
   }
 
   String toString() {
     return "UnionField("
            "declData: $declData" ", "
            "type: $type" ", "
-           "tag: $tag" ")";
+           "tag: $tag" ", "
+           "minVersion: $minVersion" ")";
   }
 
   Map toJson() {
@@ -1304,6 +1317,7 @@
     map["declData"] = declData;
     map["type"] = type;
     map["tag"] = tag;
+    map["minVersion"] = minVersion;
     return map;
   }
 }
@@ -1420,6 +1434,7 @@
   String enumTypeKey = null;
   Value initializerValue = null;
   int intValue = 0;
+  int minVersion = 0;
 
   EnumValue() : super(kVersions.last.size);
 
@@ -1473,6 +1488,10 @@
       
       result.intValue = decoder0.decodeInt32(40);
     }
+    if (mainDataHeader.version >= 0) {
+      
+      result.minVersion = decoder0.decodeUint32(44);
+    }
     return result;
   }
 
@@ -1506,6 +1525,13 @@
           "intValue of struct EnumValue: $e";
       rethrow;
     }
+    try {
+      encoder0.encodeUint32(minVersion, 44);
+    } on bindings.MojoCodecError catch(e) {
+      e.message = "Error encountered while encoding field "
+          "minVersion of struct EnumValue: $e";
+      rethrow;
+    }
   }
 
   String toString() {
@@ -1513,7 +1539,8 @@
            "declData: $declData" ", "
            "enumTypeKey: $enumTypeKey" ", "
            "initializerValue: $initializerValue" ", "
-           "intValue: $intValue" ")";
+           "intValue: $intValue" ", "
+           "minVersion: $minVersion" ")";
   }
 
   Map toJson() {
@@ -1522,6 +1549,7 @@
     map["enumTypeKey"] = enumTypeKey;
     map["initializerValue"] = initializerValue;
     map["intValue"] = intValue;
+    map["minVersion"] = minVersion;
     return map;
   }
 }
@@ -1638,6 +1666,7 @@
   MojomStruct parameters = null;
   MojomStruct responseParams = null;
   int ordinal = 0;
+  int minVersion = 0;
 
   MojomMethod() : super(kVersions.last.size);
 
@@ -1693,6 +1722,10 @@
       
       result.ordinal = decoder0.decodeUint32(32);
     }
+    if (mainDataHeader.version >= 0) {
+      
+      result.minVersion = decoder0.decodeUint32(36);
+    }
     return result;
   }
 
@@ -1726,6 +1759,13 @@
           "ordinal of struct MojomMethod: $e";
       rethrow;
     }
+    try {
+      encoder0.encodeUint32(minVersion, 36);
+    } on bindings.MojoCodecError catch(e) {
+      e.message = "Error encountered while encoding field "
+          "minVersion of struct MojomMethod: $e";
+      rethrow;
+    }
   }
 
   String toString() {
@@ -1733,7 +1773,8 @@
            "declData: $declData" ", "
            "parameters: $parameters" ", "
            "responseParams: $responseParams" ", "
-           "ordinal: $ordinal" ")";
+           "ordinal: $ordinal" ", "
+           "minVersion: $minVersion" ")";
   }
 
   Map toJson() {
@@ -1742,6 +1783,7 @@
     map["parameters"] = parameters;
     map["responseParams"] = responseParams;
     map["ordinal"] = ordinal;
+    map["minVersion"] = minVersion;
     return map;
   }
 }
@@ -1749,11 +1791,12 @@
 
 class MojomInterface extends bindings.Struct {
   static const List<bindings.StructDataHeader> kVersions = const [
-    const bindings.StructDataHeader(32, 0)
+    const bindings.StructDataHeader(40, 0)
   ];
   DeclarationData declData = null;
   String serviceName_ = null;
   Map<int, MojomMethod> methods = null;
+  int currentVersion = 0;
 
   MojomInterface() : super(kVersions.last.size);
 
@@ -1827,6 +1870,10 @@
             keys0, values0);
       }
     }
+    if (mainDataHeader.version >= 0) {
+      
+      result.currentVersion = decoder0.decodeUint32(32);
+    }
     return result;
   }
 
@@ -1867,13 +1914,21 @@
           "methods of struct MojomInterface: $e";
       rethrow;
     }
+    try {
+      encoder0.encodeUint32(currentVersion, 32);
+    } on bindings.MojoCodecError catch(e) {
+      e.message = "Error encountered while encoding field "
+          "currentVersion of struct MojomInterface: $e";
+      rethrow;
+    }
   }
 
   String toString() {
     return "MojomInterface("
            "declData: $declData" ", "
            "serviceName_: $serviceName_" ", "
-           "methods: $methods" ")";
+           "methods: $methods" ", "
+           "currentVersion: $currentVersion" ")";
   }
 
   Map toJson() {
@@ -1881,6 +1936,7 @@
     map["declData"] = declData;
     map["serviceName_"] = serviceName_;
     map["methods"] = methods;
+    map["currentVersion"] = currentVersion;
     return map;
   }
 }
@@ -1888,11 +1944,10 @@
 
 class UserValueReference extends bindings.Struct {
   static const List<bindings.StructDataHeader> kVersions = const [
-    const bindings.StructDataHeader(40, 0)
+    const bindings.StructDataHeader(24, 0)
   ];
   String identifier = null;
   String valueKey = null;
-  Value resolvedConcreteValue = null;
 
   UserValueReference() : super(kVersions.last.size);
 
@@ -1937,10 +1992,6 @@
       
       result.valueKey = decoder0.decodeString(16, true);
     }
-    if (mainDataHeader.version >= 0) {
-      
-        result.resolvedConcreteValue = Value.decode(decoder0, 24);
-    }
     return result;
   }
 
@@ -1960,27 +2011,18 @@
           "valueKey of struct UserValueReference: $e";
       rethrow;
     }
-    try {
-      encoder0.encodeUnion(resolvedConcreteValue, 24, true);
-    } on bindings.MojoCodecError catch(e) {
-      e.message = "Error encountered while encoding field "
-          "resolvedConcreteValue of struct UserValueReference: $e";
-      rethrow;
-    }
   }
 
   String toString() {
     return "UserValueReference("
            "identifier: $identifier" ", "
-           "valueKey: $valueKey" ", "
-           "resolvedConcreteValue: $resolvedConcreteValue" ")";
+           "valueKey: $valueKey" ")";
   }
 
   Map toJson() {
     Map map = new Map();
     map["identifier"] = identifier;
     map["valueKey"] = valueKey;
-    map["resolvedConcreteValue"] = resolvedConcreteValue;
     return map;
   }
 }
@@ -2187,13 +2229,12 @@
 
 class DeclarationData extends bindings.Struct {
   static const List<bindings.StructDataHeader> kVersions = const [
-    const bindings.StructDataHeader(72, 0)
+    const bindings.StructDataHeader(64, 0)
   ];
   List<Attribute> attributes = null;
-  int minVersion = -1;
-  int declaredOrdinal = -1;
   String shortName = null;
   String fullIdentifier = null;
+  int declaredOrdinal = -1;
   int declarationOrder = -1;
   SourceFileInfo sourceFileInfo = null;
   ContainedDeclarations containedDeclarations = null;
@@ -2251,37 +2292,33 @@
     }
     if (mainDataHeader.version >= 0) {
       
-      result.minVersion = decoder0.decodeInt32(16);
+      result.shortName = decoder0.decodeString(16, true);
     }
     if (mainDataHeader.version >= 0) {
       
-      result.declaredOrdinal = decoder0.decodeInt32(20);
+      result.fullIdentifier = decoder0.decodeString(24, true);
     }
     if (mainDataHeader.version >= 0) {
       
-      result.shortName = decoder0.decodeString(24, true);
+      result.declaredOrdinal = decoder0.decodeInt32(32);
     }
     if (mainDataHeader.version >= 0) {
       
-      result.fullIdentifier = decoder0.decodeString(32, true);
+      result.declarationOrder = decoder0.decodeInt32(36);
     }
     if (mainDataHeader.version >= 0) {
       
-      result.declarationOrder = decoder0.decodeInt32(40);
-    }
-    if (mainDataHeader.version >= 0) {
-      
-      var decoder1 = decoder0.decodePointer(48, true);
+      var decoder1 = decoder0.decodePointer(40, true);
       result.sourceFileInfo = SourceFileInfo.decode(decoder1);
     }
     if (mainDataHeader.version >= 0) {
       
-      var decoder1 = decoder0.decodePointer(56, true);
+      var decoder1 = decoder0.decodePointer(48, true);
       result.containedDeclarations = ContainedDeclarations.decode(decoder1);
     }
     if (mainDataHeader.version >= 0) {
       
-      result.containerTypeKey = decoder0.decodeString(64, true);
+      result.containerTypeKey = decoder0.decodeString(56, true);
     }
     return result;
   }
@@ -2303,56 +2340,49 @@
       rethrow;
     }
     try {
-      encoder0.encodeInt32(minVersion, 16);
-    } on bindings.MojoCodecError catch(e) {
-      e.message = "Error encountered while encoding field "
-          "minVersion of struct DeclarationData: $e";
-      rethrow;
-    }
-    try {
-      encoder0.encodeInt32(declaredOrdinal, 20);
-    } on bindings.MojoCodecError catch(e) {
-      e.message = "Error encountered while encoding field "
-          "declaredOrdinal of struct DeclarationData: $e";
-      rethrow;
-    }
-    try {
-      encoder0.encodeString(shortName, 24, true);
+      encoder0.encodeString(shortName, 16, true);
     } on bindings.MojoCodecError catch(e) {
       e.message = "Error encountered while encoding field "
           "shortName of struct DeclarationData: $e";
       rethrow;
     }
     try {
-      encoder0.encodeString(fullIdentifier, 32, true);
+      encoder0.encodeString(fullIdentifier, 24, true);
     } on bindings.MojoCodecError catch(e) {
       e.message = "Error encountered while encoding field "
           "fullIdentifier of struct DeclarationData: $e";
       rethrow;
     }
     try {
-      encoder0.encodeInt32(declarationOrder, 40);
+      encoder0.encodeInt32(declaredOrdinal, 32);
+    } on bindings.MojoCodecError catch(e) {
+      e.message = "Error encountered while encoding field "
+          "declaredOrdinal of struct DeclarationData: $e";
+      rethrow;
+    }
+    try {
+      encoder0.encodeInt32(declarationOrder, 36);
     } on bindings.MojoCodecError catch(e) {
       e.message = "Error encountered while encoding field "
           "declarationOrder of struct DeclarationData: $e";
       rethrow;
     }
     try {
-      encoder0.encodeStruct(sourceFileInfo, 48, true);
+      encoder0.encodeStruct(sourceFileInfo, 40, true);
     } on bindings.MojoCodecError catch(e) {
       e.message = "Error encountered while encoding field "
           "sourceFileInfo of struct DeclarationData: $e";
       rethrow;
     }
     try {
-      encoder0.encodeStruct(containedDeclarations, 56, true);
+      encoder0.encodeStruct(containedDeclarations, 48, true);
     } on bindings.MojoCodecError catch(e) {
       e.message = "Error encountered while encoding field "
           "containedDeclarations of struct DeclarationData: $e";
       rethrow;
     }
     try {
-      encoder0.encodeString(containerTypeKey, 64, true);
+      encoder0.encodeString(containerTypeKey, 56, true);
     } on bindings.MojoCodecError catch(e) {
       e.message = "Error encountered while encoding field "
           "containerTypeKey of struct DeclarationData: $e";
@@ -2363,10 +2393,9 @@
   String toString() {
     return "DeclarationData("
            "attributes: $attributes" ", "
-           "minVersion: $minVersion" ", "
-           "declaredOrdinal: $declaredOrdinal" ", "
            "shortName: $shortName" ", "
            "fullIdentifier: $fullIdentifier" ", "
+           "declaredOrdinal: $declaredOrdinal" ", "
            "declarationOrder: $declarationOrder" ", "
            "sourceFileInfo: $sourceFileInfo" ", "
            "containedDeclarations: $containedDeclarations" ", "
@@ -2376,10 +2405,9 @@
   Map toJson() {
     Map map = new Map();
     map["attributes"] = attributes;
-    map["minVersion"] = minVersion;
-    map["declaredOrdinal"] = declaredOrdinal;
     map["shortName"] = shortName;
     map["fullIdentifier"] = fullIdentifier;
+    map["declaredOrdinal"] = declaredOrdinal;
     map["declarationOrder"] = declarationOrder;
     map["sourceFileInfo"] = sourceFileInfo;
     map["containedDeclarations"] = containedDeclarations;
diff --git a/mojo/public/interfaces/bindings/mojom_types.mojom b/mojo/public/interfaces/bindings/mojom_types.mojom
index c4ea2a3..e59e080 100644
--- a/mojo/public/interfaces/bindings/mojom_types.mojom
+++ b/mojo/public/interfaces/bindings/mojom_types.mojom
@@ -41,7 +41,7 @@
  * file. A |Value| may be a LiteralValue, a UserValueReference or a
  * BuiltinConstantValue. Similarly to the situation with TypeReferences,
  * UserValueReferences contain a |value_key| which may be used to lookup
- * a UserDefinedValue (an EnumValue or a UserDefinedConstant) in
+ * a UserDefinedValue (an EnumValue or a DeclaredConstant) in
  * the owning context. For example the |MojomFileGraph| struct in
  * mojom_files.mojom contains the map:
  *     map<string, UserDefinedValue> resolved_values;
@@ -226,6 +226,10 @@
 
   Type type;
   uint32 tag;
+
+  // The minimum version of the containing union that includes this field.
+  // The earliest version is version 0.
+  uint32 min_version;
 };
 
 struct MojomUnion {
@@ -244,14 +248,20 @@
 
   // This is the value specified in the right-hand-side of the optional
   // initializer of an enum value declaration. The value must be a literal value
-  // of integer type or a UserValueReference whose |resolved_concrete_value| is
-  // one of those.
+  // of integer type or a UserValueReference that resolves to a different
+  // EnumValue from the same enum that was defined earlier lexically,
+  // or a UserValueReference that resolves to
+  // a DeclaredConstant whose |resolved_concrete_value| is one of those.
   Value? initializer_value;
 
   // The resolved concrete integer value corresponding to this enum value.
   // This number is computed based on the |specified_value|s of all of the
   // EnumValues in a MojomEnum.
   int32 int_value;
+
+  // The minimum version of the containing MojomEnum that includes this value.
+  // The earliest version is version 0.
+  uint32 min_version;
 };
 
 struct MojomEnum {
@@ -272,6 +282,10 @@
   MojomStruct? response_params;
 
   uint32 ordinal;
+
+  // The minimum version of the containing interface that includes this method.
+  // The earliest version is version 0.
+  uint32 min_version;
 };
 
 struct MojomInterface {
@@ -289,6 +303,14 @@
 
   // All the methods in the interface. The keys are the method ordinals.
   map<uint32, MojomMethod> methods;
+
+  // This value is the least integer that is at least as great as all of the
+  // |min_version| fields in all of the methods and parameters in this
+  // interface. In more detail it is the maximum of the |min_version| fields of
+  // each MojomMethod  in this interface, and the |min_version| fields of each
+  // StructField of each MojomStruct in the |params| and |response_params|
+  // fields of each MojomMethod in this interface.
+  uint32 current_version;
 };
 
 ////////////////////////////////////////////////////////////////////////////
@@ -343,18 +365,6 @@
   // an instance of |UserDefinedValue| and so an EnumValue or
   // DeclaredConstant.
   string? value_key;
-
-  // The resolved concrete value. This must be a LiteralValue or a
-  // BuiltinConstantValue, not a UserValueReference. The resolved
-  // concrete value is defined as follows: If |value_key| refers to an
-  // EnumValue then |resolved_concrete_value| is the |int_value| of that
-  // EnumValue. If |value_key| referes to a DeclaredConstant then
-  // |resolved_concrete_value| is defined recursively to be the resolved
-  // concrete value of the DeclaredConstant's |value|.
-
-  // This field is not-populated and should not be read. It will be removed
-  // in the future. See DeclaredConstant.resolved_concrete_value.
-  Value? resolved_concrete_value;
 };
 
 union UserDefinedValue {
@@ -410,10 +420,6 @@
 struct DeclarationData {
   array<Attribute>? attributes;
 
-  // The value of the "MinVersion" attribute, if any. This field is
-  // for convenience as it can also be parsed from the |attributes| field.
-  int32 min_version = -1;  // Negative value means unset.
-
   string? short_name;  // Some implementations may not provide names.
 
   // The fully-qualified identifier is the concatenation of the names of the
diff --git a/mojo/public/tools/bindings/mojom_tool/bin/linux64/mojom.sha1 b/mojo/public/tools/bindings/mojom_tool/bin/linux64/mojom.sha1
index 0b39bc6..4952393 100644
--- a/mojo/public/tools/bindings/mojom_tool/bin/linux64/mojom.sha1
+++ b/mojo/public/tools/bindings/mojom_tool/bin/linux64/mojom.sha1
@@ -1 +1 @@
-ea7789ed2e25308eeee9daa0624a7dd97991e9ae
\ No newline at end of file
+00275e21b9c3e14f465978b554b1ed86caabc0f8
\ No newline at end of file
diff --git a/mojo/public/tools/bindings/mojom_tool/bin/mac64/mojom.sha1 b/mojo/public/tools/bindings/mojom_tool/bin/mac64/mojom.sha1
index 4d7de93..84fff12 100644
--- a/mojo/public/tools/bindings/mojom_tool/bin/mac64/mojom.sha1
+++ b/mojo/public/tools/bindings/mojom_tool/bin/mac64/mojom.sha1
@@ -1 +1 @@
-1f12ea6dbe9b5c08c5591313028146537a89ac47
\ No newline at end of file
+caeaa3ab26d1b0dcb05a9bd05f2461e0789498db
\ No newline at end of file
diff --git a/mojo/public/tools/bindings/pylib/mojom/generate/generated/mojom_types_mojom.py b/mojo/public/tools/bindings/pylib/mojom/generate/generated/mojom_types_mojom.py
index 787c694..f9a829f 100644
--- a/mojo/public/tools/bindings/pylib/mojom/generate/generated/mojom_types_mojom.py
+++ b/mojo/public/tools/bindings/pylib/mojom/generate/generated/mojom_types_mojom.py
@@ -133,6 +133,7 @@
       _descriptor.SingleFieldGroup('decl_data', _descriptor.StructType(lambda: DeclarationData, nullable=True), 0, 0),
       _descriptor.SingleFieldGroup('type', _descriptor.UnionType(lambda: Type), 1, 0),
       _descriptor.SingleFieldGroup('tag', _descriptor.TYPE_UINT32, 2, 0),
+      _descriptor.SingleFieldGroup('min_version', _descriptor.TYPE_UINT32, 3, 0),
     ],
   }
 
@@ -153,6 +154,7 @@
       _descriptor.SingleFieldGroup('enum_type_key', _descriptor.TYPE_STRING, 1, 0),
       _descriptor.SingleFieldGroup('initializer_value', _descriptor.UnionType(lambda: Value, nullable=True), 2, 0),
       _descriptor.SingleFieldGroup('int_value', _descriptor.TYPE_INT32, 3, 0),
+      _descriptor.SingleFieldGroup('min_version', _descriptor.TYPE_UINT32, 4, 0),
     ],
   }
 
@@ -173,6 +175,7 @@
       _descriptor.SingleFieldGroup('parameters', _descriptor.StructType(lambda: MojomStruct), 1, 0),
       _descriptor.SingleFieldGroup('response_params', _descriptor.StructType(lambda: MojomStruct, nullable=True), 2, 0),
       _descriptor.SingleFieldGroup('ordinal', _descriptor.TYPE_UINT32, 3, 0),
+      _descriptor.SingleFieldGroup('min_version', _descriptor.TYPE_UINT32, 4, 0),
     ],
   }
 
@@ -183,6 +186,7 @@
       _descriptor.SingleFieldGroup('decl_data', _descriptor.StructType(lambda: DeclarationData, nullable=True), 0, 0),
       _descriptor.SingleFieldGroup('service_name', _descriptor.TYPE_NULLABLE_STRING, 1, 0),
       _descriptor.SingleFieldGroup('methods', _descriptor.MapType(_descriptor.TYPE_UINT32, _descriptor.StructType(lambda: MojomMethod)), 2, 0),
+      _descriptor.SingleFieldGroup('current_version', _descriptor.TYPE_UINT32, 3, 0),
     ],
   }
 
@@ -192,7 +196,6 @@
     'fields': [
       _descriptor.SingleFieldGroup('identifier', _descriptor.TYPE_STRING, 0, 0),
       _descriptor.SingleFieldGroup('value_key', _descriptor.TYPE_NULLABLE_STRING, 1, 0),
-      _descriptor.SingleFieldGroup('resolved_concrete_value', _descriptor.UnionType(lambda: Value, nullable=True), 2, 0),
     ],
   }
 
@@ -220,14 +223,13 @@
   DESCRIPTOR = {
     'fields': [
       _descriptor.SingleFieldGroup('attributes', _descriptor.GenericArrayType(_descriptor.StructType(lambda: Attribute), nullable=True), 0, 0),
-      _descriptor.SingleFieldGroup('min_version', _descriptor.TYPE_INT32, 1, 0, default_value=-1),
-      _descriptor.SingleFieldGroup('declared_ordinal', _descriptor.TYPE_INT32, 4, 0, default_value=-1),
-      _descriptor.SingleFieldGroup('short_name', _descriptor.TYPE_NULLABLE_STRING, 2, 0),
-      _descriptor.SingleFieldGroup('full_identifier', _descriptor.TYPE_NULLABLE_STRING, 3, 0),
-      _descriptor.SingleFieldGroup('declaration_order', _descriptor.TYPE_INT32, 5, 0, default_value=-1),
-      _descriptor.SingleFieldGroup('source_file_info', _descriptor.StructType(lambda: SourceFileInfo, nullable=True), 6, 0),
-      _descriptor.SingleFieldGroup('contained_declarations', _descriptor.StructType(lambda: ContainedDeclarations, nullable=True), 7, 0),
-      _descriptor.SingleFieldGroup('container_type_key', _descriptor.TYPE_NULLABLE_STRING, 8, 0),
+      _descriptor.SingleFieldGroup('short_name', _descriptor.TYPE_NULLABLE_STRING, 1, 0),
+      _descriptor.SingleFieldGroup('full_identifier', _descriptor.TYPE_NULLABLE_STRING, 2, 0),
+      _descriptor.SingleFieldGroup('declared_ordinal', _descriptor.TYPE_INT32, 3, 0, default_value=-1),
+      _descriptor.SingleFieldGroup('declaration_order', _descriptor.TYPE_INT32, 4, 0, default_value=-1),
+      _descriptor.SingleFieldGroup('source_file_info', _descriptor.StructType(lambda: SourceFileInfo, nullable=True), 5, 0),
+      _descriptor.SingleFieldGroup('contained_declarations', _descriptor.StructType(lambda: ContainedDeclarations, nullable=True), 6, 0),
+      _descriptor.SingleFieldGroup('container_type_key', _descriptor.TYPE_NULLABLE_STRING, 7, 0),
     ],
   }
 
diff --git a/mojom/mojom_parser/generated/mojom_types/mojom_types.mojom.go b/mojom/mojom_parser/generated/mojom_types/mojom_types.mojom.go
index ae44b6d..052d13e 100644
--- a/mojom/mojom_parser/generated/mojom_types/mojom_types.mojom.go
+++ b/mojom/mojom_parser/generated/mojom_types/mojom_types.mojom.go
@@ -870,6 +870,7 @@
 	DeclData *DeclarationData
 	Type Type
 	Tag uint32
+	MinVersion uint32
 }
 
 
@@ -894,6 +895,9 @@
 	if err := encoder.WriteUint32(s.Tag); err != nil {
 		return err
 	}
+	if err := encoder.WriteUint32(s.MinVersion); err != nil {
+		return err
+	}
 	if err := encoder.Finish(); err != nil {
 		return err
 	}
@@ -954,6 +958,13 @@
 		}
 		s.Tag = value0
 	}
+	if header.ElementsOrVersion >= 0 {
+		value0, err := decoder.ReadUint32()
+		if err != nil {
+			return err
+		}
+		s.MinVersion = value0
+	}
 	if err := decoder.Finish(); err != nil {
 		return err
 	}
@@ -1078,6 +1089,7 @@
 	EnumTypeKey string
 	InitializerValue Value
 	IntValue int32
+	MinVersion uint32
 }
 
 
@@ -1109,6 +1121,9 @@
 	if err := encoder.WriteInt32(s.IntValue); err != nil {
 		return err
 	}
+	if err := encoder.WriteUint32(s.MinVersion); err != nil {
+		return err
+	}
 	if err := encoder.Finish(); err != nil {
 		return err
 	}
@@ -1181,6 +1196,13 @@
 		}
 		s.IntValue = value0
 	}
+	if header.ElementsOrVersion >= 0 {
+		value0, err := decoder.ReadUint32()
+		if err != nil {
+			return err
+		}
+		s.MinVersion = value0
+	}
 	if err := decoder.Finish(); err != nil {
 		return err
 	}
@@ -1305,6 +1327,7 @@
 	Parameters MojomStruct
 	ResponseParams *MojomStruct
 	Ordinal uint32
+	MinVersion uint32
 }
 
 
@@ -1339,6 +1362,9 @@
 	if err := encoder.WriteUint32(s.Ordinal); err != nil {
 		return err
 	}
+	if err := encoder.WriteUint32(s.MinVersion); err != nil {
+		return err
+	}
 	if err := encoder.Finish(); err != nil {
 		return err
 	}
@@ -1416,6 +1442,13 @@
 		}
 		s.Ordinal = value0
 	}
+	if header.ElementsOrVersion >= 0 {
+		value0, err := decoder.ReadUint32()
+		if err != nil {
+			return err
+		}
+		s.MinVersion = value0
+	}
 	if err := decoder.Finish(); err != nil {
 		return err
 	}
@@ -1426,11 +1459,12 @@
 	DeclData *DeclarationData
 	ServiceName *string
 	Methods map[uint32]MojomMethod
+	CurrentVersion uint32
 }
 
 
 func (s *MojomInterface) Encode(encoder *bindings.Encoder) error {
-	encoder.StartStruct(24, 0)
+	encoder.StartStruct(32, 0)
 	if s.DeclData == nil {
 		encoder.WriteNullPointer()
 	} else {
@@ -1504,6 +1538,9 @@
 	if err := encoder.Finish(); err != nil {
 		return err
 	}
+	if err := encoder.WriteUint32(s.CurrentVersion); err != nil {
+		return err
+	}
 	if err := encoder.Finish(); err != nil {
 		return err
 	}
@@ -1511,7 +1548,7 @@
 }
 
 var mojomInterface_Versions []bindings.DataHeader = []bindings.DataHeader{
-	bindings.DataHeader{32, 0},
+	bindings.DataHeader{40, 0},
 }
 
 func (s *MojomInterface) Decode(decoder *bindings.Decoder) error {
@@ -1648,6 +1685,13 @@
 			s.Methods = map0
 		}
 	}
+	if header.ElementsOrVersion >= 0 {
+		value0, err := decoder.ReadUint32()
+		if err != nil {
+			return err
+		}
+		s.CurrentVersion = value0
+	}
 	if err := decoder.Finish(); err != nil {
 		return err
 	}
@@ -1657,12 +1701,11 @@
 type UserValueReference struct {
 	Identifier string
 	ValueKey *string
-	ResolvedConcreteValue Value
 }
 
 
 func (s *UserValueReference) Encode(encoder *bindings.Encoder) error {
-	encoder.StartStruct(32, 0)
+	encoder.StartStruct(16, 0)
 	if err := encoder.WritePointer(); err != nil {
 		return err
 	}
@@ -1679,13 +1722,6 @@
 			return err
 		}
 	}
-	if s.ResolvedConcreteValue == nil {
-		encoder.WriteNullUnion()
-	} else {
-		if err := s.ResolvedConcreteValue.Encode(encoder); err != nil {
-			return err
-		}
-	}
 	if err := encoder.Finish(); err != nil {
 		return err
 	}
@@ -1693,7 +1729,7 @@
 }
 
 var userValueReference_Versions []bindings.DataHeader = []bindings.DataHeader{
-	bindings.DataHeader{40, 0},
+	bindings.DataHeader{24, 0},
 }
 
 func (s *UserValueReference) Decode(decoder *bindings.Decoder) error {
@@ -1746,13 +1782,6 @@
 			(*s.ValueKey) = value0
 		}
 	}
-	if header.ElementsOrVersion >= 0 {
-		var err error
-		s.ResolvedConcreteValue, err = DecodeValue(decoder)
-		if err != nil {
-			return err
-		}
-	}
 	if err := decoder.Finish(); err != nil {
 		return err
 	}
@@ -1936,7 +1965,6 @@
 
 type DeclarationData struct {
 	Attributes *[]Attribute
-	MinVersion int32
 	ShortName *string
 	FullIdentifier *string
 	DeclaredOrdinal int32
@@ -1948,7 +1976,7 @@
 
 
 func (s *DeclarationData) Encode(encoder *bindings.Encoder) error {
-	encoder.StartStruct(64, 0)
+	encoder.StartStruct(56, 0)
 	if s.Attributes == nil {
 		encoder.WriteNullPointer()
 	} else {
@@ -1968,12 +1996,6 @@
 			return err
 		}
 	}
-	if err := encoder.WriteInt32(s.MinVersion); err != nil {
-		return err
-	}
-	if err := encoder.WriteInt32(s.DeclaredOrdinal); err != nil {
-		return err
-	}
 	if s.ShortName == nil {
 		encoder.WriteNullPointer()
 	} else {
@@ -1994,6 +2016,9 @@
 			return err
 		}
 	}
+	if err := encoder.WriteInt32(s.DeclaredOrdinal); err != nil {
+		return err
+	}
 	if err := encoder.WriteInt32(s.DeclarationOrder); err != nil {
 		return err
 	}
@@ -2034,7 +2059,7 @@
 }
 
 var declarationData_Versions []bindings.DataHeader = []bindings.DataHeader{
-	bindings.DataHeader{72, 0},
+	bindings.DataHeader{64, 0},
 }
 
 func (s *DeclarationData) Decode(decoder *bindings.Decoder) error {
@@ -2089,20 +2114,6 @@
 		}
 	}
 	if header.ElementsOrVersion >= 0 {
-		value0, err := decoder.ReadInt32()
-		if err != nil {
-			return err
-		}
-		s.MinVersion = value0
-	}
-	if header.ElementsOrVersion >= 0 {
-		value0, err := decoder.ReadInt32()
-		if err != nil {
-			return err
-		}
-		s.DeclaredOrdinal = value0
-	}
-	if header.ElementsOrVersion >= 0 {
 		pointer0, err := decoder.ReadPointer()
 		if err != nil {
 			return err
@@ -2139,6 +2150,13 @@
 		if err != nil {
 			return err
 		}
+		s.DeclaredOrdinal = value0
+	}
+	if header.ElementsOrVersion >= 0 {
+		value0, err := decoder.ReadInt32()
+		if err != nil {
+			return err
+		}
 		s.DeclarationOrder = value0
 	}
 	if header.ElementsOrVersion >= 0 {
diff --git a/mojom/mojom_parser/serialization/serialization.go b/mojom/mojom_parser/serialization/serialization.go
index 47acd53..cb54e55 100644
--- a/mojom/mojom_parser/serialization/serialization.go
+++ b/mojom/mojom_parser/serialization/serialization.go
@@ -624,7 +624,6 @@
 		return &mojom_types.ValueUserValueReference{mojom_types.UserValueReference{
 			Identifier: r.Identifier(),
 			ValueKey:   valueKey}}
-		// We do not populate ResolvedConcreteValue because it is deprecated.
 	}
 }
 
