This is the best I got and it works wonders! The problem is that a decoder that decodes dynamic and I don't know how to use it with another decoder
fn decode_pair_properties() {
use pair_list <- decode.then(decode.list(decode_pair()))
pair_list |> dynamic.properties |> decode.success
}
fn decode_pair() {
use a <- decode.field(0, decode.dynamic)
use b <- decode.field(1, decode.dynamic)
decode.success(#(a, b))
}