(imported from commit 43a9282ad86546fb59e91c36e97a595e51789d07)
(imported from commit a1d4dd22c59f812f0eb4875dc70c89ce96a4b90c)