@Override
 public Builder mergeFrom(Message other) {
   if (other instanceof DynamicMessage) {
     // This should be somewhat faster than calling super.mergeFrom().
     DynamicMessage otherDynamicMessage = (DynamicMessage) other;
     if (otherDynamicMessage.type != type) {
       throw new IllegalArgumentException(
           "mergeFrom(Message) can only merge messages of the same type.");
     }
     ensureIsMutable();
     fields.mergeFrom(otherDynamicMessage.fields);
     mergeUnknownFields(otherDynamicMessage.unknownFields);
     for (int i = 0; i < oneofCases.length; i++) {
       if (oneofCases[i] == null) {
         oneofCases[i] = otherDynamicMessage.oneofCases[i];
       } else {
         if ((otherDynamicMessage.oneofCases[i] != null)
             && (oneofCases[i] != otherDynamicMessage.oneofCases[i])) {
           fields.clearField(oneofCases[i]);
           oneofCases[i] = otherDynamicMessage.oneofCases[i];
         }
       }
     }
     return this;
   } else {
     return super.mergeFrom(other);
   }
 }
 public Builder mergeFrom(Message other) {
   if (other instanceof DynamicMessage) {
     // This should be somewhat faster than calling super.mergeFrom().
     DynamicMessage otherDynamicMessage = (DynamicMessage) other;
     if (otherDynamicMessage.type != type) {
       throw new IllegalArgumentException(
           "mergeFrom(Message) can only merge messages of the same type.");
     }
     fields.mergeFrom(otherDynamicMessage.fields);
     mergeUnknownFields(otherDynamicMessage.unknownFields);
     return this;
   } else {
     return super.mergeFrom(other);
   }
 }