Message existingValue = (Message)fields.get(field);
if (existingValue == null) {
setField(field, entry.getValue());
} else {
setField(field,
existingValue.toBuilder()
.mergeFrom((Message)entry.getValue())
.build());
}
} else {
setField(field, entry.getValue());