@Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 9: {
                double_ = input.readDouble();

                break;
              } // case 9
              case 21: {
                float_ = input.readFloat();

                break;
              } // case 21
              case 24: {
                int32_ = input.readInt32();

                break;
              } // case 24
              case 32: {
                int64_ = input.readInt64();

                break;
              } // case 32
              case 40: {
                uint32_ = input.readUInt32();

                break;
              } // case 40
              case 48: {
                uint64_ = input.readUInt64();

                break;
              } // case 48
              case 56: {
                sint32_ = input.readSInt32();

                break;
              } // case 56
              case 64: {
                sint64_ = input.readSInt64();

                break;
              } // case 64
              case 77: {
                fixed32_ = input.readFixed32();

                break;
              } // case 77
              case 81: {
                fixed64_ = input.readFixed64();

                break;
              } // case 81
              case 93: {
                sfixed32_ = input.readSFixed32();

                break;
              } // case 93
              case 97: {
                sfixed64_ = input.readSFixed64();

                break;
              } // case 97
              case 104: {
                bool_ = input.readBool();

                break;
              } // case 104
              case 114: {
                string_ = input.readStringRequireUtf8();

                break;
              } // case 114
              case 122: {
                bytesType_ = input.readBytes();

                break;
              } // case 122
              case 130: {
                input.readMessage(
                    getCardFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 130
              case 138: {
                DriverCard m =
                    input.readMessage(
                        DriverCard.parser(),
                        extensionRegistry);
                if (cardsBuilder_ == null) {
                  ensureCardsIsMutable();
                  cards_.add(m);
                } else {
                  cardsBuilder_.addMessage(m);
                }
                break;
              } // case 138
              case 146: {
                com.google.protobuf.MapEntry<String, DriverCard>
                cardsmap__ = input.readMessage(
                    CardsmapDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableCardsmap().getMutableMap().put(
                    cardsmap__.getKey(), cardsmap__.getValue());
                break;
              } // case 146
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
Protobuf type {@code com.alibaba.fastjson2.dubbo.GooglePBRequestType}
core/src/test/java/com/alibaba/fastjson2/dubbo/GoogleProtobufBasic.java