Reapply r151278 with fixes.