backported from HEAD