i'm a bit concerned about accidental aliasing of values in the resulting hash -- do you think it's worth calling .dup on string and binary values here, to avoid aliasing? we can rely on ruby's copy-on-write String semantics to avoid that causing a lot of large allocations.