(imported from commit 1d21e05af00e9ae37ef38d6e6d56c88e0d764f82)
(imported from commit 0a5d46d5f54fb4c8ebfad8c9adb777c0b4938dfa)