merged ceb17a4d1e8b995425ba133ad8dc24d3e4efa987 from golang/protobuf