Synced with the source at 9b14276d5015bc8eacf0894aa5397ab214df053e.