Synced with the source at cc8d0ab769829a77b3fa94c2e1df1228877288c6.