Synced with the source at 22ffb5f4dad8f8f171ecebf4f6f73bed68e1de21.