use XS type constraints for Map and Tuple; benchmarking at https://gist.github.com/tobyink/e733f839cecc0dd193a6