/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: TestMsg.proto

package org.apache.pulsar.sql.presto.decoder.protobufnative;

public final class TestMsg {
  private TestMsg() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * Protobuf enum {@code proto.TestEnum}
   */
  public enum TestEnum
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SHARED = 0;</code>
     */
    SHARED(0),
    /**
     * <code>FAILOVER = 1;</code>
     */
    FAILOVER(1),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>SHARED = 0;</code>
     */
    public static final int SHARED_VALUE = 0;
    /**
     * <code>FAILOVER = 1;</code>
     */
    public static final int FAILOVER_VALUE = 1;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static TestEnum valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static TestEnum forNumber(int value) {
      switch (value) {
        case 0: return SHARED;
        case 1: return FAILOVER;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<TestEnum>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        TestEnum> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<TestEnum>() {
            public TestEnum findValueByNumber(int number) {
              return TestEnum.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.getDescriptor().getEnumTypes().get(0);
    }

    private static final TestEnum[] VALUES = values();

    public static TestEnum valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private TestEnum(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:proto.TestEnum)
  }

  public interface SubMessageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:proto.SubMessage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string foo = 1;</code>
     * @return The foo.
     */
    java.lang.String getFoo();
    /**
     * <code>string foo = 1;</code>
     * @return The bytes for foo.
     */
    com.google.protobuf.ByteString
        getFooBytes();

    /**
     * <code>double bar = 2;</code>
     * @return The bar.
     */
    double getBar();

    /**
     * <code>.proto.SubMessage.NestedMessage nestedMessage = 3;</code>
     * @return Whether the nestedMessage field is set.
     */
    boolean hasNestedMessage();
    /**
     * <code>.proto.SubMessage.NestedMessage nestedMessage = 3;</code>
     * @return The nestedMessage.
     */
    org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage getNestedMessage();
    /**
     * <code>.proto.SubMessage.NestedMessage nestedMessage = 3;</code>
     */
    org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessageOrBuilder getNestedMessageOrBuilder();
  }
  /**
   * Protobuf type {@code proto.SubMessage}
   */
  public static final class SubMessage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:proto.SubMessage)
      SubMessageOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SubMessage.newBuilder() to construct.
    private SubMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SubMessage() {
      foo_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SubMessage();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SubMessage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              foo_ = s;
              break;
            }
            case 17: {

              bar_ = input.readDouble();
              break;
            }
            case 26: {
              org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage.Builder subBuilder = null;
              if (nestedMessage_ != null) {
                subBuilder = nestedMessage_.toBuilder();
              }
              nestedMessage_ = input.readMessage(org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(nestedMessage_);
                nestedMessage_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.internal_static_proto_SubMessage_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.internal_static_proto_SubMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.class, org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.Builder.class);
    }

    public interface NestedMessageOrBuilder extends
        // @@protoc_insertion_point(interface_extends:proto.SubMessage.NestedMessage)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>string title = 1;</code>
       * @return The title.
       */
      java.lang.String getTitle();
      /**
       * <code>string title = 1;</code>
       * @return The bytes for title.
       */
      com.google.protobuf.ByteString
          getTitleBytes();

      /**
       * <code>repeated string urls = 2;</code>
       * @return A list containing the urls.
       */
      java.util.List<java.lang.String>
          getUrlsList();
      /**
       * <code>repeated string urls = 2;</code>
       * @return The count of urls.
       */
      int getUrlsCount();
      /**
       * <code>repeated string urls = 2;</code>
       * @param index The index of the element to return.
       * @return The urls at the given index.
       */
      java.lang.String getUrls(int index);
      /**
       * <code>repeated string urls = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the urls at the given index.
       */
      com.google.protobuf.ByteString
          getUrlsBytes(int index);
    }
    /**
     * Protobuf type {@code proto.SubMessage.NestedMessage}
     */
    public static final class NestedMessage extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:proto.SubMessage.NestedMessage)
        NestedMessageOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use NestedMessage.newBuilder() to construct.
      private NestedMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private NestedMessage() {
        title_ = "";
        urls_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new NestedMessage();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private NestedMessage(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                java.lang.String s = input.readStringRequireUtf8();

                title_ = s;
                break;
              }
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();
                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                  urls_ = new com.google.protobuf.LazyStringArrayList();
                  mutable_bitField0_ |= 0x00000001;
                }
                urls_.add(s);
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000001) != 0)) {
            urls_ = urls_.getUnmodifiableView();
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.internal_static_proto_SubMessage_NestedMessage_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.internal_static_proto_SubMessage_NestedMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage.class, org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage.Builder.class);
      }

      public static final int TITLE_FIELD_NUMBER = 1;
      private volatile java.lang.Object title_;
      /**
       * <code>string title = 1;</code>
       * @return The title.
       */
      @java.lang.Override
      public java.lang.String getTitle() {
        java.lang.Object ref = title_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          title_ = s;
          return s;
        }
      }
      /**
       * <code>string title = 1;</code>
       * @return The bytes for title.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getTitleBytes() {
        java.lang.Object ref = title_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          title_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int URLS_FIELD_NUMBER = 2;
      private com.google.protobuf.LazyStringList urls_;
      /**
       * <code>repeated string urls = 2;</code>
       * @return A list containing the urls.
       */
      public com.google.protobuf.ProtocolStringList
          getUrlsList() {
        return urls_;
      }
      /**
       * <code>repeated string urls = 2;</code>
       * @return The count of urls.
       */
      public int getUrlsCount() {
        return urls_.size();
      }
      /**
       * <code>repeated string urls = 2;</code>
       * @param index The index of the element to return.
       * @return The urls at the given index.
       */
      public java.lang.String getUrls(int index) {
        return urls_.get(index);
      }
      /**
       * <code>repeated string urls = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the urls at the given index.
       */
      public com.google.protobuf.ByteString
          getUrlsBytes(int index) {
        return urls_.getByteString(index);
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!getTitleBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, title_);
        }
        for (int i = 0; i < urls_.size(); i++) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, urls_.getRaw(i));
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (!getTitleBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, title_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < urls_.size(); i++) {
            dataSize += computeStringSizeNoTag(urls_.getRaw(i));
          }
          size += dataSize;
          size += 1 * getUrlsList().size();
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage)) {
          return super.equals(obj);
        }
        org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage other = (org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage) obj;

        if (!getTitle()
            .equals(other.getTitle())) return false;
        if (!getUrlsList()
            .equals(other.getUrlsList())) return false;
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + TITLE_FIELD_NUMBER;
        hash = (53 * hash) + getTitle().hashCode();
        if (getUrlsCount() > 0) {
          hash = (37 * hash) + URLS_FIELD_NUMBER;
          hash = (53 * hash) + getUrlsList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code proto.SubMessage.NestedMessage}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:proto.SubMessage.NestedMessage)
          org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessageOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.internal_static_proto_SubMessage_NestedMessage_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.internal_static_proto_SubMessage_NestedMessage_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage.class, org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage.Builder.class);
        }

        // Construct using org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          title_ = "";

          urls_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.internal_static_proto_SubMessage_NestedMessage_descriptor;
        }

        @java.lang.Override
        public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage getDefaultInstanceForType() {
          return org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage.getDefaultInstance();
        }

        @java.lang.Override
        public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage build() {
          org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage buildPartial() {
          org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage result = new org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage(this);
          int from_bitField0_ = bitField0_;
          result.title_ = title_;
          if (((bitField0_ & 0x00000001) != 0)) {
            urls_ = urls_.getUnmodifiableView();
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.urls_ = urls_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage) {
            return mergeFrom((org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage other) {
          if (other == org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage.getDefaultInstance()) return this;
          if (!other.getTitle().isEmpty()) {
            title_ = other.title_;
            onChanged();
          }
          if (!other.urls_.isEmpty()) {
            if (urls_.isEmpty()) {
              urls_ = other.urls_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureUrlsIsMutable();
              urls_.addAll(other.urls_);
            }
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private java.lang.Object title_ = "";
        /**
         * <code>string title = 1;</code>
         * @return The title.
         */
        public java.lang.String getTitle() {
          java.lang.Object ref = title_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            title_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>string title = 1;</code>
         * @return The bytes for title.
         */
        public com.google.protobuf.ByteString
            getTitleBytes() {
          java.lang.Object ref = title_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            title_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>string title = 1;</code>
         * @param value The title to set.
         * @return This builder for chaining.
         */
        public Builder setTitle(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          title_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>string title = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearTitle() {
          
          title_ = getDefaultInstance().getTitle();
          onChanged();
          return this;
        }
        /**
         * <code>string title = 1;</code>
         * @param value The bytes for title to set.
         * @return This builder for chaining.
         */
        public Builder setTitleBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          title_ = value;
          onChanged();
          return this;
        }

        private com.google.protobuf.LazyStringList urls_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        private void ensureUrlsIsMutable() {
          if (!((bitField0_ & 0x00000001) != 0)) {
            urls_ = new com.google.protobuf.LazyStringArrayList(urls_);
            bitField0_ |= 0x00000001;
           }
        }
        /**
         * <code>repeated string urls = 2;</code>
         * @return A list containing the urls.
         */
        public com.google.protobuf.ProtocolStringList
            getUrlsList() {
          return urls_.getUnmodifiableView();
        }
        /**
         * <code>repeated string urls = 2;</code>
         * @return The count of urls.
         */
        public int getUrlsCount() {
          return urls_.size();
        }
        /**
         * <code>repeated string urls = 2;</code>
         * @param index The index of the element to return.
         * @return The urls at the given index.
         */
        public java.lang.String getUrls(int index) {
          return urls_.get(index);
        }
        /**
         * <code>repeated string urls = 2;</code>
         * @param index The index of the value to return.
         * @return The bytes of the urls at the given index.
         */
        public com.google.protobuf.ByteString
            getUrlsBytes(int index) {
          return urls_.getByteString(index);
        }
        /**
         * <code>repeated string urls = 2;</code>
         * @param index The index to set the value at.
         * @param value The urls to set.
         * @return This builder for chaining.
         */
        public Builder setUrls(
            int index, java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureUrlsIsMutable();
          urls_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string urls = 2;</code>
         * @param value The urls to add.
         * @return This builder for chaining.
         */
        public Builder addUrls(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureUrlsIsMutable();
          urls_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string urls = 2;</code>
         * @param values The urls to add.
         * @return This builder for chaining.
         */
        public Builder addAllUrls(
            java.lang.Iterable<java.lang.String> values) {
          ensureUrlsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, urls_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string urls = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearUrls() {
          urls_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string urls = 2;</code>
         * @param value The bytes of the urls to add.
         * @return This builder for chaining.
         */
        public Builder addUrlsBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          ensureUrlsIsMutable();
          urls_.add(value);
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:proto.SubMessage.NestedMessage)
      }

      // @@protoc_insertion_point(class_scope:proto.SubMessage.NestedMessage)
      private static final org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage();
      }

      public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<NestedMessage>
          PARSER = new com.google.protobuf.AbstractParser<NestedMessage>() {
        @java.lang.Override
        public NestedMessage parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new NestedMessage(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<NestedMessage> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<NestedMessage> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int FOO_FIELD_NUMBER = 1;
    private volatile java.lang.Object foo_;
    /**
     * <code>string foo = 1;</code>
     * @return The foo.
     */
    @java.lang.Override
    public java.lang.String getFoo() {
      java.lang.Object ref = foo_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        foo_ = s;
        return s;
      }
    }
    /**
     * <code>string foo = 1;</code>
     * @return The bytes for foo.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFooBytes() {
      java.lang.Object ref = foo_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        foo_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BAR_FIELD_NUMBER = 2;
    private double bar_;
    /**
     * <code>double bar = 2;</code>
     * @return The bar.
     */
    @java.lang.Override
    public double getBar() {
      return bar_;
    }

    public static final int NESTEDMESSAGE_FIELD_NUMBER = 3;
    private org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage nestedMessage_;
    /**
     * <code>.proto.SubMessage.NestedMessage nestedMessage = 3;</code>
     * @return Whether the nestedMessage field is set.
     */
    @java.lang.Override
    public boolean hasNestedMessage() {
      return nestedMessage_ != null;
    }
    /**
     * <code>.proto.SubMessage.NestedMessage nestedMessage = 3;</code>
     * @return The nestedMessage.
     */
    @java.lang.Override
    public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage getNestedMessage() {
      return nestedMessage_ == null ? org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage.getDefaultInstance() : nestedMessage_;
    }
    /**
     * <code>.proto.SubMessage.NestedMessage nestedMessage = 3;</code>
     */
    @java.lang.Override
    public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessageOrBuilder getNestedMessageOrBuilder() {
      return getNestedMessage();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getFooBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, foo_);
      }
      if (bar_ != 0D) {
        output.writeDouble(2, bar_);
      }
      if (nestedMessage_ != null) {
        output.writeMessage(3, getNestedMessage());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getFooBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, foo_);
      }
      if (bar_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(2, bar_);
      }
      if (nestedMessage_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getNestedMessage());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage)) {
        return super.equals(obj);
      }
      org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage other = (org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage) obj;

      if (!getFoo()
          .equals(other.getFoo())) return false;
      if (java.lang.Double.doubleToLongBits(getBar())
          != java.lang.Double.doubleToLongBits(
              other.getBar())) return false;
      if (hasNestedMessage() != other.hasNestedMessage()) return false;
      if (hasNestedMessage()) {
        if (!getNestedMessage()
            .equals(other.getNestedMessage())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + FOO_FIELD_NUMBER;
      hash = (53 * hash) + getFoo().hashCode();
      hash = (37 * hash) + BAR_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getBar()));
      if (hasNestedMessage()) {
        hash = (37 * hash) + NESTEDMESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getNestedMessage().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code proto.SubMessage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.SubMessage)
        org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.internal_static_proto_SubMessage_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.internal_static_proto_SubMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.class, org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.Builder.class);
      }

      // Construct using org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        foo_ = "";

        bar_ = 0D;

        if (nestedMessageBuilder_ == null) {
          nestedMessage_ = null;
        } else {
          nestedMessage_ = null;
          nestedMessageBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.internal_static_proto_SubMessage_descriptor;
      }

      @java.lang.Override
      public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage getDefaultInstanceForType() {
        return org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage build() {
        org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage buildPartial() {
        org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage result = new org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage(this);
        result.foo_ = foo_;
        result.bar_ = bar_;
        if (nestedMessageBuilder_ == null) {
          result.nestedMessage_ = nestedMessage_;
        } else {
          result.nestedMessage_ = nestedMessageBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage) {
          return mergeFrom((org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage other) {
        if (other == org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.getDefaultInstance()) return this;
        if (!other.getFoo().isEmpty()) {
          foo_ = other.foo_;
          onChanged();
        }
        if (other.getBar() != 0D) {
          setBar(other.getBar());
        }
        if (other.hasNestedMessage()) {
          mergeNestedMessage(other.getNestedMessage());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object foo_ = "";
      /**
       * <code>string foo = 1;</code>
       * @return The foo.
       */
      public java.lang.String getFoo() {
        java.lang.Object ref = foo_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          foo_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string foo = 1;</code>
       * @return The bytes for foo.
       */
      public com.google.protobuf.ByteString
          getFooBytes() {
        java.lang.Object ref = foo_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          foo_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string foo = 1;</code>
       * @param value The foo to set.
       * @return This builder for chaining.
       */
      public Builder setFoo(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        foo_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string foo = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearFoo() {
        
        foo_ = getDefaultInstance().getFoo();
        onChanged();
        return this;
      }
      /**
       * <code>string foo = 1;</code>
       * @param value The bytes for foo to set.
       * @return This builder for chaining.
       */
      public Builder setFooBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        foo_ = value;
        onChanged();
        return this;
      }

      private double bar_ ;
      /**
       * <code>double bar = 2;</code>
       * @return The bar.
       */
      @java.lang.Override
      public double getBar() {
        return bar_;
      }
      /**
       * <code>double bar = 2;</code>
       * @param value The bar to set.
       * @return This builder for chaining.
       */
      public Builder setBar(double value) {
        
        bar_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>double bar = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearBar() {
        
        bar_ = 0D;
        onChanged();
        return this;
      }

      private org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage nestedMessage_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage, org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage.Builder, org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessageOrBuilder> nestedMessageBuilder_;
      /**
       * <code>.proto.SubMessage.NestedMessage nestedMessage = 3;</code>
       * @return Whether the nestedMessage field is set.
       */
      public boolean hasNestedMessage() {
        return nestedMessageBuilder_ != null || nestedMessage_ != null;
      }
      /**
       * <code>.proto.SubMessage.NestedMessage nestedMessage = 3;</code>
       * @return The nestedMessage.
       */
      public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage getNestedMessage() {
        if (nestedMessageBuilder_ == null) {
          return nestedMessage_ == null ? org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage.getDefaultInstance() : nestedMessage_;
        } else {
          return nestedMessageBuilder_.getMessage();
        }
      }
      /**
       * <code>.proto.SubMessage.NestedMessage nestedMessage = 3;</code>
       */
      public Builder setNestedMessage(org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage value) {
        if (nestedMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          nestedMessage_ = value;
          onChanged();
        } else {
          nestedMessageBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.proto.SubMessage.NestedMessage nestedMessage = 3;</code>
       */
      public Builder setNestedMessage(
          org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage.Builder builderForValue) {
        if (nestedMessageBuilder_ == null) {
          nestedMessage_ = builderForValue.build();
          onChanged();
        } else {
          nestedMessageBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.proto.SubMessage.NestedMessage nestedMessage = 3;</code>
       */
      public Builder mergeNestedMessage(org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage value) {
        if (nestedMessageBuilder_ == null) {
          if (nestedMessage_ != null) {
            nestedMessage_ =
              org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage.newBuilder(nestedMessage_).mergeFrom(value).buildPartial();
          } else {
            nestedMessage_ = value;
          }
          onChanged();
        } else {
          nestedMessageBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.proto.SubMessage.NestedMessage nestedMessage = 3;</code>
       */
      public Builder clearNestedMessage() {
        if (nestedMessageBuilder_ == null) {
          nestedMessage_ = null;
          onChanged();
        } else {
          nestedMessage_ = null;
          nestedMessageBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.proto.SubMessage.NestedMessage nestedMessage = 3;</code>
       */
      public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage.Builder getNestedMessageBuilder() {
        
        onChanged();
        return getNestedMessageFieldBuilder().getBuilder();
      }
      /**
       * <code>.proto.SubMessage.NestedMessage nestedMessage = 3;</code>
       */
      public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessageOrBuilder getNestedMessageOrBuilder() {
        if (nestedMessageBuilder_ != null) {
          return nestedMessageBuilder_.getMessageOrBuilder();
        } else {
          return nestedMessage_ == null ?
              org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage.getDefaultInstance() : nestedMessage_;
        }
      }
      /**
       * <code>.proto.SubMessage.NestedMessage nestedMessage = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage, org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage.Builder, org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessageOrBuilder> 
          getNestedMessageFieldBuilder() {
        if (nestedMessageBuilder_ == null) {
          nestedMessageBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage, org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessage.Builder, org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.NestedMessageOrBuilder>(
                  getNestedMessage(),
                  getParentForChildren(),
                  isClean());
          nestedMessage_ = null;
        }
        return nestedMessageBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:proto.SubMessage)
    }

    // @@protoc_insertion_point(class_scope:proto.SubMessage)
    private static final org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage();
    }

    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SubMessage>
        PARSER = new com.google.protobuf.AbstractParser<SubMessage>() {
      @java.lang.Override
      public SubMessage parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SubMessage(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<SubMessage> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SubMessage> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestMessageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:proto.TestMessage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string stringField = 1;</code>
     * @return The stringField.
     */
    java.lang.String getStringField();
    /**
     * <code>string stringField = 1;</code>
     * @return The bytes for stringField.
     */
    com.google.protobuf.ByteString
        getStringFieldBytes();

    /**
     * <code>double doubleField = 2;</code>
     * @return The doubleField.
     */
    double getDoubleField();

    /**
     * <code>float floatField = 3;</code>
     * @return The floatField.
     */
    float getFloatField();

    /**
     * <code>int32 int32Field = 4;</code>
     * @return The int32Field.
     */
    int getInt32Field();

    /**
     * <code>int64 int64Field = 5;</code>
     * @return The int64Field.
     */
    long getInt64Field();

    /**
     * <code>uint32 uint32Field = 6;</code>
     * @return The uint32Field.
     */
    int getUint32Field();

    /**
     * <code>uint64 uint64Field = 7;</code>
     * @return The uint64Field.
     */
    long getUint64Field();

    /**
     * <code>sint32 sint32Field = 8;</code>
     * @return The sint32Field.
     */
    int getSint32Field();

    /**
     * <code>sint64 sint64Field = 9;</code>
     * @return The sint64Field.
     */
    long getSint64Field();

    /**
     * <code>fixed32 fixed32Field = 10;</code>
     * @return The fixed32Field.
     */
    int getFixed32Field();

    /**
     * <code>fixed64 fixed64Field = 11;</code>
     * @return The fixed64Field.
     */
    long getFixed64Field();

    /**
     * <code>sfixed32 sfixed32Field = 12;</code>
     * @return The sfixed32Field.
     */
    int getSfixed32Field();

    /**
     * <code>sfixed64 sfixed64Field = 13;</code>
     * @return The sfixed64Field.
     */
    long getSfixed64Field();

    /**
     * <code>bool boolField = 14;</code>
     * @return The boolField.
     */
    boolean getBoolField();

    /**
     * <code>bytes bytesField = 15;</code>
     * @return The bytesField.
     */
    com.google.protobuf.ByteString getBytesField();

    /**
     * <code>.proto.TestEnum testEnum = 16;</code>
     * @return The enum numeric value on the wire for testEnum.
     */
    int getTestEnumValue();
    /**
     * <code>.proto.TestEnum testEnum = 16;</code>
     * @return The testEnum.
     */
    org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestEnum getTestEnum();

    /**
     * <code>.proto.SubMessage subMessage = 17;</code>
     * @return Whether the subMessage field is set.
     */
    boolean hasSubMessage();
    /**
     * <code>.proto.SubMessage subMessage = 17;</code>
     * @return The subMessage.
     */
    org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage getSubMessage();
    /**
     * <code>.proto.SubMessage subMessage = 17;</code>
     */
    org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessageOrBuilder getSubMessageOrBuilder();

    /**
     * <code>repeated string repeatedField = 18;</code>
     * @return A list containing the repeatedField.
     */
    java.util.List<java.lang.String>
        getRepeatedFieldList();
    /**
     * <code>repeated string repeatedField = 18;</code>
     * @return The count of repeatedField.
     */
    int getRepeatedFieldCount();
    /**
     * <code>repeated string repeatedField = 18;</code>
     * @param index The index of the element to return.
     * @return The repeatedField at the given index.
     */
    java.lang.String getRepeatedField(int index);
    /**
     * <code>repeated string repeatedField = 18;</code>
     * @param index The index of the value to return.
     * @return The bytes of the repeatedField at the given index.
     */
    com.google.protobuf.ByteString
        getRepeatedFieldBytes(int index);

    /**
     * <code>map&lt;string, double&gt; mapField = 19;</code>
     */
    int getMapFieldCount();
    /**
     * <code>map&lt;string, double&gt; mapField = 19;</code>
     */
    boolean containsMapField(
        java.lang.String key);
    /**
     * Use {@link #getMapFieldMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.Double>
    getMapField();
    /**
     * <code>map&lt;string, double&gt; mapField = 19;</code>
     */
    java.util.Map<java.lang.String, java.lang.Double>
    getMapFieldMap();
    /**
     * <code>map&lt;string, double&gt; mapField = 19;</code>
     */

    double getMapFieldOrDefault(
        java.lang.String key,
        double defaultValue);
    /**
     * <code>map&lt;string, double&gt; mapField = 19;</code>
     */

    double getMapFieldOrThrow(
        java.lang.String key);

    /**
     * <code>.google.protobuf.Timestamp timestampField = 20;</code>
     * @return Whether the timestampField field is set.
     */
    boolean hasTimestampField();
    /**
     * <code>.google.protobuf.Timestamp timestampField = 20;</code>
     * @return The timestampField.
     */
    com.google.protobuf.Timestamp getTimestampField();
    /**
     * <code>.google.protobuf.Timestamp timestampField = 20;</code>
     */
    com.google.protobuf.TimestampOrBuilder getTimestampFieldOrBuilder();
  }
  /**
   * Protobuf type {@code proto.TestMessage}
   */
  public static final class TestMessage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:proto.TestMessage)
      TestMessageOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestMessage.newBuilder() to construct.
    private TestMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestMessage() {
      stringField_ = "";
      bytesField_ = com.google.protobuf.ByteString.EMPTY;
      testEnum_ = 0;
      repeatedField_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TestMessage();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TestMessage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              stringField_ = s;
              break;
            }
            case 17: {

              doubleField_ = input.readDouble();
              break;
            }
            case 29: {

              floatField_ = input.readFloat();
              break;
            }
            case 32: {

              int32Field_ = input.readInt32();
              break;
            }
            case 40: {

              int64Field_ = input.readInt64();
              break;
            }
            case 48: {

              uint32Field_ = input.readUInt32();
              break;
            }
            case 56: {

              uint64Field_ = input.readUInt64();
              break;
            }
            case 64: {

              sint32Field_ = input.readSInt32();
              break;
            }
            case 72: {

              sint64Field_ = input.readSInt64();
              break;
            }
            case 85: {

              fixed32Field_ = input.readFixed32();
              break;
            }
            case 89: {

              fixed64Field_ = input.readFixed64();
              break;
            }
            case 101: {

              sfixed32Field_ = input.readSFixed32();
              break;
            }
            case 105: {

              sfixed64Field_ = input.readSFixed64();
              break;
            }
            case 112: {

              boolField_ = input.readBool();
              break;
            }
            case 122: {

              bytesField_ = input.readBytes();
              break;
            }
            case 128: {
              int rawValue = input.readEnum();

              testEnum_ = rawValue;
              break;
            }
            case 138: {
              org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.Builder subBuilder = null;
              if (subMessage_ != null) {
                subBuilder = subMessage_.toBuilder();
              }
              subMessage_ = input.readMessage(org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(subMessage_);
                subMessage_ = subBuilder.buildPartial();
              }

              break;
            }
            case 146: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                repeatedField_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              repeatedField_.add(s);
              break;
            }
            case 154: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                mapField_ = com.google.protobuf.MapField.newMapField(
                    MapFieldDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000002;
              }
              com.google.protobuf.MapEntry<java.lang.String, java.lang.Double>
              mapField__ = input.readMessage(
                  MapFieldDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              mapField_.getMutableMap().put(
                  mapField__.getKey(), mapField__.getValue());
              break;
            }
            case 162: {
              com.google.protobuf.Timestamp.Builder subBuilder = null;
              if (timestampField_ != null) {
                subBuilder = timestampField_.toBuilder();
              }
              timestampField_ = input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(timestampField_);
                timestampField_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          repeatedField_ = repeatedField_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.internal_static_proto_TestMessage_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 19:
          return internalGetMapField();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.internal_static_proto_TestMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage.class, org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage.Builder.class);
    }

    public static final int STRINGFIELD_FIELD_NUMBER = 1;
    private volatile java.lang.Object stringField_;
    /**
     * <code>string stringField = 1;</code>
     * @return The stringField.
     */
    @java.lang.Override
    public java.lang.String getStringField() {
      java.lang.Object ref = stringField_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        stringField_ = s;
        return s;
      }
    }
    /**
     * <code>string stringField = 1;</code>
     * @return The bytes for stringField.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStringFieldBytes() {
      java.lang.Object ref = stringField_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        stringField_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DOUBLEFIELD_FIELD_NUMBER = 2;
    private double doubleField_;
    /**
     * <code>double doubleField = 2;</code>
     * @return The doubleField.
     */
    @java.lang.Override
    public double getDoubleField() {
      return doubleField_;
    }

    public static final int FLOATFIELD_FIELD_NUMBER = 3;
    private float floatField_;
    /**
     * <code>float floatField = 3;</code>
     * @return The floatField.
     */
    @java.lang.Override
    public float getFloatField() {
      return floatField_;
    }

    public static final int INT32FIELD_FIELD_NUMBER = 4;
    private int int32Field_;
    /**
     * <code>int32 int32Field = 4;</code>
     * @return The int32Field.
     */
    @java.lang.Override
    public int getInt32Field() {
      return int32Field_;
    }

    public static final int INT64FIELD_FIELD_NUMBER = 5;
    private long int64Field_;
    /**
     * <code>int64 int64Field = 5;</code>
     * @return The int64Field.
     */
    @java.lang.Override
    public long getInt64Field() {
      return int64Field_;
    }

    public static final int UINT32FIELD_FIELD_NUMBER = 6;
    private int uint32Field_;
    /**
     * <code>uint32 uint32Field = 6;</code>
     * @return The uint32Field.
     */
    @java.lang.Override
    public int getUint32Field() {
      return uint32Field_;
    }

    public static final int UINT64FIELD_FIELD_NUMBER = 7;
    private long uint64Field_;
    /**
     * <code>uint64 uint64Field = 7;</code>
     * @return The uint64Field.
     */
    @java.lang.Override
    public long getUint64Field() {
      return uint64Field_;
    }

    public static final int SINT32FIELD_FIELD_NUMBER = 8;
    private int sint32Field_;
    /**
     * <code>sint32 sint32Field = 8;</code>
     * @return The sint32Field.
     */
    @java.lang.Override
    public int getSint32Field() {
      return sint32Field_;
    }

    public static final int SINT64FIELD_FIELD_NUMBER = 9;
    private long sint64Field_;
    /**
     * <code>sint64 sint64Field = 9;</code>
     * @return The sint64Field.
     */
    @java.lang.Override
    public long getSint64Field() {
      return sint64Field_;
    }

    public static final int FIXED32FIELD_FIELD_NUMBER = 10;
    private int fixed32Field_;
    /**
     * <code>fixed32 fixed32Field = 10;</code>
     * @return The fixed32Field.
     */
    @java.lang.Override
    public int getFixed32Field() {
      return fixed32Field_;
    }

    public static final int FIXED64FIELD_FIELD_NUMBER = 11;
    private long fixed64Field_;
    /**
     * <code>fixed64 fixed64Field = 11;</code>
     * @return The fixed64Field.
     */
    @java.lang.Override
    public long getFixed64Field() {
      return fixed64Field_;
    }

    public static final int SFIXED32FIELD_FIELD_NUMBER = 12;
    private int sfixed32Field_;
    /**
     * <code>sfixed32 sfixed32Field = 12;</code>
     * @return The sfixed32Field.
     */
    @java.lang.Override
    public int getSfixed32Field() {
      return sfixed32Field_;
    }

    public static final int SFIXED64FIELD_FIELD_NUMBER = 13;
    private long sfixed64Field_;
    /**
     * <code>sfixed64 sfixed64Field = 13;</code>
     * @return The sfixed64Field.
     */
    @java.lang.Override
    public long getSfixed64Field() {
      return sfixed64Field_;
    }

    public static final int BOOLFIELD_FIELD_NUMBER = 14;
    private boolean boolField_;
    /**
     * <code>bool boolField = 14;</code>
     * @return The boolField.
     */
    @java.lang.Override
    public boolean getBoolField() {
      return boolField_;
    }

    public static final int BYTESFIELD_FIELD_NUMBER = 15;
    private com.google.protobuf.ByteString bytesField_;
    /**
     * <code>bytes bytesField = 15;</code>
     * @return The bytesField.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getBytesField() {
      return bytesField_;
    }

    public static final int TESTENUM_FIELD_NUMBER = 16;
    private int testEnum_;
    /**
     * <code>.proto.TestEnum testEnum = 16;</code>
     * @return The enum numeric value on the wire for testEnum.
     */
    @java.lang.Override public int getTestEnumValue() {
      return testEnum_;
    }
    /**
     * <code>.proto.TestEnum testEnum = 16;</code>
     * @return The testEnum.
     */
    @java.lang.Override public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestEnum getTestEnum() {
      @SuppressWarnings("deprecation")
      org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestEnum result = org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestEnum.valueOf(testEnum_);
      return result == null ? org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestEnum.UNRECOGNIZED : result;
    }

    public static final int SUBMESSAGE_FIELD_NUMBER = 17;
    private org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage subMessage_;
    /**
     * <code>.proto.SubMessage subMessage = 17;</code>
     * @return Whether the subMessage field is set.
     */
    @java.lang.Override
    public boolean hasSubMessage() {
      return subMessage_ != null;
    }
    /**
     * <code>.proto.SubMessage subMessage = 17;</code>
     * @return The subMessage.
     */
    @java.lang.Override
    public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage getSubMessage() {
      return subMessage_ == null ? org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.getDefaultInstance() : subMessage_;
    }
    /**
     * <code>.proto.SubMessage subMessage = 17;</code>
     */
    @java.lang.Override
    public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessageOrBuilder getSubMessageOrBuilder() {
      return getSubMessage();
    }

    public static final int REPEATEDFIELD_FIELD_NUMBER = 18;
    private com.google.protobuf.LazyStringList repeatedField_;
    /**
     * <code>repeated string repeatedField = 18;</code>
     * @return A list containing the repeatedField.
     */
    public com.google.protobuf.ProtocolStringList
        getRepeatedFieldList() {
      return repeatedField_;
    }
    /**
     * <code>repeated string repeatedField = 18;</code>
     * @return The count of repeatedField.
     */
    public int getRepeatedFieldCount() {
      return repeatedField_.size();
    }
    /**
     * <code>repeated string repeatedField = 18;</code>
     * @param index The index of the element to return.
     * @return The repeatedField at the given index.
     */
    public java.lang.String getRepeatedField(int index) {
      return repeatedField_.get(index);
    }
    /**
     * <code>repeated string repeatedField = 18;</code>
     * @param index The index of the value to return.
     * @return The bytes of the repeatedField at the given index.
     */
    public com.google.protobuf.ByteString
        getRepeatedFieldBytes(int index) {
      return repeatedField_.getByteString(index);
    }

    public static final int MAPFIELD_FIELD_NUMBER = 19;
    private static final class MapFieldDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.Double> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.Double>newDefaultInstance(
                  org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.internal_static_proto_TestMessage_MapFieldEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.DOUBLE,
                  0D);
    }
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.Double> mapField_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.Double>
    internalGetMapField() {
      if (mapField_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapFieldDefaultEntryHolder.defaultEntry);
      }
      return mapField_;
    }

    public int getMapFieldCount() {
      return internalGetMapField().getMap().size();
    }
    /**
     * <code>map&lt;string, double&gt; mapField = 19;</code>
     */

    @java.lang.Override
    public boolean containsMapField(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      return internalGetMapField().getMap().containsKey(key);
    }
    /**
     * Use {@link #getMapFieldMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.Double> getMapField() {
      return getMapFieldMap();
    }
    /**
     * <code>map&lt;string, double&gt; mapField = 19;</code>
     */
    @java.lang.Override

    public java.util.Map<java.lang.String, java.lang.Double> getMapFieldMap() {
      return internalGetMapField().getMap();
    }
    /**
     * <code>map&lt;string, double&gt; mapField = 19;</code>
     */
    @java.lang.Override

    public double getMapFieldOrDefault(
        java.lang.String key,
        double defaultValue) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, java.lang.Double> map =
          internalGetMapField().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, double&gt; mapField = 19;</code>
     */
    @java.lang.Override

    public double getMapFieldOrThrow(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, java.lang.Double> map =
          internalGetMapField().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int TIMESTAMPFIELD_FIELD_NUMBER = 20;
    private com.google.protobuf.Timestamp timestampField_;
    /**
     * <code>.google.protobuf.Timestamp timestampField = 20;</code>
     * @return Whether the timestampField field is set.
     */
    @java.lang.Override
    public boolean hasTimestampField() {
      return timestampField_ != null;
    }
    /**
     * <code>.google.protobuf.Timestamp timestampField = 20;</code>
     * @return The timestampField.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getTimestampField() {
      return timestampField_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : timestampField_;
    }
    /**
     * <code>.google.protobuf.Timestamp timestampField = 20;</code>
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getTimestampFieldOrBuilder() {
      return getTimestampField();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getStringFieldBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, stringField_);
      }
      if (doubleField_ != 0D) {
        output.writeDouble(2, doubleField_);
      }
      if (floatField_ != 0F) {
        output.writeFloat(3, floatField_);
      }
      if (int32Field_ != 0) {
        output.writeInt32(4, int32Field_);
      }
      if (int64Field_ != 0L) {
        output.writeInt64(5, int64Field_);
      }
      if (uint32Field_ != 0) {
        output.writeUInt32(6, uint32Field_);
      }
      if (uint64Field_ != 0L) {
        output.writeUInt64(7, uint64Field_);
      }
      if (sint32Field_ != 0) {
        output.writeSInt32(8, sint32Field_);
      }
      if (sint64Field_ != 0L) {
        output.writeSInt64(9, sint64Field_);
      }
      if (fixed32Field_ != 0) {
        output.writeFixed32(10, fixed32Field_);
      }
      if (fixed64Field_ != 0L) {
        output.writeFixed64(11, fixed64Field_);
      }
      if (sfixed32Field_ != 0) {
        output.writeSFixed32(12, sfixed32Field_);
      }
      if (sfixed64Field_ != 0L) {
        output.writeSFixed64(13, sfixed64Field_);
      }
      if (boolField_ != false) {
        output.writeBool(14, boolField_);
      }
      if (!bytesField_.isEmpty()) {
        output.writeBytes(15, bytesField_);
      }
      if (testEnum_ != org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestEnum.SHARED.getNumber()) {
        output.writeEnum(16, testEnum_);
      }
      if (subMessage_ != null) {
        output.writeMessage(17, getSubMessage());
      }
      for (int i = 0; i < repeatedField_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 18, repeatedField_.getRaw(i));
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetMapField(),
          MapFieldDefaultEntryHolder.defaultEntry,
          19);
      if (timestampField_ != null) {
        output.writeMessage(20, getTimestampField());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getStringFieldBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, stringField_);
      }
      if (doubleField_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(2, doubleField_);
      }
      if (floatField_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(3, floatField_);
      }
      if (int32Field_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, int32Field_);
      }
      if (int64Field_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, int64Field_);
      }
      if (uint32Field_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, uint32Field_);
      }
      if (uint64Field_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(7, uint64Field_);
      }
      if (sint32Field_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeSInt32Size(8, sint32Field_);
      }
      if (sint64Field_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeSInt64Size(9, sint64Field_);
      }
      if (fixed32Field_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(10, fixed32Field_);
      }
      if (fixed64Field_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed64Size(11, fixed64Field_);
      }
      if (sfixed32Field_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeSFixed32Size(12, sfixed32Field_);
      }
      if (sfixed64Field_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeSFixed64Size(13, sfixed64Field_);
      }
      if (boolField_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(14, boolField_);
      }
      if (!bytesField_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(15, bytesField_);
      }
      if (testEnum_ != org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestEnum.SHARED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(16, testEnum_);
      }
      if (subMessage_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(17, getSubMessage());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < repeatedField_.size(); i++) {
          dataSize += computeStringSizeNoTag(repeatedField_.getRaw(i));
        }
        size += dataSize;
        size += 2 * getRepeatedFieldList().size();
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.Double> entry
           : internalGetMapField().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.Double>
        mapField__ = MapFieldDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(19, mapField__);
      }
      if (timestampField_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(20, getTimestampField());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage)) {
        return super.equals(obj);
      }
      org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage other = (org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage) obj;

      if (!getStringField()
          .equals(other.getStringField())) return false;
      if (java.lang.Double.doubleToLongBits(getDoubleField())
          != java.lang.Double.doubleToLongBits(
              other.getDoubleField())) return false;
      if (java.lang.Float.floatToIntBits(getFloatField())
          != java.lang.Float.floatToIntBits(
              other.getFloatField())) return false;
      if (getInt32Field()
          != other.getInt32Field()) return false;
      if (getInt64Field()
          != other.getInt64Field()) return false;
      if (getUint32Field()
          != other.getUint32Field()) return false;
      if (getUint64Field()
          != other.getUint64Field()) return false;
      if (getSint32Field()
          != other.getSint32Field()) return false;
      if (getSint64Field()
          != other.getSint64Field()) return false;
      if (getFixed32Field()
          != other.getFixed32Field()) return false;
      if (getFixed64Field()
          != other.getFixed64Field()) return false;
      if (getSfixed32Field()
          != other.getSfixed32Field()) return false;
      if (getSfixed64Field()
          != other.getSfixed64Field()) return false;
      if (getBoolField()
          != other.getBoolField()) return false;
      if (!getBytesField()
          .equals(other.getBytesField())) return false;
      if (testEnum_ != other.testEnum_) return false;
      if (hasSubMessage() != other.hasSubMessage()) return false;
      if (hasSubMessage()) {
        if (!getSubMessage()
            .equals(other.getSubMessage())) return false;
      }
      if (!getRepeatedFieldList()
          .equals(other.getRepeatedFieldList())) return false;
      if (!internalGetMapField().equals(
          other.internalGetMapField())) return false;
      if (hasTimestampField() != other.hasTimestampField()) return false;
      if (hasTimestampField()) {
        if (!getTimestampField()
            .equals(other.getTimestampField())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + STRINGFIELD_FIELD_NUMBER;
      hash = (53 * hash) + getStringField().hashCode();
      hash = (37 * hash) + DOUBLEFIELD_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getDoubleField()));
      hash = (37 * hash) + FLOATFIELD_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getFloatField());
      hash = (37 * hash) + INT32FIELD_FIELD_NUMBER;
      hash = (53 * hash) + getInt32Field();
      hash = (37 * hash) + INT64FIELD_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getInt64Field());
      hash = (37 * hash) + UINT32FIELD_FIELD_NUMBER;
      hash = (53 * hash) + getUint32Field();
      hash = (37 * hash) + UINT64FIELD_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getUint64Field());
      hash = (37 * hash) + SINT32FIELD_FIELD_NUMBER;
      hash = (53 * hash) + getSint32Field();
      hash = (37 * hash) + SINT64FIELD_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getSint64Field());
      hash = (37 * hash) + FIXED32FIELD_FIELD_NUMBER;
      hash = (53 * hash) + getFixed32Field();
      hash = (37 * hash) + FIXED64FIELD_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getFixed64Field());
      hash = (37 * hash) + SFIXED32FIELD_FIELD_NUMBER;
      hash = (53 * hash) + getSfixed32Field();
      hash = (37 * hash) + SFIXED64FIELD_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getSfixed64Field());
      hash = (37 * hash) + BOOLFIELD_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getBoolField());
      hash = (37 * hash) + BYTESFIELD_FIELD_NUMBER;
      hash = (53 * hash) + getBytesField().hashCode();
      hash = (37 * hash) + TESTENUM_FIELD_NUMBER;
      hash = (53 * hash) + testEnum_;
      if (hasSubMessage()) {
        hash = (37 * hash) + SUBMESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getSubMessage().hashCode();
      }
      if (getRepeatedFieldCount() > 0) {
        hash = (37 * hash) + REPEATEDFIELD_FIELD_NUMBER;
        hash = (53 * hash) + getRepeatedFieldList().hashCode();
      }
      if (!internalGetMapField().getMap().isEmpty()) {
        hash = (37 * hash) + MAPFIELD_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMapField().hashCode();
      }
      if (hasTimestampField()) {
        hash = (37 * hash) + TIMESTAMPFIELD_FIELD_NUMBER;
        hash = (53 * hash) + getTimestampField().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code proto.TestMessage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:proto.TestMessage)
        org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.internal_static_proto_TestMessage_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 19:
            return internalGetMapField();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 19:
            return internalGetMutableMapField();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.internal_static_proto_TestMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage.class, org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage.Builder.class);
      }

      // Construct using org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        stringField_ = "";

        doubleField_ = 0D;

        floatField_ = 0F;

        int32Field_ = 0;

        int64Field_ = 0L;

        uint32Field_ = 0;

        uint64Field_ = 0L;

        sint32Field_ = 0;

        sint64Field_ = 0L;

        fixed32Field_ = 0;

        fixed64Field_ = 0L;

        sfixed32Field_ = 0;

        sfixed64Field_ = 0L;

        boolField_ = false;

        bytesField_ = com.google.protobuf.ByteString.EMPTY;

        testEnum_ = 0;

        if (subMessageBuilder_ == null) {
          subMessage_ = null;
        } else {
          subMessage_ = null;
          subMessageBuilder_ = null;
        }
        repeatedField_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        internalGetMutableMapField().clear();
        if (timestampFieldBuilder_ == null) {
          timestampField_ = null;
        } else {
          timestampField_ = null;
          timestampFieldBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.internal_static_proto_TestMessage_descriptor;
      }

      @java.lang.Override
      public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage getDefaultInstanceForType() {
        return org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage build() {
        org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage buildPartial() {
        org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage result = new org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage(this);
        int from_bitField0_ = bitField0_;
        result.stringField_ = stringField_;
        result.doubleField_ = doubleField_;
        result.floatField_ = floatField_;
        result.int32Field_ = int32Field_;
        result.int64Field_ = int64Field_;
        result.uint32Field_ = uint32Field_;
        result.uint64Field_ = uint64Field_;
        result.sint32Field_ = sint32Field_;
        result.sint64Field_ = sint64Field_;
        result.fixed32Field_ = fixed32Field_;
        result.fixed64Field_ = fixed64Field_;
        result.sfixed32Field_ = sfixed32Field_;
        result.sfixed64Field_ = sfixed64Field_;
        result.boolField_ = boolField_;
        result.bytesField_ = bytesField_;
        result.testEnum_ = testEnum_;
        if (subMessageBuilder_ == null) {
          result.subMessage_ = subMessage_;
        } else {
          result.subMessage_ = subMessageBuilder_.build();
        }
        if (((bitField0_ & 0x00000001) != 0)) {
          repeatedField_ = repeatedField_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.repeatedField_ = repeatedField_;
        result.mapField_ = internalGetMapField();
        result.mapField_.makeImmutable();
        if (timestampFieldBuilder_ == null) {
          result.timestampField_ = timestampField_;
        } else {
          result.timestampField_ = timestampFieldBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage) {
          return mergeFrom((org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage other) {
        if (other == org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage.getDefaultInstance()) return this;
        if (!other.getStringField().isEmpty()) {
          stringField_ = other.stringField_;
          onChanged();
        }
        if (other.getDoubleField() != 0D) {
          setDoubleField(other.getDoubleField());
        }
        if (other.getFloatField() != 0F) {
          setFloatField(other.getFloatField());
        }
        if (other.getInt32Field() != 0) {
          setInt32Field(other.getInt32Field());
        }
        if (other.getInt64Field() != 0L) {
          setInt64Field(other.getInt64Field());
        }
        if (other.getUint32Field() != 0) {
          setUint32Field(other.getUint32Field());
        }
        if (other.getUint64Field() != 0L) {
          setUint64Field(other.getUint64Field());
        }
        if (other.getSint32Field() != 0) {
          setSint32Field(other.getSint32Field());
        }
        if (other.getSint64Field() != 0L) {
          setSint64Field(other.getSint64Field());
        }
        if (other.getFixed32Field() != 0) {
          setFixed32Field(other.getFixed32Field());
        }
        if (other.getFixed64Field() != 0L) {
          setFixed64Field(other.getFixed64Field());
        }
        if (other.getSfixed32Field() != 0) {
          setSfixed32Field(other.getSfixed32Field());
        }
        if (other.getSfixed64Field() != 0L) {
          setSfixed64Field(other.getSfixed64Field());
        }
        if (other.getBoolField() != false) {
          setBoolField(other.getBoolField());
        }
        if (other.getBytesField() != com.google.protobuf.ByteString.EMPTY) {
          setBytesField(other.getBytesField());
        }
        if (other.testEnum_ != 0) {
          setTestEnumValue(other.getTestEnumValue());
        }
        if (other.hasSubMessage()) {
          mergeSubMessage(other.getSubMessage());
        }
        if (!other.repeatedField_.isEmpty()) {
          if (repeatedField_.isEmpty()) {
            repeatedField_ = other.repeatedField_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureRepeatedFieldIsMutable();
            repeatedField_.addAll(other.repeatedField_);
          }
          onChanged();
        }
        internalGetMutableMapField().mergeFrom(
            other.internalGetMapField());
        if (other.hasTimestampField()) {
          mergeTimestampField(other.getTimestampField());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object stringField_ = "";
      /**
       * <code>string stringField = 1;</code>
       * @return The stringField.
       */
      public java.lang.String getStringField() {
        java.lang.Object ref = stringField_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          stringField_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string stringField = 1;</code>
       * @return The bytes for stringField.
       */
      public com.google.protobuf.ByteString
          getStringFieldBytes() {
        java.lang.Object ref = stringField_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          stringField_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string stringField = 1;</code>
       * @param value The stringField to set.
       * @return This builder for chaining.
       */
      public Builder setStringField(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        stringField_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string stringField = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearStringField() {
        
        stringField_ = getDefaultInstance().getStringField();
        onChanged();
        return this;
      }
      /**
       * <code>string stringField = 1;</code>
       * @param value The bytes for stringField to set.
       * @return This builder for chaining.
       */
      public Builder setStringFieldBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        stringField_ = value;
        onChanged();
        return this;
      }

      private double doubleField_ ;
      /**
       * <code>double doubleField = 2;</code>
       * @return The doubleField.
       */
      @java.lang.Override
      public double getDoubleField() {
        return doubleField_;
      }
      /**
       * <code>double doubleField = 2;</code>
       * @param value The doubleField to set.
       * @return This builder for chaining.
       */
      public Builder setDoubleField(double value) {
        
        doubleField_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>double doubleField = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDoubleField() {
        
        doubleField_ = 0D;
        onChanged();
        return this;
      }

      private float floatField_ ;
      /**
       * <code>float floatField = 3;</code>
       * @return The floatField.
       */
      @java.lang.Override
      public float getFloatField() {
        return floatField_;
      }
      /**
       * <code>float floatField = 3;</code>
       * @param value The floatField to set.
       * @return This builder for chaining.
       */
      public Builder setFloatField(float value) {
        
        floatField_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>float floatField = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearFloatField() {
        
        floatField_ = 0F;
        onChanged();
        return this;
      }

      private int int32Field_ ;
      /**
       * <code>int32 int32Field = 4;</code>
       * @return The int32Field.
       */
      @java.lang.Override
      public int getInt32Field() {
        return int32Field_;
      }
      /**
       * <code>int32 int32Field = 4;</code>
       * @param value The int32Field to set.
       * @return This builder for chaining.
       */
      public Builder setInt32Field(int value) {
        
        int32Field_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 int32Field = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearInt32Field() {
        
        int32Field_ = 0;
        onChanged();
        return this;
      }

      private long int64Field_ ;
      /**
       * <code>int64 int64Field = 5;</code>
       * @return The int64Field.
       */
      @java.lang.Override
      public long getInt64Field() {
        return int64Field_;
      }
      /**
       * <code>int64 int64Field = 5;</code>
       * @param value The int64Field to set.
       * @return This builder for chaining.
       */
      public Builder setInt64Field(long value) {
        
        int64Field_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 int64Field = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearInt64Field() {
        
        int64Field_ = 0L;
        onChanged();
        return this;
      }

      private int uint32Field_ ;
      /**
       * <code>uint32 uint32Field = 6;</code>
       * @return The uint32Field.
       */
      @java.lang.Override
      public int getUint32Field() {
        return uint32Field_;
      }
      /**
       * <code>uint32 uint32Field = 6;</code>
       * @param value The uint32Field to set.
       * @return This builder for chaining.
       */
      public Builder setUint32Field(int value) {
        
        uint32Field_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 uint32Field = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearUint32Field() {
        
        uint32Field_ = 0;
        onChanged();
        return this;
      }

      private long uint64Field_ ;
      /**
       * <code>uint64 uint64Field = 7;</code>
       * @return The uint64Field.
       */
      @java.lang.Override
      public long getUint64Field() {
        return uint64Field_;
      }
      /**
       * <code>uint64 uint64Field = 7;</code>
       * @param value The uint64Field to set.
       * @return This builder for chaining.
       */
      public Builder setUint64Field(long value) {
        
        uint64Field_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint64 uint64Field = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearUint64Field() {
        
        uint64Field_ = 0L;
        onChanged();
        return this;
      }

      private int sint32Field_ ;
      /**
       * <code>sint32 sint32Field = 8;</code>
       * @return The sint32Field.
       */
      @java.lang.Override
      public int getSint32Field() {
        return sint32Field_;
      }
      /**
       * <code>sint32 sint32Field = 8;</code>
       * @param value The sint32Field to set.
       * @return This builder for chaining.
       */
      public Builder setSint32Field(int value) {
        
        sint32Field_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>sint32 sint32Field = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearSint32Field() {
        
        sint32Field_ = 0;
        onChanged();
        return this;
      }

      private long sint64Field_ ;
      /**
       * <code>sint64 sint64Field = 9;</code>
       * @return The sint64Field.
       */
      @java.lang.Override
      public long getSint64Field() {
        return sint64Field_;
      }
      /**
       * <code>sint64 sint64Field = 9;</code>
       * @param value The sint64Field to set.
       * @return This builder for chaining.
       */
      public Builder setSint64Field(long value) {
        
        sint64Field_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>sint64 sint64Field = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearSint64Field() {
        
        sint64Field_ = 0L;
        onChanged();
        return this;
      }

      private int fixed32Field_ ;
      /**
       * <code>fixed32 fixed32Field = 10;</code>
       * @return The fixed32Field.
       */
      @java.lang.Override
      public int getFixed32Field() {
        return fixed32Field_;
      }
      /**
       * <code>fixed32 fixed32Field = 10;</code>
       * @param value The fixed32Field to set.
       * @return This builder for chaining.
       */
      public Builder setFixed32Field(int value) {
        
        fixed32Field_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>fixed32 fixed32Field = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearFixed32Field() {
        
        fixed32Field_ = 0;
        onChanged();
        return this;
      }

      private long fixed64Field_ ;
      /**
       * <code>fixed64 fixed64Field = 11;</code>
       * @return The fixed64Field.
       */
      @java.lang.Override
      public long getFixed64Field() {
        return fixed64Field_;
      }
      /**
       * <code>fixed64 fixed64Field = 11;</code>
       * @param value The fixed64Field to set.
       * @return This builder for chaining.
       */
      public Builder setFixed64Field(long value) {
        
        fixed64Field_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>fixed64 fixed64Field = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearFixed64Field() {
        
        fixed64Field_ = 0L;
        onChanged();
        return this;
      }

      private int sfixed32Field_ ;
      /**
       * <code>sfixed32 sfixed32Field = 12;</code>
       * @return The sfixed32Field.
       */
      @java.lang.Override
      public int getSfixed32Field() {
        return sfixed32Field_;
      }
      /**
       * <code>sfixed32 sfixed32Field = 12;</code>
       * @param value The sfixed32Field to set.
       * @return This builder for chaining.
       */
      public Builder setSfixed32Field(int value) {
        
        sfixed32Field_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>sfixed32 sfixed32Field = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearSfixed32Field() {
        
        sfixed32Field_ = 0;
        onChanged();
        return this;
      }

      private long sfixed64Field_ ;
      /**
       * <code>sfixed64 sfixed64Field = 13;</code>
       * @return The sfixed64Field.
       */
      @java.lang.Override
      public long getSfixed64Field() {
        return sfixed64Field_;
      }
      /**
       * <code>sfixed64 sfixed64Field = 13;</code>
       * @param value The sfixed64Field to set.
       * @return This builder for chaining.
       */
      public Builder setSfixed64Field(long value) {
        
        sfixed64Field_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>sfixed64 sfixed64Field = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearSfixed64Field() {
        
        sfixed64Field_ = 0L;
        onChanged();
        return this;
      }

      private boolean boolField_ ;
      /**
       * <code>bool boolField = 14;</code>
       * @return The boolField.
       */
      @java.lang.Override
      public boolean getBoolField() {
        return boolField_;
      }
      /**
       * <code>bool boolField = 14;</code>
       * @param value The boolField to set.
       * @return This builder for chaining.
       */
      public Builder setBoolField(boolean value) {
        
        boolField_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool boolField = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearBoolField() {
        
        boolField_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString bytesField_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes bytesField = 15;</code>
       * @return The bytesField.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getBytesField() {
        return bytesField_;
      }
      /**
       * <code>bytes bytesField = 15;</code>
       * @param value The bytesField to set.
       * @return This builder for chaining.
       */
      public Builder setBytesField(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        bytesField_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bytes bytesField = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearBytesField() {
        
        bytesField_ = getDefaultInstance().getBytesField();
        onChanged();
        return this;
      }

      private int testEnum_ = 0;
      /**
       * <code>.proto.TestEnum testEnum = 16;</code>
       * @return The enum numeric value on the wire for testEnum.
       */
      @java.lang.Override public int getTestEnumValue() {
        return testEnum_;
      }
      /**
       * <code>.proto.TestEnum testEnum = 16;</code>
       * @param value The enum numeric value on the wire for testEnum to set.
       * @return This builder for chaining.
       */
      public Builder setTestEnumValue(int value) {
        
        testEnum_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.proto.TestEnum testEnum = 16;</code>
       * @return The testEnum.
       */
      @java.lang.Override
      public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestEnum getTestEnum() {
        @SuppressWarnings("deprecation")
        org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestEnum result = org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestEnum.valueOf(testEnum_);
        return result == null ? org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestEnum.UNRECOGNIZED : result;
      }
      /**
       * <code>.proto.TestEnum testEnum = 16;</code>
       * @param value The testEnum to set.
       * @return This builder for chaining.
       */
      public Builder setTestEnum(org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        testEnum_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.proto.TestEnum testEnum = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestEnum() {
        
        testEnum_ = 0;
        onChanged();
        return this;
      }

      private org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage subMessage_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage, org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.Builder, org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessageOrBuilder> subMessageBuilder_;
      /**
       * <code>.proto.SubMessage subMessage = 17;</code>
       * @return Whether the subMessage field is set.
       */
      public boolean hasSubMessage() {
        return subMessageBuilder_ != null || subMessage_ != null;
      }
      /**
       * <code>.proto.SubMessage subMessage = 17;</code>
       * @return The subMessage.
       */
      public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage getSubMessage() {
        if (subMessageBuilder_ == null) {
          return subMessage_ == null ? org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.getDefaultInstance() : subMessage_;
        } else {
          return subMessageBuilder_.getMessage();
        }
      }
      /**
       * <code>.proto.SubMessage subMessage = 17;</code>
       */
      public Builder setSubMessage(org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage value) {
        if (subMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          subMessage_ = value;
          onChanged();
        } else {
          subMessageBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.proto.SubMessage subMessage = 17;</code>
       */
      public Builder setSubMessage(
          org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.Builder builderForValue) {
        if (subMessageBuilder_ == null) {
          subMessage_ = builderForValue.build();
          onChanged();
        } else {
          subMessageBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.proto.SubMessage subMessage = 17;</code>
       */
      public Builder mergeSubMessage(org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage value) {
        if (subMessageBuilder_ == null) {
          if (subMessage_ != null) {
            subMessage_ =
              org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.newBuilder(subMessage_).mergeFrom(value).buildPartial();
          } else {
            subMessage_ = value;
          }
          onChanged();
        } else {
          subMessageBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.proto.SubMessage subMessage = 17;</code>
       */
      public Builder clearSubMessage() {
        if (subMessageBuilder_ == null) {
          subMessage_ = null;
          onChanged();
        } else {
          subMessage_ = null;
          subMessageBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.proto.SubMessage subMessage = 17;</code>
       */
      public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.Builder getSubMessageBuilder() {
        
        onChanged();
        return getSubMessageFieldBuilder().getBuilder();
      }
      /**
       * <code>.proto.SubMessage subMessage = 17;</code>
       */
      public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessageOrBuilder getSubMessageOrBuilder() {
        if (subMessageBuilder_ != null) {
          return subMessageBuilder_.getMessageOrBuilder();
        } else {
          return subMessage_ == null ?
              org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.getDefaultInstance() : subMessage_;
        }
      }
      /**
       * <code>.proto.SubMessage subMessage = 17;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage, org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.Builder, org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessageOrBuilder> 
          getSubMessageFieldBuilder() {
        if (subMessageBuilder_ == null) {
          subMessageBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage, org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessage.Builder, org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.SubMessageOrBuilder>(
                  getSubMessage(),
                  getParentForChildren(),
                  isClean());
          subMessage_ = null;
        }
        return subMessageBuilder_;
      }

      private com.google.protobuf.LazyStringList repeatedField_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureRepeatedFieldIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          repeatedField_ = new com.google.protobuf.LazyStringArrayList(repeatedField_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string repeatedField = 18;</code>
       * @return A list containing the repeatedField.
       */
      public com.google.protobuf.ProtocolStringList
          getRepeatedFieldList() {
        return repeatedField_.getUnmodifiableView();
      }
      /**
       * <code>repeated string repeatedField = 18;</code>
       * @return The count of repeatedField.
       */
      public int getRepeatedFieldCount() {
        return repeatedField_.size();
      }
      /**
       * <code>repeated string repeatedField = 18;</code>
       * @param index The index of the element to return.
       * @return The repeatedField at the given index.
       */
      public java.lang.String getRepeatedField(int index) {
        return repeatedField_.get(index);
      }
      /**
       * <code>repeated string repeatedField = 18;</code>
       * @param index The index of the value to return.
       * @return The bytes of the repeatedField at the given index.
       */
      public com.google.protobuf.ByteString
          getRepeatedFieldBytes(int index) {
        return repeatedField_.getByteString(index);
      }
      /**
       * <code>repeated string repeatedField = 18;</code>
       * @param index The index to set the value at.
       * @param value The repeatedField to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatedField(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRepeatedFieldIsMutable();
        repeatedField_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string repeatedField = 18;</code>
       * @param value The repeatedField to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedField(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRepeatedFieldIsMutable();
        repeatedField_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string repeatedField = 18;</code>
       * @param values The repeatedField to add.
       * @return This builder for chaining.
       */
      public Builder addAllRepeatedField(
          java.lang.Iterable<java.lang.String> values) {
        ensureRepeatedFieldIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, repeatedField_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string repeatedField = 18;</code>
       * @return This builder for chaining.
       */
      public Builder clearRepeatedField() {
        repeatedField_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string repeatedField = 18;</code>
       * @param value The bytes of the repeatedField to add.
       * @return This builder for chaining.
       */
      public Builder addRepeatedFieldBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureRepeatedFieldIsMutable();
        repeatedField_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.Double> mapField_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.Double>
      internalGetMapField() {
        if (mapField_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapFieldDefaultEntryHolder.defaultEntry);
        }
        return mapField_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.Double>
      internalGetMutableMapField() {
        onChanged();;
        if (mapField_ == null) {
          mapField_ = com.google.protobuf.MapField.newMapField(
              MapFieldDefaultEntryHolder.defaultEntry);
        }
        if (!mapField_.isMutable()) {
          mapField_ = mapField_.copy();
        }
        return mapField_;
      }

      public int getMapFieldCount() {
        return internalGetMapField().getMap().size();
      }
      /**
       * <code>map&lt;string, double&gt; mapField = 19;</code>
       */

      @java.lang.Override
      public boolean containsMapField(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        return internalGetMapField().getMap().containsKey(key);
      }
      /**
       * Use {@link #getMapFieldMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.Double> getMapField() {
        return getMapFieldMap();
      }
      /**
       * <code>map&lt;string, double&gt; mapField = 19;</code>
       */
      @java.lang.Override

      public java.util.Map<java.lang.String, java.lang.Double> getMapFieldMap() {
        return internalGetMapField().getMap();
      }
      /**
       * <code>map&lt;string, double&gt; mapField = 19;</code>
       */
      @java.lang.Override

      public double getMapFieldOrDefault(
          java.lang.String key,
          double defaultValue) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, java.lang.Double> map =
            internalGetMapField().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <code>map&lt;string, double&gt; mapField = 19;</code>
       */
      @java.lang.Override

      public double getMapFieldOrThrow(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, java.lang.Double> map =
            internalGetMapField().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMapField() {
        internalGetMutableMapField().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <code>map&lt;string, double&gt; mapField = 19;</code>
       */

      public Builder removeMapField(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableMapField().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.Double>
      getMutableMapField() {
        return internalGetMutableMapField().getMutableMap();
      }
      /**
       * <code>map&lt;string, double&gt; mapField = 19;</code>
       */
      public Builder putMapField(
          java.lang.String key,
          double value) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        
        internalGetMutableMapField().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <code>map&lt;string, double&gt; mapField = 19;</code>
       */

      public Builder putAllMapField(
          java.util.Map<java.lang.String, java.lang.Double> values) {
        internalGetMutableMapField().getMutableMap()
            .putAll(values);
        return this;
      }

      private com.google.protobuf.Timestamp timestampField_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> timestampFieldBuilder_;
      /**
       * <code>.google.protobuf.Timestamp timestampField = 20;</code>
       * @return Whether the timestampField field is set.
       */
      public boolean hasTimestampField() {
        return timestampFieldBuilder_ != null || timestampField_ != null;
      }
      /**
       * <code>.google.protobuf.Timestamp timestampField = 20;</code>
       * @return The timestampField.
       */
      public com.google.protobuf.Timestamp getTimestampField() {
        if (timestampFieldBuilder_ == null) {
          return timestampField_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : timestampField_;
        } else {
          return timestampFieldBuilder_.getMessage();
        }
      }
      /**
       * <code>.google.protobuf.Timestamp timestampField = 20;</code>
       */
      public Builder setTimestampField(com.google.protobuf.Timestamp value) {
        if (timestampFieldBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          timestampField_ = value;
          onChanged();
        } else {
          timestampFieldBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.google.protobuf.Timestamp timestampField = 20;</code>
       */
      public Builder setTimestampField(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (timestampFieldBuilder_ == null) {
          timestampField_ = builderForValue.build();
          onChanged();
        } else {
          timestampFieldBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.google.protobuf.Timestamp timestampField = 20;</code>
       */
      public Builder mergeTimestampField(com.google.protobuf.Timestamp value) {
        if (timestampFieldBuilder_ == null) {
          if (timestampField_ != null) {
            timestampField_ =
              com.google.protobuf.Timestamp.newBuilder(timestampField_).mergeFrom(value).buildPartial();
          } else {
            timestampField_ = value;
          }
          onChanged();
        } else {
          timestampFieldBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.google.protobuf.Timestamp timestampField = 20;</code>
       */
      public Builder clearTimestampField() {
        if (timestampFieldBuilder_ == null) {
          timestampField_ = null;
          onChanged();
        } else {
          timestampField_ = null;
          timestampFieldBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.google.protobuf.Timestamp timestampField = 20;</code>
       */
      public com.google.protobuf.Timestamp.Builder getTimestampFieldBuilder() {
        
        onChanged();
        return getTimestampFieldFieldBuilder().getBuilder();
      }
      /**
       * <code>.google.protobuf.Timestamp timestampField = 20;</code>
       */
      public com.google.protobuf.TimestampOrBuilder getTimestampFieldOrBuilder() {
        if (timestampFieldBuilder_ != null) {
          return timestampFieldBuilder_.getMessageOrBuilder();
        } else {
          return timestampField_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : timestampField_;
        }
      }
      /**
       * <code>.google.protobuf.Timestamp timestampField = 20;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getTimestampFieldFieldBuilder() {
        if (timestampFieldBuilder_ == null) {
          timestampFieldBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getTimestampField(),
                  getParentForChildren(),
                  isClean());
          timestampField_ = null;
        }
        return timestampFieldBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:proto.TestMessage)
    }

    // @@protoc_insertion_point(class_scope:proto.TestMessage)
    private static final org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage();
    }

    public static org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<TestMessage>
        PARSER = new com.google.protobuf.AbstractParser<TestMessage>() {
      @java.lang.Override
      public TestMessage parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new TestMessage(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<TestMessage> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<TestMessage> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.pulsar.sql.presto.decoder.protobufnative.TestMsg.TestMessage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_SubMessage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_proto_SubMessage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_SubMessage_NestedMessage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_proto_SubMessage_NestedMessage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_TestMessage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_proto_TestMessage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_proto_TestMessage_MapFieldEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_proto_TestMessage_MapFieldEntry_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\rTestMsg.proto\022\005proto\032\037google/protobuf/" +
      "timestamp.proto\"\214\001\n\nSubMessage\022\013\n\003foo\030\001 " +
      "\001(\t\022\013\n\003bar\030\002 \001(\001\0226\n\rnestedMessage\030\003 \001(\0132" +
      "\037.proto.SubMessage.NestedMessage\032,\n\rNest" +
      "edMessage\022\r\n\005title\030\001 \001(\t\022\014\n\004urls\030\002 \003(\t\"\302" +
      "\004\n\013TestMessage\022\023\n\013stringField\030\001 \001(\t\022\023\n\013d" +
      "oubleField\030\002 \001(\001\022\022\n\nfloatField\030\003 \001(\002\022\022\n\n" +
      "int32Field\030\004 \001(\005\022\022\n\nint64Field\030\005 \001(\003\022\023\n\013" +
      "uint32Field\030\006 \001(\r\022\023\n\013uint64Field\030\007 \001(\004\022\023" +
      "\n\013sint32Field\030\010 \001(\021\022\023\n\013sint64Field\030\t \001(\022" +
      "\022\024\n\014fixed32Field\030\n \001(\007\022\024\n\014fixed64Field\030\013" +
      " \001(\006\022\025\n\rsfixed32Field\030\014 \001(\017\022\025\n\rsfixed64F" +
      "ield\030\r \001(\020\022\021\n\tboolField\030\016 \001(\010\022\022\n\nbytesFi" +
      "eld\030\017 \001(\014\022!\n\010testEnum\030\020 \001(\0162\017.proto.Test" +
      "Enum\022%\n\nsubMessage\030\021 \001(\0132\021.proto.SubMess" +
      "age\022\025\n\rrepeatedField\030\022 \003(\t\0222\n\010mapField\030\023" +
      " \003(\0132 .proto.TestMessage.MapFieldEntry\0222" +
      "\n\016timestampField\030\024 \001(\0132\032.google.protobuf" +
      ".Timestamp\032/\n\rMapFieldEntry\022\013\n\003key\030\001 \001(\t" +
      "\022\r\n\005value\030\002 \001(\001:\0028\001*$\n\010TestEnum\022\n\n\006SHARE" +
      "D\020\000\022\014\n\010FAILOVER\020\001B>\n3org.apache.pulsar.s" +
      "ql.presto.decoder.protobufnativeB\007TestMs" +
      "gP\000b\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.google.protobuf.TimestampProto.getDescriptor(),
        });
    internal_static_proto_SubMessage_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_proto_SubMessage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_proto_SubMessage_descriptor,
        new java.lang.String[] { "Foo", "Bar", "NestedMessage", });
    internal_static_proto_SubMessage_NestedMessage_descriptor =
      internal_static_proto_SubMessage_descriptor.getNestedTypes().get(0);
    internal_static_proto_SubMessage_NestedMessage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_proto_SubMessage_NestedMessage_descriptor,
        new java.lang.String[] { "Title", "Urls", });
    internal_static_proto_TestMessage_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_proto_TestMessage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_proto_TestMessage_descriptor,
        new java.lang.String[] { "StringField", "DoubleField", "FloatField", "Int32Field", "Int64Field", "Uint32Field", "Uint64Field", "Sint32Field", "Sint64Field", "Fixed32Field", "Fixed64Field", "Sfixed32Field", "Sfixed64Field", "BoolField", "BytesField", "TestEnum", "SubMessage", "RepeatedField", "MapField", "TimestampField", });
    internal_static_proto_TestMessage_MapFieldEntry_descriptor =
      internal_static_proto_TestMessage_descriptor.getNestedTypes().get(0);
    internal_static_proto_TestMessage_MapFieldEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_proto_TestMessage_MapFieldEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    com.google.protobuf.TimestampProto.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
