Don't truncate "small" things at all.
Limit the amount of time we spend seeing how large something is.
Remove a terminal case it's not possible to hit, and make sure we wrap lim() everywhere we need it.
More tests.
Avoid tuple_to_list/1.
By making lim/2 handle soem more limit_exceeded cases we can simplify everything else. Also only invoke tuple_size/1 once per tuple.
Actually, let's count in bytes rather than words-but-bytes-for-binaries.
Merge bug 26184