(imported from commit 2f9d73431ae40e1b9e9e11bc2f4f62f566ae758a)
(imported from commit ca30e948c158a4a285bcd002d45725ff13d47cc7)