Synced with the source at 7769f1fffcb5881ec45c8b4c6d05a2a688bf8efc.