I did not cherry-pick bca4d36d because it's a minor improvement that depends on a major refactoring (686e06c5).