Synced with the source at c5aa1b07716f8070fb7cc5b06642248c8db54b50.