1234567891011121314151617181920212223242526272829303132333435363738394041424344454647openCore_kernelopenPolyletof_writer{Bin_prot.Type_class.write;size}=letwritebuf~posa=letlen=Nat0.of_int_exn(sizea)inletpos=Nat0.bin_write_tbuf~posleninwritebuf~posainletsizea=letlen=Nat0.of_int_exn(sizea)inNat0.bin_size_tlen+((len:Bin_prot.Nat0.t):>int)in{Bin_prot.Type_class.write;size};;letof_type_class(bin_a:_Bin_prot.Type_class.t)=of_writerbin_a.writerlet%test_module_=(modulestructletbigstring_bin_prots=letbigstring=Bin_prot.Utils.bin_dumpBytes.bin_writer_tsinBin_prot.Utils.bin_dumpBigstring.Stable.V1.bin_writer_tbigstring;;letbin_prot_with_lengths=letwriter_with_length=of_writerBytes.bin_writer_tinBin_prot.Utils.bin_dumpwriter_with_lengths;;lettestlen=lets=Bytes.createleninletbigstring_version=bigstring_bin_protsinletwith_length_version=bin_prot_with_lengthsinifBigstring.to_stringbigstring_version<>Bigstring.to_stringwith_length_versionthenfailwithf"mismatch for length %d"len();;let%test_unit_=forlen=0toInt.pow210dotestlendone;forpow=10to20doletx=Int.pow2powintest(x-1);testx;test(x+1);done;;end)