merged in bebcf5de5700fa221a8bc51e46263e7fb4082110 from golang/protobuf