// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: core/deserialization/src/descriptors.proto

package org.jetbrains.kotlin.serialization;

public final class ProtoBuf {
  private ProtoBuf() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }
  /**
   * Protobuf enum {@code org.jetbrains.kotlin.serialization.Modality}
   */
  public enum Modality
      implements com.google.protobuf.Internal.EnumLite {
    /**
     * <code>FINAL = 0;</code>
     *
     * <pre>
     * 2 bits
     * </pre>
     */
    FINAL(0, 0),
    /**
     * <code>OPEN = 1;</code>
     */
    OPEN(1, 1),
    /**
     * <code>ABSTRACT = 2;</code>
     */
    ABSTRACT(2, 2),
    /**
     * <code>SEALED = 3;</code>
     */
    SEALED(3, 3),
    ;

    /**
     * <code>FINAL = 0;</code>
     *
     * <pre>
     * 2 bits
     * </pre>
     */
    public static final int FINAL_VALUE = 0;
    /**
     * <code>OPEN = 1;</code>
     */
    public static final int OPEN_VALUE = 1;
    /**
     * <code>ABSTRACT = 2;</code>
     */
    public static final int ABSTRACT_VALUE = 2;
    /**
     * <code>SEALED = 3;</code>
     */
    public static final int SEALED_VALUE = 3;


    public final int getNumber() { return value; }

    public static Modality valueOf(int value) {
      switch (value) {
        case 0: return FINAL;
        case 1: return OPEN;
        case 2: return ABSTRACT;
        case 3: return SEALED;
        default: return null;
      }
    }

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

    private final int value;

    private Modality(int index, int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.serialization.Modality)
  }

  /**
   * Protobuf enum {@code org.jetbrains.kotlin.serialization.Visibility}
   */
  public enum Visibility
      implements com.google.protobuf.Internal.EnumLite {
    /**
     * <code>INTERNAL = 0;</code>
     *
     * <pre>
     * 3 bits
     * </pre>
     */
    INTERNAL(0, 0),
    /**
     * <code>PRIVATE = 1;</code>
     */
    PRIVATE(1, 1),
    /**
     * <code>PROTECTED = 2;</code>
     */
    PROTECTED(2, 2),
    /**
     * <code>PUBLIC = 3;</code>
     */
    PUBLIC(3, 3),
    /**
     * <code>PRIVATE_TO_THIS = 4;</code>
     */
    PRIVATE_TO_THIS(4, 4),
    /**
     * <code>LOCAL = 5;</code>
     */
    LOCAL(5, 5),
    ;

    /**
     * <code>INTERNAL = 0;</code>
     *
     * <pre>
     * 3 bits
     * </pre>
     */
    public static final int INTERNAL_VALUE = 0;
    /**
     * <code>PRIVATE = 1;</code>
     */
    public static final int PRIVATE_VALUE = 1;
    /**
     * <code>PROTECTED = 2;</code>
     */
    public static final int PROTECTED_VALUE = 2;
    /**
     * <code>PUBLIC = 3;</code>
     */
    public static final int PUBLIC_VALUE = 3;
    /**
     * <code>PRIVATE_TO_THIS = 4;</code>
     */
    public static final int PRIVATE_TO_THIS_VALUE = 4;
    /**
     * <code>LOCAL = 5;</code>
     */
    public static final int LOCAL_VALUE = 5;


    public final int getNumber() { return value; }

    public static Visibility valueOf(int value) {
      switch (value) {
        case 0: return INTERNAL;
        case 1: return PRIVATE;
        case 2: return PROTECTED;
        case 3: return PUBLIC;
        case 4: return PRIVATE_TO_THIS;
        case 5: return LOCAL;
        default: return null;
      }
    }

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

    private final int value;

    private Visibility(int index, int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.serialization.Visibility)
  }

  public interface StringTableOrBuilder
      extends com.google.protobuf.MessageLiteOrBuilder {

    // repeated string string = 1;
    /**
     * <code>repeated string string = 1;</code>
     */
    java.util.List<java.lang.String>
    getStringList();
    /**
     * <code>repeated string string = 1;</code>
     */
    int getStringCount();
    /**
     * <code>repeated string string = 1;</code>
     */
    java.lang.String getString(int index);
    /**
     * <code>repeated string string = 1;</code>
     */
    com.google.protobuf.ByteString
        getStringBytes(int index);
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.StringTable}
   */
  public static final class StringTable extends
      com.google.protobuf.GeneratedMessageLite
      implements StringTableOrBuilder {
    // Use StringTable.newBuilder() to construct.
    private StringTable(com.google.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);

    }
    private StringTable(boolean noInit) {}

    private static final StringTable defaultInstance;
    public static StringTable getDefaultInstance() {
      return defaultInstance;
    }

    public StringTable getDefaultInstanceForType() {
      return defaultInstance;
    }

    private StringTable(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                string_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              string_.add(input.readBytes());
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          string_ = new com.google.protobuf.UnmodifiableLazyStringList(string_);
        }
        makeExtensionsImmutable();
      }
    }
    public static com.google.protobuf.Parser<StringTable> PARSER =
        new com.google.protobuf.AbstractParser<StringTable>() {
      public StringTable parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new StringTable(input, extensionRegistry);
      }
    };

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

    // repeated string string = 1;
    public static final int STRING_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList string_;
    /**
     * <code>repeated string string = 1;</code>
     */
    public java.util.List<java.lang.String>
        getStringList() {
      return string_;
    }
    /**
     * <code>repeated string string = 1;</code>
     */
    public int getStringCount() {
      return string_.size();
    }
    /**
     * <code>repeated string string = 1;</code>
     */
    public java.lang.String getString(int index) {
      return string_.get(index);
    }
    /**
     * <code>repeated string string = 1;</code>
     */
    public com.google.protobuf.ByteString
        getStringBytes(int index) {
      return string_.getByteString(index);
    }

    private void initFields() {
      string_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < string_.size(); i++) {
        output.writeBytes(1, string_.getByteString(i));
      }
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < string_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(string_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getStringList().size();
      }
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.jetbrains.kotlin.serialization.ProtoBuf.StringTable parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.StringTable parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.StringTable parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.StringTable parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.StringTable parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.StringTable parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.StringTable parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.StringTable parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.StringTable parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.StringTable parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.jetbrains.kotlin.serialization.ProtoBuf.StringTable prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.StringTable}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.ProtoBuf.StringTable, Builder>
        implements org.jetbrains.kotlin.serialization.ProtoBuf.StringTableOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        string_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.StringTable getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.StringTable build() {
        org.jetbrains.kotlin.serialization.ProtoBuf.StringTable result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.StringTable buildPartial() {
        org.jetbrains.kotlin.serialization.ProtoBuf.StringTable result = new org.jetbrains.kotlin.serialization.ProtoBuf.StringTable(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          string_ = new com.google.protobuf.UnmodifiableLazyStringList(
              string_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.string_ = string_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.ProtoBuf.StringTable other) {
        if (other == org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.getDefaultInstance()) return this;
        if (!other.string_.isEmpty()) {
          if (string_.isEmpty()) {
            string_ = other.string_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureStringIsMutable();
            string_.addAll(other.string_);
          }
          
        }
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.jetbrains.kotlin.serialization.ProtoBuf.StringTable parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.ProtoBuf.StringTable) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated string string = 1;
      private com.google.protobuf.LazyStringList string_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureStringIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          string_ = new com.google.protobuf.LazyStringArrayList(string_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string string = 1;</code>
       */
      public java.util.List<java.lang.String>
          getStringList() {
        return java.util.Collections.unmodifiableList(string_);
      }
      /**
       * <code>repeated string string = 1;</code>
       */
      public int getStringCount() {
        return string_.size();
      }
      /**
       * <code>repeated string string = 1;</code>
       */
      public java.lang.String getString(int index) {
        return string_.get(index);
      }
      /**
       * <code>repeated string string = 1;</code>
       */
      public com.google.protobuf.ByteString
          getStringBytes(int index) {
        return string_.getByteString(index);
      }
      /**
       * <code>repeated string string = 1;</code>
       */
      public Builder setString(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStringIsMutable();
        string_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated string string = 1;</code>
       */
      public Builder addString(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStringIsMutable();
        string_.add(value);
        
        return this;
      }
      /**
       * <code>repeated string string = 1;</code>
       */
      public Builder addAllString(
          java.lang.Iterable<java.lang.String> values) {
        ensureStringIsMutable();
        super.addAll(values, string_);
        
        return this;
      }
      /**
       * <code>repeated string string = 1;</code>
       */
      public Builder clearString() {
        string_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        
        return this;
      }
      /**
       * <code>repeated string string = 1;</code>
       */
      public Builder addStringBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStringIsMutable();
        string_.add(value);
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.StringTable)
    }

    static {
      defaultInstance = new StringTable(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.StringTable)
  }

  public interface QualifiedNameTableOrBuilder
      extends com.google.protobuf.MessageLiteOrBuilder {

    // repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName> 
        getQualifiedNameList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
     */
    org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName getQualifiedName(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
     */
    int getQualifiedNameCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.QualifiedNameTable}
   */
  public static final class QualifiedNameTable extends
      com.google.protobuf.GeneratedMessageLite
      implements QualifiedNameTableOrBuilder {
    // Use QualifiedNameTable.newBuilder() to construct.
    private QualifiedNameTable(com.google.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);

    }
    private QualifiedNameTable(boolean noInit) {}

    private static final QualifiedNameTable defaultInstance;
    public static QualifiedNameTable getDefaultInstance() {
      return defaultInstance;
    }

    public QualifiedNameTable getDefaultInstanceForType() {
      return defaultInstance;
    }

    private QualifiedNameTable(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                qualifiedName_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName>();
                mutable_bitField0_ |= 0x00000001;
              }
              qualifiedName_.add(input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          qualifiedName_ = java.util.Collections.unmodifiableList(qualifiedName_);
        }
        makeExtensionsImmutable();
      }
    }
    public static com.google.protobuf.Parser<QualifiedNameTable> PARSER =
        new com.google.protobuf.AbstractParser<QualifiedNameTable>() {
      public QualifiedNameTable parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new QualifiedNameTable(input, extensionRegistry);
      }
    };

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

    public interface QualifiedNameOrBuilder
        extends com.google.protobuf.MessageLiteOrBuilder {

      // optional int32 parent_qualified_name = 1 [default = -1];
      /**
       * <code>optional int32 parent_qualified_name = 1 [default = -1];</code>
       */
      boolean hasParentQualifiedName();
      /**
       * <code>optional int32 parent_qualified_name = 1 [default = -1];</code>
       */
      int getParentQualifiedName();

      // required int32 short_name = 2;
      /**
       * <code>required int32 short_name = 2;</code>
       *
       * <pre>
       * Id in the StringTable
       * </pre>
       */
      boolean hasShortName();
      /**
       * <code>required int32 short_name = 2;</code>
       *
       * <pre>
       * Id in the StringTable
       * </pre>
       */
      int getShortName();

      // optional .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName.Kind kind = 3 [default = PACKAGE];
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName.Kind kind = 3 [default = PACKAGE];</code>
       */
      boolean hasKind();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName.Kind kind = 3 [default = PACKAGE];</code>
       */
      org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName.Kind getKind();
    }
    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName}
     */
    public static final class QualifiedName extends
        com.google.protobuf.GeneratedMessageLite
        implements QualifiedNameOrBuilder {
      // Use QualifiedName.newBuilder() to construct.
      private QualifiedName(com.google.protobuf.GeneratedMessageLite.Builder builder) {
        super(builder);

      }
      private QualifiedName(boolean noInit) {}

      private static final QualifiedName defaultInstance;
      public static QualifiedName getDefaultInstance() {
        return defaultInstance;
      }

      public QualifiedName getDefaultInstanceForType() {
        return defaultInstance;
      }

      private QualifiedName(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                parentQualifiedName_ = input.readInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                shortName_ = input.readInt32();
                break;
              }
              case 24: {
                int rawValue = input.readEnum();
                org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName.Kind value = org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName.Kind.valueOf(rawValue);
                if (value != null) {
                  bitField0_ |= 0x00000004;
                  kind_ = value;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          makeExtensionsImmutable();
        }
      }
      public static com.google.protobuf.Parser<QualifiedName> PARSER =
          new com.google.protobuf.AbstractParser<QualifiedName>() {
        public QualifiedName parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new QualifiedName(input, extensionRegistry);
        }
      };

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

      /**
       * Protobuf enum {@code org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName.Kind}
       */
      public enum Kind
          implements com.google.protobuf.Internal.EnumLite {
        /**
         * <code>CLASS = 0;</code>
         */
        CLASS(0, 0),
        /**
         * <code>PACKAGE = 1;</code>
         */
        PACKAGE(1, 1),
        /**
         * <code>LOCAL = 2;</code>
         */
        LOCAL(2, 2),
        ;

        /**
         * <code>CLASS = 0;</code>
         */
        public static final int CLASS_VALUE = 0;
        /**
         * <code>PACKAGE = 1;</code>
         */
        public static final int PACKAGE_VALUE = 1;
        /**
         * <code>LOCAL = 2;</code>
         */
        public static final int LOCAL_VALUE = 2;


        public final int getNumber() { return value; }

        public static Kind valueOf(int value) {
          switch (value) {
            case 0: return CLASS;
            case 1: return PACKAGE;
            case 2: return LOCAL;
            default: return null;
          }
        }

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

        private final int value;

        private Kind(int index, int value) {
          this.value = value;
        }

        // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName.Kind)
      }

      private int bitField0_;
      // optional int32 parent_qualified_name = 1 [default = -1];
      public static final int PARENT_QUALIFIED_NAME_FIELD_NUMBER = 1;
      private int parentQualifiedName_;
      /**
       * <code>optional int32 parent_qualified_name = 1 [default = -1];</code>
       */
      public boolean hasParentQualifiedName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int32 parent_qualified_name = 1 [default = -1];</code>
       */
      public int getParentQualifiedName() {
        return parentQualifiedName_;
      }

      // required int32 short_name = 2;
      public static final int SHORT_NAME_FIELD_NUMBER = 2;
      private int shortName_;
      /**
       * <code>required int32 short_name = 2;</code>
       *
       * <pre>
       * Id in the StringTable
       * </pre>
       */
      public boolean hasShortName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 short_name = 2;</code>
       *
       * <pre>
       * Id in the StringTable
       * </pre>
       */
      public int getShortName() {
        return shortName_;
      }

      // optional .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName.Kind kind = 3 [default = PACKAGE];
      public static final int KIND_FIELD_NUMBER = 3;
      private org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName.Kind kind_;
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName.Kind kind = 3 [default = PACKAGE];</code>
       */
      public boolean hasKind() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName.Kind kind = 3 [default = PACKAGE];</code>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName.Kind getKind() {
        return kind_;
      }

      private void initFields() {
        parentQualifiedName_ = -1;
        shortName_ = 0;
        kind_ = org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName.Kind.PACKAGE;
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;

        if (!hasShortName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeInt32(1, parentQualifiedName_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeInt32(2, shortName_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeEnum(3, kind_.getNumber());
        }
      }

      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, parentQualifiedName_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, shortName_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(3, kind_.getNumber());
        }
        memoizedSerializedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }

      public static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }

      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      /**
       * Protobuf type {@code org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName, Builder>
          implements org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedNameOrBuilder {
        // Construct using org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private void maybeForceBuilderInitialization() {
        }
        private static Builder create() {
          return new Builder();
        }

        public Builder clear() {
          super.clear();
          parentQualifiedName_ = -1;
          bitField0_ = (bitField0_ & ~0x00000001);
          shortName_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          kind_ = org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName.Kind.PACKAGE;
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }

        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }

        public org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName getDefaultInstanceForType() {
          return org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName.getDefaultInstance();
        }

        public org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName build() {
          org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName buildPartial() {
          org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName result = new org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.parentQualifiedName_ = parentQualifiedName_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.shortName_ = shortName_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.kind_ = kind_;
          result.bitField0_ = to_bitField0_;
          return result;
        }

        public Builder mergeFrom(org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName other) {
          if (other == org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName.getDefaultInstance()) return this;
          if (other.hasParentQualifiedName()) {
            setParentQualifiedName(other.getParentQualifiedName());
          }
          if (other.hasShortName()) {
            setShortName(other.getShortName());
          }
          if (other.hasKind()) {
            setKind(other.getKind());
          }
          return this;
        }

        public final boolean isInitialized() {
          if (!hasShortName()) {
            
            return false;
          }
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        // optional int32 parent_qualified_name = 1 [default = -1];
        private int parentQualifiedName_ = -1;
        /**
         * <code>optional int32 parent_qualified_name = 1 [default = -1];</code>
         */
        public boolean hasParentQualifiedName() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional int32 parent_qualified_name = 1 [default = -1];</code>
         */
        public int getParentQualifiedName() {
          return parentQualifiedName_;
        }
        /**
         * <code>optional int32 parent_qualified_name = 1 [default = -1];</code>
         */
        public Builder setParentQualifiedName(int value) {
          bitField0_ |= 0x00000001;
          parentQualifiedName_ = value;
          
          return this;
        }
        /**
         * <code>optional int32 parent_qualified_name = 1 [default = -1];</code>
         */
        public Builder clearParentQualifiedName() {
          bitField0_ = (bitField0_ & ~0x00000001);
          parentQualifiedName_ = -1;
          
          return this;
        }

        // required int32 short_name = 2;
        private int shortName_ ;
        /**
         * <code>required int32 short_name = 2;</code>
         *
         * <pre>
         * Id in the StringTable
         * </pre>
         */
        public boolean hasShortName() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required int32 short_name = 2;</code>
         *
         * <pre>
         * Id in the StringTable
         * </pre>
         */
        public int getShortName() {
          return shortName_;
        }
        /**
         * <code>required int32 short_name = 2;</code>
         *
         * <pre>
         * Id in the StringTable
         * </pre>
         */
        public Builder setShortName(int value) {
          bitField0_ |= 0x00000002;
          shortName_ = value;
          
          return this;
        }
        /**
         * <code>required int32 short_name = 2;</code>
         *
         * <pre>
         * Id in the StringTable
         * </pre>
         */
        public Builder clearShortName() {
          bitField0_ = (bitField0_ & ~0x00000002);
          shortName_ = 0;
          
          return this;
        }

        // optional .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName.Kind kind = 3 [default = PACKAGE];
        private org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName.Kind kind_ = org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName.Kind.PACKAGE;
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName.Kind kind = 3 [default = PACKAGE];</code>
         */
        public boolean hasKind() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName.Kind kind = 3 [default = PACKAGE];</code>
         */
        public org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName.Kind getKind() {
          return kind_;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName.Kind kind = 3 [default = PACKAGE];</code>
         */
        public Builder setKind(org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName.Kind value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000004;
          kind_ = value;
          
          return this;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName.Kind kind = 3 [default = PACKAGE];</code>
         */
        public Builder clearKind() {
          bitField0_ = (bitField0_ & ~0x00000004);
          kind_ = org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName.Kind.PACKAGE;
          
          return this;
        }

        // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName)
      }

      static {
        defaultInstance = new QualifiedName(true);
        defaultInstance.initFields();
      }

      // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName)
    }

    // repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;
    public static final int QUALIFIED_NAME_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName> qualifiedName_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName> getQualifiedNameList() {
      return qualifiedName_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedNameOrBuilder> 
        getQualifiedNameOrBuilderList() {
      return qualifiedName_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
     */
    public int getQualifiedNameCount() {
      return qualifiedName_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName getQualifiedName(int index) {
      return qualifiedName_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedNameOrBuilder getQualifiedNameOrBuilder(
        int index) {
      return qualifiedName_.get(index);
    }

    private void initFields() {
      qualifiedName_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      for (int i = 0; i < getQualifiedNameCount(); i++) {
        if (!getQualifiedName(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < qualifiedName_.size(); i++) {
        output.writeMessage(1, qualifiedName_.get(i));
      }
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < qualifiedName_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, qualifiedName_.get(i));
      }
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.QualifiedNameTable}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable, Builder>
        implements org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTableOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        qualifiedName_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable build() {
        org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable buildPartial() {
        org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable result = new org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          qualifiedName_ = java.util.Collections.unmodifiableList(qualifiedName_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.qualifiedName_ = qualifiedName_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable other) {
        if (other == org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.getDefaultInstance()) return this;
        if (!other.qualifiedName_.isEmpty()) {
          if (qualifiedName_.isEmpty()) {
            qualifiedName_ = other.qualifiedName_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureQualifiedNameIsMutable();
            qualifiedName_.addAll(other.qualifiedName_);
          }
          
        }
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getQualifiedNameCount(); i++) {
          if (!getQualifiedName(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;
      private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName> qualifiedName_ =
        java.util.Collections.emptyList();
      private void ensureQualifiedNameIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          qualifiedName_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName>(qualifiedName_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName> getQualifiedNameList() {
        return java.util.Collections.unmodifiableList(qualifiedName_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
       */
      public int getQualifiedNameCount() {
        return qualifiedName_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName getQualifiedName(int index) {
        return qualifiedName_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
       */
      public Builder setQualifiedName(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureQualifiedNameIsMutable();
        qualifiedName_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
       */
      public Builder setQualifiedName(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName.Builder builderForValue) {
        ensureQualifiedNameIsMutable();
        qualifiedName_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
       */
      public Builder addQualifiedName(org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureQualifiedNameIsMutable();
        qualifiedName_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
       */
      public Builder addQualifiedName(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureQualifiedNameIsMutable();
        qualifiedName_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
       */
      public Builder addQualifiedName(
          org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName.Builder builderForValue) {
        ensureQualifiedNameIsMutable();
        qualifiedName_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
       */
      public Builder addQualifiedName(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName.Builder builderForValue) {
        ensureQualifiedNameIsMutable();
        qualifiedName_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
       */
      public Builder addAllQualifiedName(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName> values) {
        ensureQualifiedNameIsMutable();
        super.addAll(values, qualifiedName_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
       */
      public Builder clearQualifiedName() {
        qualifiedName_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
       */
      public Builder removeQualifiedName(int index) {
        ensureQualifiedNameIsMutable();
        qualifiedName_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.QualifiedNameTable)
    }

    static {
      defaultInstance = new QualifiedNameTable(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.QualifiedNameTable)
  }

  public interface AnnotationOrBuilder
      extends com.google.protobuf.MessageLiteOrBuilder {

    // required int32 id = 1;
    /**
     * <code>required int32 id = 1;</code>
     *
     * <pre>
     * Class FQ name id
     * </pre>
     */
    boolean hasId();
    /**
     * <code>required int32 id = 1;</code>
     *
     * <pre>
     * Class FQ name id
     * </pre>
     */
    int getId();

    // repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument> 
        getArgumentList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;</code>
     */
    org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument getArgument(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;</code>
     */
    int getArgumentCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.Annotation}
   */
  public static final class Annotation extends
      com.google.protobuf.GeneratedMessageLite
      implements AnnotationOrBuilder {
    // Use Annotation.newBuilder() to construct.
    private Annotation(com.google.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);

    }
    private Annotation(boolean noInit) {}

    private static final Annotation defaultInstance;
    public static Annotation getDefaultInstance() {
      return defaultInstance;
    }

    public Annotation getDefaultInstanceForType() {
      return defaultInstance;
    }

    private Annotation(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              id_ = input.readInt32();
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                argument_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument>();
                mutable_bitField0_ |= 0x00000002;
              }
              argument_.add(input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          argument_ = java.util.Collections.unmodifiableList(argument_);
        }
        makeExtensionsImmutable();
      }
    }
    public static com.google.protobuf.Parser<Annotation> PARSER =
        new com.google.protobuf.AbstractParser<Annotation>() {
      public Annotation parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Annotation(input, extensionRegistry);
      }
    };

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

    public interface ArgumentOrBuilder
        extends com.google.protobuf.MessageLiteOrBuilder {

      // required int32 name_id = 1;
      /**
       * <code>required int32 name_id = 1;</code>
       *
       * <pre>
       * id in StringTable
       * </pre>
       */
      boolean hasNameId();
      /**
       * <code>required int32 name_id = 1;</code>
       *
       * <pre>
       * id in StringTable
       * </pre>
       */
      int getNameId();

      // required .org.jetbrains.kotlin.serialization.Annotation.Argument.Value value = 2;
      /**
       * <code>required .org.jetbrains.kotlin.serialization.Annotation.Argument.Value value = 2;</code>
       */
      boolean hasValue();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.Annotation.Argument.Value value = 2;</code>
       */
      org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value getValue();
    }
    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.Annotation.Argument}
     */
    public static final class Argument extends
        com.google.protobuf.GeneratedMessageLite
        implements ArgumentOrBuilder {
      // Use Argument.newBuilder() to construct.
      private Argument(com.google.protobuf.GeneratedMessageLite.Builder builder) {
        super(builder);

      }
      private Argument(boolean noInit) {}

      private static final Argument defaultInstance;
      public static Argument getDefaultInstance() {
        return defaultInstance;
      }

      public Argument getDefaultInstanceForType() {
        return defaultInstance;
      }

      private Argument(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                nameId_ = input.readInt32();
                break;
              }
              case 18: {
                org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.Builder subBuilder = null;
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  subBuilder = value_.toBuilder();
                }
                value_ = input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(value_);
                  value_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000002;
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          makeExtensionsImmutable();
        }
      }
      public static com.google.protobuf.Parser<Argument> PARSER =
          new com.google.protobuf.AbstractParser<Argument>() {
        public Argument parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Argument(input, extensionRegistry);
        }
      };

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

      public interface ValueOrBuilder
          extends com.google.protobuf.MessageLiteOrBuilder {

        // optional .org.jetbrains.kotlin.serialization.Annotation.Argument.Value.Type type = 1;
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Annotation.Argument.Value.Type type = 1;</code>
         *
         * <pre>
         * Note: a *Value* has a Type, not an Argument! This is done for future language features which may involve using arrays
         * of elements of different types. Such entries are allowed in the constant pool of JVM class files.
         * However, to save space, this field is optional: in case of homogeneous arrays, only the type of the first element is required
         * </pre>
         */
        boolean hasType();
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Annotation.Argument.Value.Type type = 1;</code>
         *
         * <pre>
         * Note: a *Value* has a Type, not an Argument! This is done for future language features which may involve using arrays
         * of elements of different types. Such entries are allowed in the constant pool of JVM class files.
         * However, to save space, this field is optional: in case of homogeneous arrays, only the type of the first element is required
         * </pre>
         */
        org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.Type getType();

        // optional sint64 int_value = 2;
        /**
         * <code>optional sint64 int_value = 2;</code>
         */
        boolean hasIntValue();
        /**
         * <code>optional sint64 int_value = 2;</code>
         */
        long getIntValue();

        // optional float float_value = 3;
        /**
         * <code>optional float float_value = 3;</code>
         */
        boolean hasFloatValue();
        /**
         * <code>optional float float_value = 3;</code>
         */
        float getFloatValue();

        // optional double double_value = 4;
        /**
         * <code>optional double double_value = 4;</code>
         */
        boolean hasDoubleValue();
        /**
         * <code>optional double double_value = 4;</code>
         */
        double getDoubleValue();

        // optional int32 string_value = 5;
        /**
         * <code>optional int32 string_value = 5;</code>
         *
         * <pre>
         * id in StringTable
         * </pre>
         */
        boolean hasStringValue();
        /**
         * <code>optional int32 string_value = 5;</code>
         *
         * <pre>
         * id in StringTable
         * </pre>
         */
        int getStringValue();

        // optional int32 class_id = 6;
        /**
         * <code>optional int32 class_id = 6;</code>
         *
         * <pre>
         * If type = CLASS, FQ name id of the referenced class; if type = ENUM, FQ name id of the enum class
         * </pre>
         */
        boolean hasClassId();
        /**
         * <code>optional int32 class_id = 6;</code>
         *
         * <pre>
         * If type = CLASS, FQ name id of the referenced class; if type = ENUM, FQ name id of the enum class
         * </pre>
         */
        int getClassId();

        // optional int32 enum_value_id = 7;
        /**
         * <code>optional int32 enum_value_id = 7;</code>
         *
         * <pre>
         * id in StringTable
         * </pre>
         */
        boolean hasEnumValueId();
        /**
         * <code>optional int32 enum_value_id = 7;</code>
         *
         * <pre>
         * id in StringTable
         * </pre>
         */
        int getEnumValueId();

        // optional .org.jetbrains.kotlin.serialization.Annotation annotation = 8;
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Annotation annotation = 8;</code>
         */
        boolean hasAnnotation();
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Annotation annotation = 8;</code>
         */
        org.jetbrains.kotlin.serialization.ProtoBuf.Annotation getAnnotation();

        // repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;
        /**
         * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;</code>
         */
        java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value> 
            getArrayElementList();
        /**
         * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;</code>
         */
        org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value getArrayElement(int index);
        /**
         * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;</code>
         */
        int getArrayElementCount();
      }
      /**
       * Protobuf type {@code org.jetbrains.kotlin.serialization.Annotation.Argument.Value}
       */
      public static final class Value extends
          com.google.protobuf.GeneratedMessageLite
          implements ValueOrBuilder {
        // Use Value.newBuilder() to construct.
        private Value(com.google.protobuf.GeneratedMessageLite.Builder builder) {
          super(builder);

        }
        private Value(boolean noInit) {}

        private static final Value defaultInstance;
        public static Value getDefaultInstance() {
          return defaultInstance;
        }

        public Value getDefaultInstanceForType() {
          return defaultInstance;
        }

        private Value(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  int rawValue = input.readEnum();
                  org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.Type value = org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.Type.valueOf(rawValue);
                  if (value != null) {
                    bitField0_ |= 0x00000001;
                    type_ = value;
                  }
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  intValue_ = input.readSInt64();
                  break;
                }
                case 29: {
                  bitField0_ |= 0x00000004;
                  floatValue_ = input.readFloat();
                  break;
                }
                case 33: {
                  bitField0_ |= 0x00000008;
                  doubleValue_ = input.readDouble();
                  break;
                }
                case 40: {
                  bitField0_ |= 0x00000010;
                  stringValue_ = input.readInt32();
                  break;
                }
                case 48: {
                  bitField0_ |= 0x00000020;
                  classId_ = input.readInt32();
                  break;
                }
                case 56: {
                  bitField0_ |= 0x00000040;
                  enumValueId_ = input.readInt32();
                  break;
                }
                case 66: {
                  org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Builder subBuilder = null;
                  if (((bitField0_ & 0x00000080) == 0x00000080)) {
                    subBuilder = annotation_.toBuilder();
                  }
                  annotation_ = input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.PARSER, extensionRegistry);
                  if (subBuilder != null) {
                    subBuilder.mergeFrom(annotation_);
                    annotation_ = subBuilder.buildPartial();
                  }
                  bitField0_ |= 0x00000080;
                  break;
                }
                case 74: {
                  if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                    arrayElement_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value>();
                    mutable_bitField0_ |= 0x00000100;
                  }
                  arrayElement_.add(input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.PARSER, extensionRegistry));
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e.getMessage()).setUnfinishedMessage(this);
          } finally {
            if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
              arrayElement_ = java.util.Collections.unmodifiableList(arrayElement_);
            }
            makeExtensionsImmutable();
          }
        }
        public static com.google.protobuf.Parser<Value> PARSER =
            new com.google.protobuf.AbstractParser<Value>() {
          public Value parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new Value(input, extensionRegistry);
          }
        };

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

        /**
         * Protobuf enum {@code org.jetbrains.kotlin.serialization.Annotation.Argument.Value.Type}
         */
        public enum Type
            implements com.google.protobuf.Internal.EnumLite {
          /**
           * <code>BYTE = 0;</code>
           */
          BYTE(0, 0),
          /**
           * <code>CHAR = 1;</code>
           */
          CHAR(1, 1),
          /**
           * <code>SHORT = 2;</code>
           */
          SHORT(2, 2),
          /**
           * <code>INT = 3;</code>
           */
          INT(3, 3),
          /**
           * <code>LONG = 4;</code>
           */
          LONG(4, 4),
          /**
           * <code>FLOAT = 5;</code>
           */
          FLOAT(5, 5),
          /**
           * <code>DOUBLE = 6;</code>
           */
          DOUBLE(6, 6),
          /**
           * <code>BOOLEAN = 7;</code>
           */
          BOOLEAN(7, 7),
          /**
           * <code>STRING = 8;</code>
           */
          STRING(8, 8),
          /**
           * <code>CLASS = 9;</code>
           */
          CLASS(9, 9),
          /**
           * <code>ENUM = 10;</code>
           */
          ENUM(10, 10),
          /**
           * <code>ANNOTATION = 11;</code>
           */
          ANNOTATION(11, 11),
          /**
           * <code>ARRAY = 12;</code>
           */
          ARRAY(12, 12),
          ;

          /**
           * <code>BYTE = 0;</code>
           */
          public static final int BYTE_VALUE = 0;
          /**
           * <code>CHAR = 1;</code>
           */
          public static final int CHAR_VALUE = 1;
          /**
           * <code>SHORT = 2;</code>
           */
          public static final int SHORT_VALUE = 2;
          /**
           * <code>INT = 3;</code>
           */
          public static final int INT_VALUE = 3;
          /**
           * <code>LONG = 4;</code>
           */
          public static final int LONG_VALUE = 4;
          /**
           * <code>FLOAT = 5;</code>
           */
          public static final int FLOAT_VALUE = 5;
          /**
           * <code>DOUBLE = 6;</code>
           */
          public static final int DOUBLE_VALUE = 6;
          /**
           * <code>BOOLEAN = 7;</code>
           */
          public static final int BOOLEAN_VALUE = 7;
          /**
           * <code>STRING = 8;</code>
           */
          public static final int STRING_VALUE = 8;
          /**
           * <code>CLASS = 9;</code>
           */
          public static final int CLASS_VALUE = 9;
          /**
           * <code>ENUM = 10;</code>
           */
          public static final int ENUM_VALUE = 10;
          /**
           * <code>ANNOTATION = 11;</code>
           */
          public static final int ANNOTATION_VALUE = 11;
          /**
           * <code>ARRAY = 12;</code>
           */
          public static final int ARRAY_VALUE = 12;


          public final int getNumber() { return value; }

          public static Type valueOf(int value) {
            switch (value) {
              case 0: return BYTE;
              case 1: return CHAR;
              case 2: return SHORT;
              case 3: return INT;
              case 4: return LONG;
              case 5: return FLOAT;
              case 6: return DOUBLE;
              case 7: return BOOLEAN;
              case 8: return STRING;
              case 9: return CLASS;
              case 10: return ENUM;
              case 11: return ANNOTATION;
              case 12: return ARRAY;
              default: return null;
            }
          }

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

          private final int value;

          private Type(int index, int value) {
            this.value = value;
          }

          // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.serialization.Annotation.Argument.Value.Type)
        }

        private int bitField0_;
        // optional .org.jetbrains.kotlin.serialization.Annotation.Argument.Value.Type type = 1;
        public static final int TYPE_FIELD_NUMBER = 1;
        private org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.Type type_;
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Annotation.Argument.Value.Type type = 1;</code>
         *
         * <pre>
         * Note: a *Value* has a Type, not an Argument! This is done for future language features which may involve using arrays
         * of elements of different types. Such entries are allowed in the constant pool of JVM class files.
         * However, to save space, this field is optional: in case of homogeneous arrays, only the type of the first element is required
         * </pre>
         */
        public boolean hasType() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Annotation.Argument.Value.Type type = 1;</code>
         *
         * <pre>
         * Note: a *Value* has a Type, not an Argument! This is done for future language features which may involve using arrays
         * of elements of different types. Such entries are allowed in the constant pool of JVM class files.
         * However, to save space, this field is optional: in case of homogeneous arrays, only the type of the first element is required
         * </pre>
         */
        public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.Type getType() {
          return type_;
        }

        // optional sint64 int_value = 2;
        public static final int INT_VALUE_FIELD_NUMBER = 2;
        private long intValue_;
        /**
         * <code>optional sint64 int_value = 2;</code>
         */
        public boolean hasIntValue() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional sint64 int_value = 2;</code>
         */
        public long getIntValue() {
          return intValue_;
        }

        // optional float float_value = 3;
        public static final int FLOAT_VALUE_FIELD_NUMBER = 3;
        private float floatValue_;
        /**
         * <code>optional float float_value = 3;</code>
         */
        public boolean hasFloatValue() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional float float_value = 3;</code>
         */
        public float getFloatValue() {
          return floatValue_;
        }

        // optional double double_value = 4;
        public static final int DOUBLE_VALUE_FIELD_NUMBER = 4;
        private double doubleValue_;
        /**
         * <code>optional double double_value = 4;</code>
         */
        public boolean hasDoubleValue() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional double double_value = 4;</code>
         */
        public double getDoubleValue() {
          return doubleValue_;
        }

        // optional int32 string_value = 5;
        public static final int STRING_VALUE_FIELD_NUMBER = 5;
        private int stringValue_;
        /**
         * <code>optional int32 string_value = 5;</code>
         *
         * <pre>
         * id in StringTable
         * </pre>
         */
        public boolean hasStringValue() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * <code>optional int32 string_value = 5;</code>
         *
         * <pre>
         * id in StringTable
         * </pre>
         */
        public int getStringValue() {
          return stringValue_;
        }

        // optional int32 class_id = 6;
        public static final int CLASS_ID_FIELD_NUMBER = 6;
        private int classId_;
        /**
         * <code>optional int32 class_id = 6;</code>
         *
         * <pre>
         * If type = CLASS, FQ name id of the referenced class; if type = ENUM, FQ name id of the enum class
         * </pre>
         */
        public boolean hasClassId() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * <code>optional int32 class_id = 6;</code>
         *
         * <pre>
         * If type = CLASS, FQ name id of the referenced class; if type = ENUM, FQ name id of the enum class
         * </pre>
         */
        public int getClassId() {
          return classId_;
        }

        // optional int32 enum_value_id = 7;
        public static final int ENUM_VALUE_ID_FIELD_NUMBER = 7;
        private int enumValueId_;
        /**
         * <code>optional int32 enum_value_id = 7;</code>
         *
         * <pre>
         * id in StringTable
         * </pre>
         */
        public boolean hasEnumValueId() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        /**
         * <code>optional int32 enum_value_id = 7;</code>
         *
         * <pre>
         * id in StringTable
         * </pre>
         */
        public int getEnumValueId() {
          return enumValueId_;
        }

        // optional .org.jetbrains.kotlin.serialization.Annotation annotation = 8;
        public static final int ANNOTATION_FIELD_NUMBER = 8;
        private org.jetbrains.kotlin.serialization.ProtoBuf.Annotation annotation_;
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Annotation annotation = 8;</code>
         */
        public boolean hasAnnotation() {
          return ((bitField0_ & 0x00000080) == 0x00000080);
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Annotation annotation = 8;</code>
         */
        public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation getAnnotation() {
          return annotation_;
        }

        // repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;
        public static final int ARRAY_ELEMENT_FIELD_NUMBER = 9;
        private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value> arrayElement_;
        /**
         * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;</code>
         */
        public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value> getArrayElementList() {
          return arrayElement_;
        }
        /**
         * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;</code>
         */
        public java.util.List<? extends org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.ValueOrBuilder> 
            getArrayElementOrBuilderList() {
          return arrayElement_;
        }
        /**
         * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;</code>
         */
        public int getArrayElementCount() {
          return arrayElement_.size();
        }
        /**
         * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;</code>
         */
        public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value getArrayElement(int index) {
          return arrayElement_.get(index);
        }
        /**
         * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;</code>
         */
        public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.ValueOrBuilder getArrayElementOrBuilder(
            int index) {
          return arrayElement_.get(index);
        }

        private void initFields() {
          type_ = org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.Type.BYTE;
          intValue_ = 0L;
          floatValue_ = 0F;
          doubleValue_ = 0D;
          stringValue_ = 0;
          classId_ = 0;
          enumValueId_ = 0;
          annotation_ = org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.getDefaultInstance();
          arrayElement_ = java.util.Collections.emptyList();
        }
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized != -1) return isInitialized == 1;

          if (hasAnnotation()) {
            if (!getAnnotation().isInitialized()) {
              memoizedIsInitialized = 0;
              return false;
            }
          }
          for (int i = 0; i < getArrayElementCount(); i++) {
            if (!getArrayElement(i).isInitialized()) {
              memoizedIsInitialized = 0;
              return false;
            }
          }
          memoizedIsInitialized = 1;
          return true;
        }

        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getSerializedSize();
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeEnum(1, type_.getNumber());
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeSInt64(2, intValue_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeFloat(3, floatValue_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeDouble(4, doubleValue_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            output.writeInt32(5, stringValue_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            output.writeInt32(6, classId_);
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            output.writeInt32(7, enumValueId_);
          }
          if (((bitField0_ & 0x00000080) == 0x00000080)) {
            output.writeMessage(8, annotation_);
          }
          for (int i = 0; i < arrayElement_.size(); i++) {
            output.writeMessage(9, arrayElement_.get(i));
          }
        }

        private int memoizedSerializedSize = -1;
        public int getSerializedSize() {
          int size = memoizedSerializedSize;
          if (size != -1) return size;

          size = 0;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeEnumSize(1, type_.getNumber());
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeSInt64Size(2, intValue_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeFloatSize(3, floatValue_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeDoubleSize(4, doubleValue_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt32Size(5, stringValue_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt32Size(6, classId_);
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt32Size(7, enumValueId_);
          }
          if (((bitField0_ & 0x00000080) == 0x00000080)) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(8, annotation_);
          }
          for (int i = 0; i < arrayElement_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(9, arrayElement_.get(i));
          }
          memoizedSerializedSize = size;
          return size;
        }

        private static final long serialVersionUID = 0L;
        @java.lang.Override
        protected java.lang.Object writeReplace()
            throws java.io.ObjectStreamException {
          return super.writeReplace();
        }

        public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        /**
         * Protobuf type {@code org.jetbrains.kotlin.serialization.Annotation.Argument.Value}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageLite.Builder<
              org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value, Builder>
            implements org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.ValueOrBuilder {
          // Construct using org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

          private void maybeForceBuilderInitialization() {
          }
          private static Builder create() {
            return new Builder();
          }

          public Builder clear() {
            super.clear();
            type_ = org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.Type.BYTE;
            bitField0_ = (bitField0_ & ~0x00000001);
            intValue_ = 0L;
            bitField0_ = (bitField0_ & ~0x00000002);
            floatValue_ = 0F;
            bitField0_ = (bitField0_ & ~0x00000004);
            doubleValue_ = 0D;
            bitField0_ = (bitField0_ & ~0x00000008);
            stringValue_ = 0;
            bitField0_ = (bitField0_ & ~0x00000010);
            classId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000020);
            enumValueId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000040);
            annotation_ = org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.getDefaultInstance();
            bitField0_ = (bitField0_ & ~0x00000080);
            arrayElement_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000100);
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value getDefaultInstanceForType() {
            return org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.getDefaultInstance();
          }

          public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value build() {
            org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value buildPartial() {
            org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value result = new org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.type_ = type_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.intValue_ = intValue_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.floatValue_ = floatValue_;
            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x00000008;
            }
            result.doubleValue_ = doubleValue_;
            if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
              to_bitField0_ |= 0x00000010;
            }
            result.stringValue_ = stringValue_;
            if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
              to_bitField0_ |= 0x00000020;
            }
            result.classId_ = classId_;
            if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
              to_bitField0_ |= 0x00000040;
            }
            result.enumValueId_ = enumValueId_;
            if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
              to_bitField0_ |= 0x00000080;
            }
            result.annotation_ = annotation_;
            if (((bitField0_ & 0x00000100) == 0x00000100)) {
              arrayElement_ = java.util.Collections.unmodifiableList(arrayElement_);
              bitField0_ = (bitField0_ & ~0x00000100);
            }
            result.arrayElement_ = arrayElement_;
            result.bitField0_ = to_bitField0_;
            return result;
          }

          public Builder mergeFrom(org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value other) {
            if (other == org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.getDefaultInstance()) return this;
            if (other.hasType()) {
              setType(other.getType());
            }
            if (other.hasIntValue()) {
              setIntValue(other.getIntValue());
            }
            if (other.hasFloatValue()) {
              setFloatValue(other.getFloatValue());
            }
            if (other.hasDoubleValue()) {
              setDoubleValue(other.getDoubleValue());
            }
            if (other.hasStringValue()) {
              setStringValue(other.getStringValue());
            }
            if (other.hasClassId()) {
              setClassId(other.getClassId());
            }
            if (other.hasEnumValueId()) {
              setEnumValueId(other.getEnumValueId());
            }
            if (other.hasAnnotation()) {
              mergeAnnotation(other.getAnnotation());
            }
            if (!other.arrayElement_.isEmpty()) {
              if (arrayElement_.isEmpty()) {
                arrayElement_ = other.arrayElement_;
                bitField0_ = (bitField0_ & ~0x00000100);
              } else {
                ensureArrayElementIsMutable();
                arrayElement_.addAll(other.arrayElement_);
              }
              
            }
            return this;
          }

          public final boolean isInitialized() {
            if (hasAnnotation()) {
              if (!getAnnotation().isInitialized()) {
                
                return false;
              }
            }
            for (int i = 0; i < getArrayElementCount(); i++) {
              if (!getArrayElement(i).isInitialized()) {
                
                return false;
              }
            }
            return true;
          }

          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          // optional .org.jetbrains.kotlin.serialization.Annotation.Argument.Value.Type type = 1;
          private org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.Type type_ = org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.Type.BYTE;
          /**
           * <code>optional .org.jetbrains.kotlin.serialization.Annotation.Argument.Value.Type type = 1;</code>
           *
           * <pre>
           * Note: a *Value* has a Type, not an Argument! This is done for future language features which may involve using arrays
           * of elements of different types. Such entries are allowed in the constant pool of JVM class files.
           * However, to save space, this field is optional: in case of homogeneous arrays, only the type of the first element is required
           * </pre>
           */
          public boolean hasType() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * <code>optional .org.jetbrains.kotlin.serialization.Annotation.Argument.Value.Type type = 1;</code>
           *
           * <pre>
           * Note: a *Value* has a Type, not an Argument! This is done for future language features which may involve using arrays
           * of elements of different types. Such entries are allowed in the constant pool of JVM class files.
           * However, to save space, this field is optional: in case of homogeneous arrays, only the type of the first element is required
           * </pre>
           */
          public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.Type getType() {
            return type_;
          }
          /**
           * <code>optional .org.jetbrains.kotlin.serialization.Annotation.Argument.Value.Type type = 1;</code>
           *
           * <pre>
           * Note: a *Value* has a Type, not an Argument! This is done for future language features which may involve using arrays
           * of elements of different types. Such entries are allowed in the constant pool of JVM class files.
           * However, to save space, this field is optional: in case of homogeneous arrays, only the type of the first element is required
           * </pre>
           */
          public Builder setType(org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.Type value) {
            if (value == null) {
              throw new NullPointerException();
            }
            bitField0_ |= 0x00000001;
            type_ = value;
            
            return this;
          }
          /**
           * <code>optional .org.jetbrains.kotlin.serialization.Annotation.Argument.Value.Type type = 1;</code>
           *
           * <pre>
           * Note: a *Value* has a Type, not an Argument! This is done for future language features which may involve using arrays
           * of elements of different types. Such entries are allowed in the constant pool of JVM class files.
           * However, to save space, this field is optional: in case of homogeneous arrays, only the type of the first element is required
           * </pre>
           */
          public Builder clearType() {
            bitField0_ = (bitField0_ & ~0x00000001);
            type_ = org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.Type.BYTE;
            
            return this;
          }

          // optional sint64 int_value = 2;
          private long intValue_ ;
          /**
           * <code>optional sint64 int_value = 2;</code>
           */
          public boolean hasIntValue() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * <code>optional sint64 int_value = 2;</code>
           */
          public long getIntValue() {
            return intValue_;
          }
          /**
           * <code>optional sint64 int_value = 2;</code>
           */
          public Builder setIntValue(long value) {
            bitField0_ |= 0x00000002;
            intValue_ = value;
            
            return this;
          }
          /**
           * <code>optional sint64 int_value = 2;</code>
           */
          public Builder clearIntValue() {
            bitField0_ = (bitField0_ & ~0x00000002);
            intValue_ = 0L;
            
            return this;
          }

          // optional float float_value = 3;
          private float floatValue_ ;
          /**
           * <code>optional float float_value = 3;</code>
           */
          public boolean hasFloatValue() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * <code>optional float float_value = 3;</code>
           */
          public float getFloatValue() {
            return floatValue_;
          }
          /**
           * <code>optional float float_value = 3;</code>
           */
          public Builder setFloatValue(float value) {
            bitField0_ |= 0x00000004;
            floatValue_ = value;
            
            return this;
          }
          /**
           * <code>optional float float_value = 3;</code>
           */
          public Builder clearFloatValue() {
            bitField0_ = (bitField0_ & ~0x00000004);
            floatValue_ = 0F;
            
            return this;
          }

          // optional double double_value = 4;
          private double doubleValue_ ;
          /**
           * <code>optional double double_value = 4;</code>
           */
          public boolean hasDoubleValue() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          /**
           * <code>optional double double_value = 4;</code>
           */
          public double getDoubleValue() {
            return doubleValue_;
          }
          /**
           * <code>optional double double_value = 4;</code>
           */
          public Builder setDoubleValue(double value) {
            bitField0_ |= 0x00000008;
            doubleValue_ = value;
            
            return this;
          }
          /**
           * <code>optional double double_value = 4;</code>
           */
          public Builder clearDoubleValue() {
            bitField0_ = (bitField0_ & ~0x00000008);
            doubleValue_ = 0D;
            
            return this;
          }

          // optional int32 string_value = 5;
          private int stringValue_ ;
          /**
           * <code>optional int32 string_value = 5;</code>
           *
           * <pre>
           * id in StringTable
           * </pre>
           */
          public boolean hasStringValue() {
            return ((bitField0_ & 0x00000010) == 0x00000010);
          }
          /**
           * <code>optional int32 string_value = 5;</code>
           *
           * <pre>
           * id in StringTable
           * </pre>
           */
          public int getStringValue() {
            return stringValue_;
          }
          /**
           * <code>optional int32 string_value = 5;</code>
           *
           * <pre>
           * id in StringTable
           * </pre>
           */
          public Builder setStringValue(int value) {
            bitField0_ |= 0x00000010;
            stringValue_ = value;
            
            return this;
          }
          /**
           * <code>optional int32 string_value = 5;</code>
           *
           * <pre>
           * id in StringTable
           * </pre>
           */
          public Builder clearStringValue() {
            bitField0_ = (bitField0_ & ~0x00000010);
            stringValue_ = 0;
            
            return this;
          }

          // optional int32 class_id = 6;
          private int classId_ ;
          /**
           * <code>optional int32 class_id = 6;</code>
           *
           * <pre>
           * If type = CLASS, FQ name id of the referenced class; if type = ENUM, FQ name id of the enum class
           * </pre>
           */
          public boolean hasClassId() {
            return ((bitField0_ & 0x00000020) == 0x00000020);
          }
          /**
           * <code>optional int32 class_id = 6;</code>
           *
           * <pre>
           * If type = CLASS, FQ name id of the referenced class; if type = ENUM, FQ name id of the enum class
           * </pre>
           */
          public int getClassId() {
            return classId_;
          }
          /**
           * <code>optional int32 class_id = 6;</code>
           *
           * <pre>
           * If type = CLASS, FQ name id of the referenced class; if type = ENUM, FQ name id of the enum class
           * </pre>
           */
          public Builder setClassId(int value) {
            bitField0_ |= 0x00000020;
            classId_ = value;
            
            return this;
          }
          /**
           * <code>optional int32 class_id = 6;</code>
           *
           * <pre>
           * If type = CLASS, FQ name id of the referenced class; if type = ENUM, FQ name id of the enum class
           * </pre>
           */
          public Builder clearClassId() {
            bitField0_ = (bitField0_ & ~0x00000020);
            classId_ = 0;
            
            return this;
          }

          // optional int32 enum_value_id = 7;
          private int enumValueId_ ;
          /**
           * <code>optional int32 enum_value_id = 7;</code>
           *
           * <pre>
           * id in StringTable
           * </pre>
           */
          public boolean hasEnumValueId() {
            return ((bitField0_ & 0x00000040) == 0x00000040);
          }
          /**
           * <code>optional int32 enum_value_id = 7;</code>
           *
           * <pre>
           * id in StringTable
           * </pre>
           */
          public int getEnumValueId() {
            return enumValueId_;
          }
          /**
           * <code>optional int32 enum_value_id = 7;</code>
           *
           * <pre>
           * id in StringTable
           * </pre>
           */
          public Builder setEnumValueId(int value) {
            bitField0_ |= 0x00000040;
            enumValueId_ = value;
            
            return this;
          }
          /**
           * <code>optional int32 enum_value_id = 7;</code>
           *
           * <pre>
           * id in StringTable
           * </pre>
           */
          public Builder clearEnumValueId() {
            bitField0_ = (bitField0_ & ~0x00000040);
            enumValueId_ = 0;
            
            return this;
          }

          // optional .org.jetbrains.kotlin.serialization.Annotation annotation = 8;
          private org.jetbrains.kotlin.serialization.ProtoBuf.Annotation annotation_ = org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.getDefaultInstance();
          /**
           * <code>optional .org.jetbrains.kotlin.serialization.Annotation annotation = 8;</code>
           */
          public boolean hasAnnotation() {
            return ((bitField0_ & 0x00000080) == 0x00000080);
          }
          /**
           * <code>optional .org.jetbrains.kotlin.serialization.Annotation annotation = 8;</code>
           */
          public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation getAnnotation() {
            return annotation_;
          }
          /**
           * <code>optional .org.jetbrains.kotlin.serialization.Annotation annotation = 8;</code>
           */
          public Builder setAnnotation(org.jetbrains.kotlin.serialization.ProtoBuf.Annotation value) {
            if (value == null) {
              throw new NullPointerException();
            }
            annotation_ = value;

            bitField0_ |= 0x00000080;
            return this;
          }
          /**
           * <code>optional .org.jetbrains.kotlin.serialization.Annotation annotation = 8;</code>
           */
          public Builder setAnnotation(
              org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Builder builderForValue) {
            annotation_ = builderForValue.build();

            bitField0_ |= 0x00000080;
            return this;
          }
          /**
           * <code>optional .org.jetbrains.kotlin.serialization.Annotation annotation = 8;</code>
           */
          public Builder mergeAnnotation(org.jetbrains.kotlin.serialization.ProtoBuf.Annotation value) {
            if (((bitField0_ & 0x00000080) == 0x00000080) &&
                annotation_ != org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.getDefaultInstance()) {
              annotation_ =
                org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.newBuilder(annotation_).mergeFrom(value).buildPartial();
            } else {
              annotation_ = value;
            }

            bitField0_ |= 0x00000080;
            return this;
          }
          /**
           * <code>optional .org.jetbrains.kotlin.serialization.Annotation annotation = 8;</code>
           */
          public Builder clearAnnotation() {
            annotation_ = org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.getDefaultInstance();

            bitField0_ = (bitField0_ & ~0x00000080);
            return this;
          }

          // repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;
          private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value> arrayElement_ =
            java.util.Collections.emptyList();
          private void ensureArrayElementIsMutable() {
            if (!((bitField0_ & 0x00000100) == 0x00000100)) {
              arrayElement_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value>(arrayElement_);
              bitField0_ |= 0x00000100;
             }
          }

          /**
           * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;</code>
           */
          public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value> getArrayElementList() {
            return java.util.Collections.unmodifiableList(arrayElement_);
          }
          /**
           * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;</code>
           */
          public int getArrayElementCount() {
            return arrayElement_.size();
          }
          /**
           * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;</code>
           */
          public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value getArrayElement(int index) {
            return arrayElement_.get(index);
          }
          /**
           * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;</code>
           */
          public Builder setArrayElement(
              int index, org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value value) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureArrayElementIsMutable();
            arrayElement_.set(index, value);

            return this;
          }
          /**
           * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;</code>
           */
          public Builder setArrayElement(
              int index, org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.Builder builderForValue) {
            ensureArrayElementIsMutable();
            arrayElement_.set(index, builderForValue.build());

            return this;
          }
          /**
           * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;</code>
           */
          public Builder addArrayElement(org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value value) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureArrayElementIsMutable();
            arrayElement_.add(value);

            return this;
          }
          /**
           * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;</code>
           */
          public Builder addArrayElement(
              int index, org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value value) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureArrayElementIsMutable();
            arrayElement_.add(index, value);

            return this;
          }
          /**
           * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;</code>
           */
          public Builder addArrayElement(
              org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.Builder builderForValue) {
            ensureArrayElementIsMutable();
            arrayElement_.add(builderForValue.build());

            return this;
          }
          /**
           * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;</code>
           */
          public Builder addArrayElement(
              int index, org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.Builder builderForValue) {
            ensureArrayElementIsMutable();
            arrayElement_.add(index, builderForValue.build());

            return this;
          }
          /**
           * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;</code>
           */
          public Builder addAllArrayElement(
              java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value> values) {
            ensureArrayElementIsMutable();
            super.addAll(values, arrayElement_);

            return this;
          }
          /**
           * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;</code>
           */
          public Builder clearArrayElement() {
            arrayElement_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000100);

            return this;
          }
          /**
           * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument.Value array_element = 9;</code>
           */
          public Builder removeArrayElement(int index) {
            ensureArrayElementIsMutable();
            arrayElement_.remove(index);

            return this;
          }

          // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.Annotation.Argument.Value)
        }

        static {
          defaultInstance = new Value(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.Annotation.Argument.Value)
      }

      private int bitField0_;
      // required int32 name_id = 1;
      public static final int NAME_ID_FIELD_NUMBER = 1;
      private int nameId_;
      /**
       * <code>required int32 name_id = 1;</code>
       *
       * <pre>
       * id in StringTable
       * </pre>
       */
      public boolean hasNameId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 name_id = 1;</code>
       *
       * <pre>
       * id in StringTable
       * </pre>
       */
      public int getNameId() {
        return nameId_;
      }

      // required .org.jetbrains.kotlin.serialization.Annotation.Argument.Value value = 2;
      public static final int VALUE_FIELD_NUMBER = 2;
      private org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value value_;
      /**
       * <code>required .org.jetbrains.kotlin.serialization.Annotation.Argument.Value value = 2;</code>
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.Annotation.Argument.Value value = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value getValue() {
        return value_;
      }

      private void initFields() {
        nameId_ = 0;
        value_ = org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.getDefaultInstance();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;

        if (!hasNameId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasValue()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getValue().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeInt32(1, nameId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(2, value_);
        }
      }

      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, nameId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, value_);
        }
        memoizedSerializedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }

      public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }

      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      /**
       * Protobuf type {@code org.jetbrains.kotlin.serialization.Annotation.Argument}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument, Builder>
          implements org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.ArgumentOrBuilder {
        // Construct using org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private void maybeForceBuilderInitialization() {
        }
        private static Builder create() {
          return new Builder();
        }

        public Builder clear() {
          super.clear();
          nameId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          value_ = org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.getDefaultInstance();
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }

        public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument getDefaultInstanceForType() {
          return org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.getDefaultInstance();
        }

        public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument build() {
          org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument buildPartial() {
          org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument result = new org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.nameId_ = nameId_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.value_ = value_;
          result.bitField0_ = to_bitField0_;
          return result;
        }

        public Builder mergeFrom(org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument other) {
          if (other == org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.getDefaultInstance()) return this;
          if (other.hasNameId()) {
            setNameId(other.getNameId());
          }
          if (other.hasValue()) {
            mergeValue(other.getValue());
          }
          return this;
        }

        public final boolean isInitialized() {
          if (!hasNameId()) {
            
            return false;
          }
          if (!hasValue()) {
            
            return false;
          }
          if (!getValue().isInitialized()) {
            
            return false;
          }
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        // required int32 name_id = 1;
        private int nameId_ ;
        /**
         * <code>required int32 name_id = 1;</code>
         *
         * <pre>
         * id in StringTable
         * </pre>
         */
        public boolean hasNameId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required int32 name_id = 1;</code>
         *
         * <pre>
         * id in StringTable
         * </pre>
         */
        public int getNameId() {
          return nameId_;
        }
        /**
         * <code>required int32 name_id = 1;</code>
         *
         * <pre>
         * id in StringTable
         * </pre>
         */
        public Builder setNameId(int value) {
          bitField0_ |= 0x00000001;
          nameId_ = value;
          
          return this;
        }
        /**
         * <code>required int32 name_id = 1;</code>
         *
         * <pre>
         * id in StringTable
         * </pre>
         */
        public Builder clearNameId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          nameId_ = 0;
          
          return this;
        }

        // required .org.jetbrains.kotlin.serialization.Annotation.Argument.Value value = 2;
        private org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value value_ = org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.getDefaultInstance();
        /**
         * <code>required .org.jetbrains.kotlin.serialization.Annotation.Argument.Value value = 2;</code>
         */
        public boolean hasValue() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required .org.jetbrains.kotlin.serialization.Annotation.Argument.Value value = 2;</code>
         */
        public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value getValue() {
          return value_;
        }
        /**
         * <code>required .org.jetbrains.kotlin.serialization.Annotation.Argument.Value value = 2;</code>
         */
        public Builder setValue(org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value value) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;

          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .org.jetbrains.kotlin.serialization.Annotation.Argument.Value value = 2;</code>
         */
        public Builder setValue(
            org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.Builder builderForValue) {
          value_ = builderForValue.build();

          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .org.jetbrains.kotlin.serialization.Annotation.Argument.Value value = 2;</code>
         */
        public Builder mergeValue(org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value value) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              value_ != org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.getDefaultInstance()) {
            value_ =
              org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.newBuilder(value_).mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }

          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .org.jetbrains.kotlin.serialization.Annotation.Argument.Value value = 2;</code>
         */
        public Builder clearValue() {
          value_ = org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.getDefaultInstance();

          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.Annotation.Argument)
      }

      static {
        defaultInstance = new Argument(true);
        defaultInstance.initFields();
      }

      // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.Annotation.Argument)
    }

    private int bitField0_;
    // required int32 id = 1;
    public static final int ID_FIELD_NUMBER = 1;
    private int id_;
    /**
     * <code>required int32 id = 1;</code>
     *
     * <pre>
     * Class FQ name id
     * </pre>
     */
    public boolean hasId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 id = 1;</code>
     *
     * <pre>
     * Class FQ name id
     * </pre>
     */
    public int getId() {
      return id_;
    }

    // repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;
    public static final int ARGUMENT_FIELD_NUMBER = 2;
    private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument> argument_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument> getArgumentList() {
      return argument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.ArgumentOrBuilder> 
        getArgumentOrBuilderList() {
      return argument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;</code>
     */
    public int getArgumentCount() {
      return argument_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument getArgument(int index) {
      return argument_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.ArgumentOrBuilder getArgumentOrBuilder(
        int index) {
      return argument_.get(index);
    }

    private void initFields() {
      id_ = 0;
      argument_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getArgumentCount(); i++) {
        if (!getArgument(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, id_);
      }
      for (int i = 0; i < argument_.size(); i++) {
        output.writeMessage(2, argument_.get(i));
      }
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, id_);
      }
      for (int i = 0; i < argument_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, argument_.get(i));
      }
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Annotation parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.jetbrains.kotlin.serialization.ProtoBuf.Annotation prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.Annotation}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.ProtoBuf.Annotation, Builder>
        implements org.jetbrains.kotlin.serialization.ProtoBuf.AnnotationOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        id_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        argument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation build() {
        org.jetbrains.kotlin.serialization.ProtoBuf.Annotation result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation buildPartial() {
        org.jetbrains.kotlin.serialization.ProtoBuf.Annotation result = new org.jetbrains.kotlin.serialization.ProtoBuf.Annotation(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.id_ = id_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          argument_ = java.util.Collections.unmodifiableList(argument_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.argument_ = argument_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.ProtoBuf.Annotation other) {
        if (other == org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.getDefaultInstance()) return this;
        if (other.hasId()) {
          setId(other.getId());
        }
        if (!other.argument_.isEmpty()) {
          if (argument_.isEmpty()) {
            argument_ = other.argument_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureArgumentIsMutable();
            argument_.addAll(other.argument_);
          }
          
        }
        return this;
      }

      public final boolean isInitialized() {
        if (!hasId()) {
          
          return false;
        }
        for (int i = 0; i < getArgumentCount(); i++) {
          if (!getArgument(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.jetbrains.kotlin.serialization.ProtoBuf.Annotation parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.ProtoBuf.Annotation) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required int32 id = 1;
      private int id_ ;
      /**
       * <code>required int32 id = 1;</code>
       *
       * <pre>
       * Class FQ name id
       * </pre>
       */
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 id = 1;</code>
       *
       * <pre>
       * Class FQ name id
       * </pre>
       */
      public int getId() {
        return id_;
      }
      /**
       * <code>required int32 id = 1;</code>
       *
       * <pre>
       * Class FQ name id
       * </pre>
       */
      public Builder setId(int value) {
        bitField0_ |= 0x00000001;
        id_ = value;
        
        return this;
      }
      /**
       * <code>required int32 id = 1;</code>
       *
       * <pre>
       * Class FQ name id
       * </pre>
       */
      public Builder clearId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        id_ = 0;
        
        return this;
      }

      // repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;
      private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument> argument_ =
        java.util.Collections.emptyList();
      private void ensureArgumentIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          argument_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument>(argument_);
          bitField0_ |= 0x00000002;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument> getArgumentList() {
        return java.util.Collections.unmodifiableList(argument_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;</code>
       */
      public int getArgumentCount() {
        return argument_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument getArgument(int index) {
        return argument_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;</code>
       */
      public Builder setArgument(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureArgumentIsMutable();
        argument_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;</code>
       */
      public Builder setArgument(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Builder builderForValue) {
        ensureArgumentIsMutable();
        argument_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;</code>
       */
      public Builder addArgument(org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureArgumentIsMutable();
        argument_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;</code>
       */
      public Builder addArgument(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureArgumentIsMutable();
        argument_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;</code>
       */
      public Builder addArgument(
          org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Builder builderForValue) {
        ensureArgumentIsMutable();
        argument_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;</code>
       */
      public Builder addArgument(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Builder builderForValue) {
        ensureArgumentIsMutable();
        argument_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;</code>
       */
      public Builder addAllArgument(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument> values) {
        ensureArgumentIsMutable();
        super.addAll(values, argument_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;</code>
       */
      public Builder clearArgument() {
        argument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Annotation.Argument argument = 2;</code>
       */
      public Builder removeArgument(int index) {
        ensureArgumentIsMutable();
        argument_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.Annotation)
    }

    static {
      defaultInstance = new Annotation(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.Annotation)
  }

  public interface TypeOrBuilder extends 
       com.google.protobuf.GeneratedMessageLite.
            ExtendableMessageOrBuilder<Type> {

    // required .org.jetbrains.kotlin.serialization.Type.Constructor constructor = 1;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.Type.Constructor constructor = 1;</code>
     */
    boolean hasConstructor();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.Type.Constructor constructor = 1;</code>
     */
    org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor getConstructor();

    // repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument> 
        getArgumentList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;</code>
     */
    org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument getArgument(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;</code>
     */
    int getArgumentCount();

    // optional bool nullable = 3 [default = false];
    /**
     * <code>optional bool nullable = 3 [default = false];</code>
     */
    boolean hasNullable();
    /**
     * <code>optional bool nullable = 3 [default = false];</code>
     */
    boolean getNullable();

    // optional int32 flexible_type_capabilities_id = 4;
    /**
     * <code>optional int32 flexible_type_capabilities_id = 4;</code>
     *
     * <pre>
     * Id in the StringTable
     * If this field is set, the type is flexible.
     * All the other fields and extensions represent its lower bound, and flexible_upper_bound must be set and represents its upper bound.
     * </pre>
     */
    boolean hasFlexibleTypeCapabilitiesId();
    /**
     * <code>optional int32 flexible_type_capabilities_id = 4;</code>
     *
     * <pre>
     * Id in the StringTable
     * If this field is set, the type is flexible.
     * All the other fields and extensions represent its lower bound, and flexible_upper_bound must be set and represents its upper bound.
     * </pre>
     */
    int getFlexibleTypeCapabilitiesId();

    // optional .org.jetbrains.kotlin.serialization.Type flexible_upper_bound = 5;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.Type flexible_upper_bound = 5;</code>
     *
     * <pre>
     * While such an "indirect" encoding helps backwards compatibility with pre-flexible-types versions of this format,
     * we use it mainly to save space: having a special mandatory tag on each an every type just to have an option
     * to represent flexible types is too many wasted bytes.
     * </pre>
     */
    boolean hasFlexibleUpperBound();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.Type flexible_upper_bound = 5;</code>
     *
     * <pre>
     * While such an "indirect" encoding helps backwards compatibility with pre-flexible-types versions of this format,
     * we use it mainly to save space: having a special mandatory tag on each an every type just to have an option
     * to represent flexible types is too many wasted bytes.
     * </pre>
     */
    org.jetbrains.kotlin.serialization.ProtoBuf.Type getFlexibleUpperBound();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.Type}
   */
  public static final class Type extends
      com.google.protobuf.GeneratedMessageLite.ExtendableMessage<
        Type> implements TypeOrBuilder {
    // Use Type.newBuilder() to construct.
    private Type(com.google.protobuf.GeneratedMessageLite.ExtendableBuilder<org.jetbrains.kotlin.serialization.ProtoBuf.Type, ?> builder) {
      super(builder);

    }
    private Type(boolean noInit) {}

    private static final Type defaultInstance;
    public static Type getDefaultInstance() {
      return defaultInstance;
    }

    public Type getDefaultInstanceForType() {
      return defaultInstance;
    }

    private Type(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = constructor_.toBuilder();
              }
              constructor_ = input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(constructor_);
                constructor_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                argument_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument>();
                mutable_bitField0_ |= 0x00000002;
              }
              argument_.add(input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument.PARSER, extensionRegistry));
              break;
            }
            case 24: {
              bitField0_ |= 0x00000002;
              nullable_ = input.readBool();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000004;
              flexibleTypeCapabilitiesId_ = input.readInt32();
              break;
            }
            case 42: {
              org.jetbrains.kotlin.serialization.ProtoBuf.Type.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = flexibleUpperBound_.toBuilder();
              }
              flexibleUpperBound_ = input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Type.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(flexibleUpperBound_);
                flexibleUpperBound_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          argument_ = java.util.Collections.unmodifiableList(argument_);
        }
        makeExtensionsImmutable();
      }
    }
    public static com.google.protobuf.Parser<Type> PARSER =
        new com.google.protobuf.AbstractParser<Type>() {
      public Type parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Type(input, extensionRegistry);
      }
    };

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

    public interface ConstructorOrBuilder
        extends com.google.protobuf.MessageLiteOrBuilder {

      // optional .org.jetbrains.kotlin.serialization.Type.Constructor.Kind kind = 1 [default = CLASS];
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type.Constructor.Kind kind = 1 [default = CLASS];</code>
       */
      boolean hasKind();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type.Constructor.Kind kind = 1 [default = CLASS];</code>
       */
      org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.Kind getKind();

      // required int32 id = 2;
      /**
       * <code>required int32 id = 2;</code>
       *
       * <pre>
       * CLASS - fqName id, TYPE_PARAMETER - type parameter id
       * </pre>
       */
      boolean hasId();
      /**
       * <code>required int32 id = 2;</code>
       *
       * <pre>
       * CLASS - fqName id, TYPE_PARAMETER - type parameter id
       * </pre>
       */
      int getId();
    }
    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.Type.Constructor}
     */
    public static final class Constructor extends
        com.google.protobuf.GeneratedMessageLite
        implements ConstructorOrBuilder {
      // Use Constructor.newBuilder() to construct.
      private Constructor(com.google.protobuf.GeneratedMessageLite.Builder builder) {
        super(builder);

      }
      private Constructor(boolean noInit) {}

      private static final Constructor defaultInstance;
      public static Constructor getDefaultInstance() {
        return defaultInstance;
      }

      public Constructor getDefaultInstanceForType() {
        return defaultInstance;
      }

      private Constructor(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.Kind value = org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.Kind.valueOf(rawValue);
                if (value != null) {
                  bitField0_ |= 0x00000001;
                  kind_ = value;
                }
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                id_ = input.readInt32();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          makeExtensionsImmutable();
        }
      }
      public static com.google.protobuf.Parser<Constructor> PARSER =
          new com.google.protobuf.AbstractParser<Constructor>() {
        public Constructor parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Constructor(input, extensionRegistry);
        }
      };

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

      /**
       * Protobuf enum {@code org.jetbrains.kotlin.serialization.Type.Constructor.Kind}
       */
      public enum Kind
          implements com.google.protobuf.Internal.EnumLite {
        /**
         * <code>CLASS = 0;</code>
         */
        CLASS(0, 0),
        /**
         * <code>TYPE_PARAMETER = 1;</code>
         */
        TYPE_PARAMETER(1, 1),
        ;

        /**
         * <code>CLASS = 0;</code>
         */
        public static final int CLASS_VALUE = 0;
        /**
         * <code>TYPE_PARAMETER = 1;</code>
         */
        public static final int TYPE_PARAMETER_VALUE = 1;


        public final int getNumber() { return value; }

        public static Kind valueOf(int value) {
          switch (value) {
            case 0: return CLASS;
            case 1: return TYPE_PARAMETER;
            default: return null;
          }
        }

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

        private final int value;

        private Kind(int index, int value) {
          this.value = value;
        }

        // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.serialization.Type.Constructor.Kind)
      }

      private int bitField0_;
      // optional .org.jetbrains.kotlin.serialization.Type.Constructor.Kind kind = 1 [default = CLASS];
      public static final int KIND_FIELD_NUMBER = 1;
      private org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.Kind kind_;
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type.Constructor.Kind kind = 1 [default = CLASS];</code>
       */
      public boolean hasKind() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type.Constructor.Kind kind = 1 [default = CLASS];</code>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.Kind getKind() {
        return kind_;
      }

      // required int32 id = 2;
      public static final int ID_FIELD_NUMBER = 2;
      private int id_;
      /**
       * <code>required int32 id = 2;</code>
       *
       * <pre>
       * CLASS - fqName id, TYPE_PARAMETER - type parameter id
       * </pre>
       */
      public boolean hasId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 id = 2;</code>
       *
       * <pre>
       * CLASS - fqName id, TYPE_PARAMETER - type parameter id
       * </pre>
       */
      public int getId() {
        return id_;
      }

      private void initFields() {
        kind_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.Kind.CLASS;
        id_ = 0;
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;

        if (!hasId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, kind_.getNumber());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeInt32(2, id_);
        }
      }

      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, kind_.getNumber());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, id_);
        }
        memoizedSerializedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }

      public static org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }

      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      /**
       * Protobuf type {@code org.jetbrains.kotlin.serialization.Type.Constructor}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor, Builder>
          implements org.jetbrains.kotlin.serialization.ProtoBuf.Type.ConstructorOrBuilder {
        // Construct using org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private void maybeForceBuilderInitialization() {
        }
        private static Builder create() {
          return new Builder();
        }

        public Builder clear() {
          super.clear();
          kind_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.Kind.CLASS;
          bitField0_ = (bitField0_ & ~0x00000001);
          id_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }

        public org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor getDefaultInstanceForType() {
          return org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.getDefaultInstance();
        }

        public org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor build() {
          org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor buildPartial() {
          org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor result = new org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.kind_ = kind_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.id_ = id_;
          result.bitField0_ = to_bitField0_;
          return result;
        }

        public Builder mergeFrom(org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor other) {
          if (other == org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.getDefaultInstance()) return this;
          if (other.hasKind()) {
            setKind(other.getKind());
          }
          if (other.hasId()) {
            setId(other.getId());
          }
          return this;
        }

        public final boolean isInitialized() {
          if (!hasId()) {
            
            return false;
          }
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        // optional .org.jetbrains.kotlin.serialization.Type.Constructor.Kind kind = 1 [default = CLASS];
        private org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.Kind kind_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.Kind.CLASS;
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Type.Constructor.Kind kind = 1 [default = CLASS];</code>
         */
        public boolean hasKind() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Type.Constructor.Kind kind = 1 [default = CLASS];</code>
         */
        public org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.Kind getKind() {
          return kind_;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Type.Constructor.Kind kind = 1 [default = CLASS];</code>
         */
        public Builder setKind(org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.Kind value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          kind_ = value;
          
          return this;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Type.Constructor.Kind kind = 1 [default = CLASS];</code>
         */
        public Builder clearKind() {
          bitField0_ = (bitField0_ & ~0x00000001);
          kind_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.Kind.CLASS;
          
          return this;
        }

        // required int32 id = 2;
        private int id_ ;
        /**
         * <code>required int32 id = 2;</code>
         *
         * <pre>
         * CLASS - fqName id, TYPE_PARAMETER - type parameter id
         * </pre>
         */
        public boolean hasId() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required int32 id = 2;</code>
         *
         * <pre>
         * CLASS - fqName id, TYPE_PARAMETER - type parameter id
         * </pre>
         */
        public int getId() {
          return id_;
        }
        /**
         * <code>required int32 id = 2;</code>
         *
         * <pre>
         * CLASS - fqName id, TYPE_PARAMETER - type parameter id
         * </pre>
         */
        public Builder setId(int value) {
          bitField0_ |= 0x00000002;
          id_ = value;
          
          return this;
        }
        /**
         * <code>required int32 id = 2;</code>
         *
         * <pre>
         * CLASS - fqName id, TYPE_PARAMETER - type parameter id
         * </pre>
         */
        public Builder clearId() {
          bitField0_ = (bitField0_ & ~0x00000002);
          id_ = 0;
          
          return this;
        }

        // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.Type.Constructor)
      }

      static {
        defaultInstance = new Constructor(true);
        defaultInstance.initFields();
      }

      // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.Type.Constructor)
    }

    public interface ArgumentOrBuilder
        extends com.google.protobuf.MessageLiteOrBuilder {

      // optional .org.jetbrains.kotlin.serialization.Type.Argument.Projection projection = 1 [default = INV];
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type.Argument.Projection projection = 1 [default = INV];</code>
       */
      boolean hasProjection();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type.Argument.Projection projection = 1 [default = INV];</code>
       */
      org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument.Projection getProjection();

      // optional .org.jetbrains.kotlin.serialization.Type type = 2;
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type type = 2;</code>
       *
       * <pre>
       * when projection is STAR, no type is written, otherwise type must be specified
       * </pre>
       */
      boolean hasType();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type type = 2;</code>
       *
       * <pre>
       * when projection is STAR, no type is written, otherwise type must be specified
       * </pre>
       */
      org.jetbrains.kotlin.serialization.ProtoBuf.Type getType();
    }
    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.Type.Argument}
     */
    public static final class Argument extends
        com.google.protobuf.GeneratedMessageLite
        implements ArgumentOrBuilder {
      // Use Argument.newBuilder() to construct.
      private Argument(com.google.protobuf.GeneratedMessageLite.Builder builder) {
        super(builder);

      }
      private Argument(boolean noInit) {}

      private static final Argument defaultInstance;
      public static Argument getDefaultInstance() {
        return defaultInstance;
      }

      public Argument getDefaultInstanceForType() {
        return defaultInstance;
      }

      private Argument(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument.Projection value = org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument.Projection.valueOf(rawValue);
                if (value != null) {
                  bitField0_ |= 0x00000001;
                  projection_ = value;
                }
                break;
              }
              case 18: {
                org.jetbrains.kotlin.serialization.ProtoBuf.Type.Builder subBuilder = null;
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  subBuilder = type_.toBuilder();
                }
                type_ = input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Type.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(type_);
                  type_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000002;
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          makeExtensionsImmutable();
        }
      }
      public static com.google.protobuf.Parser<Argument> PARSER =
          new com.google.protobuf.AbstractParser<Argument>() {
        public Argument parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Argument(input, extensionRegistry);
        }
      };

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

      /**
       * Protobuf enum {@code org.jetbrains.kotlin.serialization.Type.Argument.Projection}
       */
      public enum Projection
          implements com.google.protobuf.Internal.EnumLite {
        /**
         * <code>IN = 0;</code>
         */
        IN(0, 0),
        /**
         * <code>OUT = 1;</code>
         */
        OUT(1, 1),
        /**
         * <code>INV = 2;</code>
         */
        INV(2, 2),
        /**
         * <code>STAR = 3;</code>
         */
        STAR(3, 3),
        ;

        /**
         * <code>IN = 0;</code>
         */
        public static final int IN_VALUE = 0;
        /**
         * <code>OUT = 1;</code>
         */
        public static final int OUT_VALUE = 1;
        /**
         * <code>INV = 2;</code>
         */
        public static final int INV_VALUE = 2;
        /**
         * <code>STAR = 3;</code>
         */
        public static final int STAR_VALUE = 3;


        public final int getNumber() { return value; }

        public static Projection valueOf(int value) {
          switch (value) {
            case 0: return IN;
            case 1: return OUT;
            case 2: return INV;
            case 3: return STAR;
            default: return null;
          }
        }

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

        private final int value;

        private Projection(int index, int value) {
          this.value = value;
        }

        // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.serialization.Type.Argument.Projection)
      }

      private int bitField0_;
      // optional .org.jetbrains.kotlin.serialization.Type.Argument.Projection projection = 1 [default = INV];
      public static final int PROJECTION_FIELD_NUMBER = 1;
      private org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument.Projection projection_;
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type.Argument.Projection projection = 1 [default = INV];</code>
       */
      public boolean hasProjection() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type.Argument.Projection projection = 1 [default = INV];</code>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument.Projection getProjection() {
        return projection_;
      }

      // optional .org.jetbrains.kotlin.serialization.Type type = 2;
      public static final int TYPE_FIELD_NUMBER = 2;
      private org.jetbrains.kotlin.serialization.ProtoBuf.Type type_;
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type type = 2;</code>
       *
       * <pre>
       * when projection is STAR, no type is written, otherwise type must be specified
       * </pre>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type type = 2;</code>
       *
       * <pre>
       * when projection is STAR, no type is written, otherwise type must be specified
       * </pre>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.Type getType() {
        return type_;
      }

      private void initFields() {
        projection_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument.Projection.INV;
        type_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;

        if (hasType()) {
          if (!getType().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, projection_.getNumber());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(2, type_);
        }
      }

      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, projection_.getNumber());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, type_);
        }
        memoizedSerializedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }

      public static org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }

      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      /**
       * Protobuf type {@code org.jetbrains.kotlin.serialization.Type.Argument}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument, Builder>
          implements org.jetbrains.kotlin.serialization.ProtoBuf.Type.ArgumentOrBuilder {
        // Construct using org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private void maybeForceBuilderInitialization() {
        }
        private static Builder create() {
          return new Builder();
        }

        public Builder clear() {
          super.clear();
          projection_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument.Projection.INV;
          bitField0_ = (bitField0_ & ~0x00000001);
          type_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }

        public org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument getDefaultInstanceForType() {
          return org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument.getDefaultInstance();
        }

        public org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument build() {
          org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument buildPartial() {
          org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument result = new org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.projection_ = projection_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.type_ = type_;
          result.bitField0_ = to_bitField0_;
          return result;
        }

        public Builder mergeFrom(org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument other) {
          if (other == org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument.getDefaultInstance()) return this;
          if (other.hasProjection()) {
            setProjection(other.getProjection());
          }
          if (other.hasType()) {
            mergeType(other.getType());
          }
          return this;
        }

        public final boolean isInitialized() {
          if (hasType()) {
            if (!getType().isInitialized()) {
              
              return false;
            }
          }
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        // optional .org.jetbrains.kotlin.serialization.Type.Argument.Projection projection = 1 [default = INV];
        private org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument.Projection projection_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument.Projection.INV;
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Type.Argument.Projection projection = 1 [default = INV];</code>
         */
        public boolean hasProjection() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Type.Argument.Projection projection = 1 [default = INV];</code>
         */
        public org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument.Projection getProjection() {
          return projection_;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Type.Argument.Projection projection = 1 [default = INV];</code>
         */
        public Builder setProjection(org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument.Projection value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          projection_ = value;
          
          return this;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Type.Argument.Projection projection = 1 [default = INV];</code>
         */
        public Builder clearProjection() {
          bitField0_ = (bitField0_ & ~0x00000001);
          projection_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument.Projection.INV;
          
          return this;
        }

        // optional .org.jetbrains.kotlin.serialization.Type type = 2;
        private org.jetbrains.kotlin.serialization.ProtoBuf.Type type_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Type type = 2;</code>
         *
         * <pre>
         * when projection is STAR, no type is written, otherwise type must be specified
         * </pre>
         */
        public boolean hasType() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Type type = 2;</code>
         *
         * <pre>
         * when projection is STAR, no type is written, otherwise type must be specified
         * </pre>
         */
        public org.jetbrains.kotlin.serialization.ProtoBuf.Type getType() {
          return type_;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Type type = 2;</code>
         *
         * <pre>
         * when projection is STAR, no type is written, otherwise type must be specified
         * </pre>
         */
        public Builder setType(org.jetbrains.kotlin.serialization.ProtoBuf.Type value) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;

          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Type type = 2;</code>
         *
         * <pre>
         * when projection is STAR, no type is written, otherwise type must be specified
         * </pre>
         */
        public Builder setType(
            org.jetbrains.kotlin.serialization.ProtoBuf.Type.Builder builderForValue) {
          type_ = builderForValue.build();

          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Type type = 2;</code>
         *
         * <pre>
         * when projection is STAR, no type is written, otherwise type must be specified
         * </pre>
         */
        public Builder mergeType(org.jetbrains.kotlin.serialization.ProtoBuf.Type value) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              type_ != org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance()) {
            type_ =
              org.jetbrains.kotlin.serialization.ProtoBuf.Type.newBuilder(type_).mergeFrom(value).buildPartial();
          } else {
            type_ = value;
          }

          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Type type = 2;</code>
         *
         * <pre>
         * when projection is STAR, no type is written, otherwise type must be specified
         * </pre>
         */
        public Builder clearType() {
          type_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();

          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.Type.Argument)
      }

      static {
        defaultInstance = new Argument(true);
        defaultInstance.initFields();
      }

      // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.Type.Argument)
    }

    private int bitField0_;
    // required .org.jetbrains.kotlin.serialization.Type.Constructor constructor = 1;
    public static final int CONSTRUCTOR_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor constructor_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.Type.Constructor constructor = 1;</code>
     */
    public boolean hasConstructor() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.Type.Constructor constructor = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor getConstructor() {
      return constructor_;
    }

    // repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;
    public static final int ARGUMENT_FIELD_NUMBER = 2;
    private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument> argument_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument> getArgumentList() {
      return argument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.ProtoBuf.Type.ArgumentOrBuilder> 
        getArgumentOrBuilderList() {
      return argument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;</code>
     */
    public int getArgumentCount() {
      return argument_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument getArgument(int index) {
      return argument_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.Type.ArgumentOrBuilder getArgumentOrBuilder(
        int index) {
      return argument_.get(index);
    }

    // optional bool nullable = 3 [default = false];
    public static final int NULLABLE_FIELD_NUMBER = 3;
    private boolean nullable_;
    /**
     * <code>optional bool nullable = 3 [default = false];</code>
     */
    public boolean hasNullable() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional bool nullable = 3 [default = false];</code>
     */
    public boolean getNullable() {
      return nullable_;
    }

    // optional int32 flexible_type_capabilities_id = 4;
    public static final int FLEXIBLE_TYPE_CAPABILITIES_ID_FIELD_NUMBER = 4;
    private int flexibleTypeCapabilitiesId_;
    /**
     * <code>optional int32 flexible_type_capabilities_id = 4;</code>
     *
     * <pre>
     * Id in the StringTable
     * If this field is set, the type is flexible.
     * All the other fields and extensions represent its lower bound, and flexible_upper_bound must be set and represents its upper bound.
     * </pre>
     */
    public boolean hasFlexibleTypeCapabilitiesId() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional int32 flexible_type_capabilities_id = 4;</code>
     *
     * <pre>
     * Id in the StringTable
     * If this field is set, the type is flexible.
     * All the other fields and extensions represent its lower bound, and flexible_upper_bound must be set and represents its upper bound.
     * </pre>
     */
    public int getFlexibleTypeCapabilitiesId() {
      return flexibleTypeCapabilitiesId_;
    }

    // optional .org.jetbrains.kotlin.serialization.Type flexible_upper_bound = 5;
    public static final int FLEXIBLE_UPPER_BOUND_FIELD_NUMBER = 5;
    private org.jetbrains.kotlin.serialization.ProtoBuf.Type flexibleUpperBound_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.Type flexible_upper_bound = 5;</code>
     *
     * <pre>
     * While such an "indirect" encoding helps backwards compatibility with pre-flexible-types versions of this format,
     * we use it mainly to save space: having a special mandatory tag on each an every type just to have an option
     * to represent flexible types is too many wasted bytes.
     * </pre>
     */
    public boolean hasFlexibleUpperBound() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.Type flexible_upper_bound = 5;</code>
     *
     * <pre>
     * While such an "indirect" encoding helps backwards compatibility with pre-flexible-types versions of this format,
     * we use it mainly to save space: having a special mandatory tag on each an every type just to have an option
     * to represent flexible types is too many wasted bytes.
     * </pre>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.Type getFlexibleUpperBound() {
      return flexibleUpperBound_;
    }

    private void initFields() {
      constructor_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.getDefaultInstance();
      argument_ = java.util.Collections.emptyList();
      nullable_ = false;
      flexibleTypeCapabilitiesId_ = 0;
      flexibleUpperBound_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasConstructor()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getConstructor().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getArgumentCount(); i++) {
        if (!getArgument(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasFlexibleUpperBound()) {
        if (!getFlexibleUpperBound().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!extensionsAreInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      com.google.protobuf.GeneratedMessageLite
        .ExtendableMessage<org.jetbrains.kotlin.serialization.ProtoBuf.Type>.ExtensionWriter extensionWriter =
          newExtensionWriter();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, constructor_);
      }
      for (int i = 0; i < argument_.size(); i++) {
        output.writeMessage(2, argument_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBool(3, nullable_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(4, flexibleTypeCapabilitiesId_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(5, flexibleUpperBound_);
      }
      extensionWriter.writeUntil(200, output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, constructor_);
      }
      for (int i = 0; i < argument_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, argument_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, nullable_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, flexibleTypeCapabilitiesId_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, flexibleUpperBound_);
      }
      size += extensionsSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.jetbrains.kotlin.serialization.ProtoBuf.Type parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Type parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Type parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Type parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Type parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Type parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Type parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Type parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Type parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Type parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.jetbrains.kotlin.serialization.ProtoBuf.Type prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.Type}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.ExtendableBuilder<
          org.jetbrains.kotlin.serialization.ProtoBuf.Type, Builder> implements org.jetbrains.kotlin.serialization.ProtoBuf.TypeOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.ProtoBuf.Type.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        constructor_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        argument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        nullable_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        flexibleTypeCapabilitiesId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        flexibleUpperBound_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.Type getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.Type build() {
        org.jetbrains.kotlin.serialization.ProtoBuf.Type result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.Type buildPartial() {
        org.jetbrains.kotlin.serialization.ProtoBuf.Type result = new org.jetbrains.kotlin.serialization.ProtoBuf.Type(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.constructor_ = constructor_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          argument_ = java.util.Collections.unmodifiableList(argument_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.argument_ = argument_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        result.nullable_ = nullable_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        result.flexibleTypeCapabilitiesId_ = flexibleTypeCapabilitiesId_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000008;
        }
        result.flexibleUpperBound_ = flexibleUpperBound_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.ProtoBuf.Type other) {
        if (other == org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance()) return this;
        if (other.hasConstructor()) {
          mergeConstructor(other.getConstructor());
        }
        if (!other.argument_.isEmpty()) {
          if (argument_.isEmpty()) {
            argument_ = other.argument_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureArgumentIsMutable();
            argument_.addAll(other.argument_);
          }
          
        }
        if (other.hasNullable()) {
          setNullable(other.getNullable());
        }
        if (other.hasFlexibleTypeCapabilitiesId()) {
          setFlexibleTypeCapabilitiesId(other.getFlexibleTypeCapabilitiesId());
        }
        if (other.hasFlexibleUpperBound()) {
          mergeFlexibleUpperBound(other.getFlexibleUpperBound());
        }
        this.mergeExtensionFields(other);
        return this;
      }

      public final boolean isInitialized() {
        if (!hasConstructor()) {
          
          return false;
        }
        if (!getConstructor().isInitialized()) {
          
          return false;
        }
        for (int i = 0; i < getArgumentCount(); i++) {
          if (!getArgument(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasFlexibleUpperBound()) {
          if (!getFlexibleUpperBound().isInitialized()) {
            
            return false;
          }
        }
        if (!extensionsAreInitialized()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.jetbrains.kotlin.serialization.ProtoBuf.Type parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.ProtoBuf.Type) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required .org.jetbrains.kotlin.serialization.Type.Constructor constructor = 1;
      private org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor constructor_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.Type.Constructor constructor = 1;</code>
       */
      public boolean hasConstructor() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.Type.Constructor constructor = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor getConstructor() {
        return constructor_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.Type.Constructor constructor = 1;</code>
       */
      public Builder setConstructor(org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor value) {
        if (value == null) {
          throw new NullPointerException();
        }
        constructor_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.Type.Constructor constructor = 1;</code>
       */
      public Builder setConstructor(
          org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.Builder builderForValue) {
        constructor_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.Type.Constructor constructor = 1;</code>
       */
      public Builder mergeConstructor(org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            constructor_ != org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.getDefaultInstance()) {
          constructor_ =
            org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.newBuilder(constructor_).mergeFrom(value).buildPartial();
        } else {
          constructor_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.Type.Constructor constructor = 1;</code>
       */
      public Builder clearConstructor() {
        constructor_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.Constructor.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      // repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;
      private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument> argument_ =
        java.util.Collections.emptyList();
      private void ensureArgumentIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          argument_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument>(argument_);
          bitField0_ |= 0x00000002;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument> getArgumentList() {
        return java.util.Collections.unmodifiableList(argument_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;</code>
       */
      public int getArgumentCount() {
        return argument_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument getArgument(int index) {
        return argument_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;</code>
       */
      public Builder setArgument(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureArgumentIsMutable();
        argument_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;</code>
       */
      public Builder setArgument(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument.Builder builderForValue) {
        ensureArgumentIsMutable();
        argument_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;</code>
       */
      public Builder addArgument(org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureArgumentIsMutable();
        argument_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;</code>
       */
      public Builder addArgument(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureArgumentIsMutable();
        argument_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;</code>
       */
      public Builder addArgument(
          org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument.Builder builderForValue) {
        ensureArgumentIsMutable();
        argument_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;</code>
       */
      public Builder addArgument(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument.Builder builderForValue) {
        ensureArgumentIsMutable();
        argument_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;</code>
       */
      public Builder addAllArgument(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument> values) {
        ensureArgumentIsMutable();
        super.addAll(values, argument_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;</code>
       */
      public Builder clearArgument() {
        argument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type.Argument argument = 2;</code>
       */
      public Builder removeArgument(int index) {
        ensureArgumentIsMutable();
        argument_.remove(index);

        return this;
      }

      // optional bool nullable = 3 [default = false];
      private boolean nullable_ ;
      /**
       * <code>optional bool nullable = 3 [default = false];</code>
       */
      public boolean hasNullable() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional bool nullable = 3 [default = false];</code>
       */
      public boolean getNullable() {
        return nullable_;
      }
      /**
       * <code>optional bool nullable = 3 [default = false];</code>
       */
      public Builder setNullable(boolean value) {
        bitField0_ |= 0x00000004;
        nullable_ = value;
        
        return this;
      }
      /**
       * <code>optional bool nullable = 3 [default = false];</code>
       */
      public Builder clearNullable() {
        bitField0_ = (bitField0_ & ~0x00000004);
        nullable_ = false;
        
        return this;
      }

      // optional int32 flexible_type_capabilities_id = 4;
      private int flexibleTypeCapabilitiesId_ ;
      /**
       * <code>optional int32 flexible_type_capabilities_id = 4;</code>
       *
       * <pre>
       * Id in the StringTable
       * If this field is set, the type is flexible.
       * All the other fields and extensions represent its lower bound, and flexible_upper_bound must be set and represents its upper bound.
       * </pre>
       */
      public boolean hasFlexibleTypeCapabilitiesId() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional int32 flexible_type_capabilities_id = 4;</code>
       *
       * <pre>
       * Id in the StringTable
       * If this field is set, the type is flexible.
       * All the other fields and extensions represent its lower bound, and flexible_upper_bound must be set and represents its upper bound.
       * </pre>
       */
      public int getFlexibleTypeCapabilitiesId() {
        return flexibleTypeCapabilitiesId_;
      }
      /**
       * <code>optional int32 flexible_type_capabilities_id = 4;</code>
       *
       * <pre>
       * Id in the StringTable
       * If this field is set, the type is flexible.
       * All the other fields and extensions represent its lower bound, and flexible_upper_bound must be set and represents its upper bound.
       * </pre>
       */
      public Builder setFlexibleTypeCapabilitiesId(int value) {
        bitField0_ |= 0x00000008;
        flexibleTypeCapabilitiesId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 flexible_type_capabilities_id = 4;</code>
       *
       * <pre>
       * Id in the StringTable
       * If this field is set, the type is flexible.
       * All the other fields and extensions represent its lower bound, and flexible_upper_bound must be set and represents its upper bound.
       * </pre>
       */
      public Builder clearFlexibleTypeCapabilitiesId() {
        bitField0_ = (bitField0_ & ~0x00000008);
        flexibleTypeCapabilitiesId_ = 0;
        
        return this;
      }

      // optional .org.jetbrains.kotlin.serialization.Type flexible_upper_bound = 5;
      private org.jetbrains.kotlin.serialization.ProtoBuf.Type flexibleUpperBound_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type flexible_upper_bound = 5;</code>
       *
       * <pre>
       * While such an "indirect" encoding helps backwards compatibility with pre-flexible-types versions of this format,
       * we use it mainly to save space: having a special mandatory tag on each an every type just to have an option
       * to represent flexible types is too many wasted bytes.
       * </pre>
       */
      public boolean hasFlexibleUpperBound() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type flexible_upper_bound = 5;</code>
       *
       * <pre>
       * While such an "indirect" encoding helps backwards compatibility with pre-flexible-types versions of this format,
       * we use it mainly to save space: having a special mandatory tag on each an every type just to have an option
       * to represent flexible types is too many wasted bytes.
       * </pre>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.Type getFlexibleUpperBound() {
        return flexibleUpperBound_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type flexible_upper_bound = 5;</code>
       *
       * <pre>
       * While such an "indirect" encoding helps backwards compatibility with pre-flexible-types versions of this format,
       * we use it mainly to save space: having a special mandatory tag on each an every type just to have an option
       * to represent flexible types is too many wasted bytes.
       * </pre>
       */
      public Builder setFlexibleUpperBound(org.jetbrains.kotlin.serialization.ProtoBuf.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        flexibleUpperBound_ = value;

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type flexible_upper_bound = 5;</code>
       *
       * <pre>
       * While such an "indirect" encoding helps backwards compatibility with pre-flexible-types versions of this format,
       * we use it mainly to save space: having a special mandatory tag on each an every type just to have an option
       * to represent flexible types is too many wasted bytes.
       * </pre>
       */
      public Builder setFlexibleUpperBound(
          org.jetbrains.kotlin.serialization.ProtoBuf.Type.Builder builderForValue) {
        flexibleUpperBound_ = builderForValue.build();

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type flexible_upper_bound = 5;</code>
       *
       * <pre>
       * While such an "indirect" encoding helps backwards compatibility with pre-flexible-types versions of this format,
       * we use it mainly to save space: having a special mandatory tag on each an every type just to have an option
       * to represent flexible types is too many wasted bytes.
       * </pre>
       */
      public Builder mergeFlexibleUpperBound(org.jetbrains.kotlin.serialization.ProtoBuf.Type value) {
        if (((bitField0_ & 0x00000010) == 0x00000010) &&
            flexibleUpperBound_ != org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance()) {
          flexibleUpperBound_ =
            org.jetbrains.kotlin.serialization.ProtoBuf.Type.newBuilder(flexibleUpperBound_).mergeFrom(value).buildPartial();
        } else {
          flexibleUpperBound_ = value;
        }

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type flexible_upper_bound = 5;</code>
       *
       * <pre>
       * While such an "indirect" encoding helps backwards compatibility with pre-flexible-types versions of this format,
       * we use it mainly to save space: having a special mandatory tag on each an every type just to have an option
       * to represent flexible types is too many wasted bytes.
       * </pre>
       */
      public Builder clearFlexibleUpperBound() {
        flexibleUpperBound_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.Type)
    }

    static {
      defaultInstance = new Type(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.Type)
  }

  public interface TypeParameterOrBuilder
      extends com.google.protobuf.MessageLiteOrBuilder {

    // required int32 id = 1;
    /**
     * <code>required int32 id = 1;</code>
     */
    boolean hasId();
    /**
     * <code>required int32 id = 1;</code>
     */
    int getId();

    // required int32 name = 2;
    /**
     * <code>required int32 name = 2;</code>
     *
     * <pre>
     * Id in the StringTable
     * </pre>
     */
    boolean hasName();
    /**
     * <code>required int32 name = 2;</code>
     *
     * <pre>
     * Id in the StringTable
     * </pre>
     */
    int getName();

    // optional bool reified = 3 [default = false];
    /**
     * <code>optional bool reified = 3 [default = false];</code>
     */
    boolean hasReified();
    /**
     * <code>optional bool reified = 3 [default = false];</code>
     */
    boolean getReified();

    // optional .org.jetbrains.kotlin.serialization.TypeParameter.Variance variance = 4 [default = INV];
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.TypeParameter.Variance variance = 4 [default = INV];</code>
     */
    boolean hasVariance();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.TypeParameter.Variance variance = 4 [default = INV];</code>
     */
    org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.Variance getVariance();

    // repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Type> 
        getUpperBoundList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;</code>
     */
    org.jetbrains.kotlin.serialization.ProtoBuf.Type getUpperBound(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;</code>
     */
    int getUpperBoundCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.TypeParameter}
   */
  public static final class TypeParameter extends
      com.google.protobuf.GeneratedMessageLite
      implements TypeParameterOrBuilder {
    // Use TypeParameter.newBuilder() to construct.
    private TypeParameter(com.google.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);

    }
    private TypeParameter(boolean noInit) {}

    private static final TypeParameter defaultInstance;
    public static TypeParameter getDefaultInstance() {
      return defaultInstance;
    }

    public TypeParameter getDefaultInstanceForType() {
      return defaultInstance;
    }

    private TypeParameter(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              id_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              name_ = input.readInt32();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              reified_ = input.readBool();
              break;
            }
            case 32: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.Variance value = org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.Variance.valueOf(rawValue);
              if (value != null) {
                bitField0_ |= 0x00000008;
                variance_ = value;
              }
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                upperBound_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.Type>();
                mutable_bitField0_ |= 0x00000010;
              }
              upperBound_.add(input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Type.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          upperBound_ = java.util.Collections.unmodifiableList(upperBound_);
        }
        makeExtensionsImmutable();
      }
    }
    public static com.google.protobuf.Parser<TypeParameter> PARSER =
        new com.google.protobuf.AbstractParser<TypeParameter>() {
      public TypeParameter parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new TypeParameter(input, extensionRegistry);
      }
    };

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

    /**
     * Protobuf enum {@code org.jetbrains.kotlin.serialization.TypeParameter.Variance}
     */
    public enum Variance
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <code>IN = 0;</code>
       */
      IN(0, 0),
      /**
       * <code>OUT = 1;</code>
       */
      OUT(1, 1),
      /**
       * <code>INV = 2;</code>
       */
      INV(2, 2),
      ;

      /**
       * <code>IN = 0;</code>
       */
      public static final int IN_VALUE = 0;
      /**
       * <code>OUT = 1;</code>
       */
      public static final int OUT_VALUE = 1;
      /**
       * <code>INV = 2;</code>
       */
      public static final int INV_VALUE = 2;


      public final int getNumber() { return value; }

      public static Variance valueOf(int value) {
        switch (value) {
          case 0: return IN;
          case 1: return OUT;
          case 2: return INV;
          default: return null;
        }
      }

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

      private final int value;

      private Variance(int index, int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.serialization.TypeParameter.Variance)
    }

    private int bitField0_;
    // required int32 id = 1;
    public static final int ID_FIELD_NUMBER = 1;
    private int id_;
    /**
     * <code>required int32 id = 1;</code>
     */
    public boolean hasId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 id = 1;</code>
     */
    public int getId() {
      return id_;
    }

    // required int32 name = 2;
    public static final int NAME_FIELD_NUMBER = 2;
    private int name_;
    /**
     * <code>required int32 name = 2;</code>
     *
     * <pre>
     * Id in the StringTable
     * </pre>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 name = 2;</code>
     *
     * <pre>
     * Id in the StringTable
     * </pre>
     */
    public int getName() {
      return name_;
    }

    // optional bool reified = 3 [default = false];
    public static final int REIFIED_FIELD_NUMBER = 3;
    private boolean reified_;
    /**
     * <code>optional bool reified = 3 [default = false];</code>
     */
    public boolean hasReified() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional bool reified = 3 [default = false];</code>
     */
    public boolean getReified() {
      return reified_;
    }

    // optional .org.jetbrains.kotlin.serialization.TypeParameter.Variance variance = 4 [default = INV];
    public static final int VARIANCE_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.Variance variance_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.TypeParameter.Variance variance = 4 [default = INV];</code>
     */
    public boolean hasVariance() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.TypeParameter.Variance variance = 4 [default = INV];</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.Variance getVariance() {
      return variance_;
    }

    // repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;
    public static final int UPPER_BOUND_FIELD_NUMBER = 5;
    private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Type> upperBound_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Type> getUpperBoundList() {
      return upperBound_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.ProtoBuf.TypeOrBuilder> 
        getUpperBoundOrBuilderList() {
      return upperBound_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;</code>
     */
    public int getUpperBoundCount() {
      return upperBound_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.Type getUpperBound(int index) {
      return upperBound_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.TypeOrBuilder getUpperBoundOrBuilder(
        int index) {
      return upperBound_.get(index);
    }

    private void initFields() {
      id_ = 0;
      name_ = 0;
      reified_ = false;
      variance_ = org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.Variance.INV;
      upperBound_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getUpperBoundCount(); i++) {
        if (!getUpperBound(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, id_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, name_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBool(3, reified_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeEnum(4, variance_.getNumber());
      }
      for (int i = 0; i < upperBound_.size(); i++) {
        output.writeMessage(5, upperBound_.get(i));
      }
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, id_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, name_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, reified_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(4, variance_.getNumber());
      }
      for (int i = 0; i < upperBound_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, upperBound_.get(i));
      }
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.TypeParameter}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter, Builder>
        implements org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameterOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        id_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        reified_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        variance_ = org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.Variance.INV;
        bitField0_ = (bitField0_ & ~0x00000008);
        upperBound_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter build() {
        org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter buildPartial() {
        org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter result = new org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.id_ = id_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.reified_ = reified_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.variance_ = variance_;
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          upperBound_ = java.util.Collections.unmodifiableList(upperBound_);
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.upperBound_ = upperBound_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter other) {
        if (other == org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.getDefaultInstance()) return this;
        if (other.hasId()) {
          setId(other.getId());
        }
        if (other.hasName()) {
          setName(other.getName());
        }
        if (other.hasReified()) {
          setReified(other.getReified());
        }
        if (other.hasVariance()) {
          setVariance(other.getVariance());
        }
        if (!other.upperBound_.isEmpty()) {
          if (upperBound_.isEmpty()) {
            upperBound_ = other.upperBound_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureUpperBoundIsMutable();
            upperBound_.addAll(other.upperBound_);
          }
          
        }
        return this;
      }

      public final boolean isInitialized() {
        if (!hasId()) {
          
          return false;
        }
        if (!hasName()) {
          
          return false;
        }
        for (int i = 0; i < getUpperBoundCount(); i++) {
          if (!getUpperBound(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required int32 id = 1;
      private int id_ ;
      /**
       * <code>required int32 id = 1;</code>
       */
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 id = 1;</code>
       */
      public int getId() {
        return id_;
      }
      /**
       * <code>required int32 id = 1;</code>
       */
      public Builder setId(int value) {
        bitField0_ |= 0x00000001;
        id_ = value;
        
        return this;
      }
      /**
       * <code>required int32 id = 1;</code>
       */
      public Builder clearId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        id_ = 0;
        
        return this;
      }

      // required int32 name = 2;
      private int name_ ;
      /**
       * <code>required int32 name = 2;</code>
       *
       * <pre>
       * Id in the StringTable
       * </pre>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 name = 2;</code>
       *
       * <pre>
       * Id in the StringTable
       * </pre>
       */
      public int getName() {
        return name_;
      }
      /**
       * <code>required int32 name = 2;</code>
       *
       * <pre>
       * Id in the StringTable
       * </pre>
       */
      public Builder setName(int value) {
        bitField0_ |= 0x00000002;
        name_ = value;
        
        return this;
      }
      /**
       * <code>required int32 name = 2;</code>
       *
       * <pre>
       * Id in the StringTable
       * </pre>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000002);
        name_ = 0;
        
        return this;
      }

      // optional bool reified = 3 [default = false];
      private boolean reified_ ;
      /**
       * <code>optional bool reified = 3 [default = false];</code>
       */
      public boolean hasReified() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional bool reified = 3 [default = false];</code>
       */
      public boolean getReified() {
        return reified_;
      }
      /**
       * <code>optional bool reified = 3 [default = false];</code>
       */
      public Builder setReified(boolean value) {
        bitField0_ |= 0x00000004;
        reified_ = value;
        
        return this;
      }
      /**
       * <code>optional bool reified = 3 [default = false];</code>
       */
      public Builder clearReified() {
        bitField0_ = (bitField0_ & ~0x00000004);
        reified_ = false;
        
        return this;
      }

      // optional .org.jetbrains.kotlin.serialization.TypeParameter.Variance variance = 4 [default = INV];
      private org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.Variance variance_ = org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.Variance.INV;
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.TypeParameter.Variance variance = 4 [default = INV];</code>
       */
      public boolean hasVariance() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.TypeParameter.Variance variance = 4 [default = INV];</code>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.Variance getVariance() {
        return variance_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.TypeParameter.Variance variance = 4 [default = INV];</code>
       */
      public Builder setVariance(org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.Variance value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000008;
        variance_ = value;
        
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.TypeParameter.Variance variance = 4 [default = INV];</code>
       */
      public Builder clearVariance() {
        bitField0_ = (bitField0_ & ~0x00000008);
        variance_ = org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.Variance.INV;
        
        return this;
      }

      // repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;
      private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Type> upperBound_ =
        java.util.Collections.emptyList();
      private void ensureUpperBoundIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          upperBound_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.Type>(upperBound_);
          bitField0_ |= 0x00000010;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Type> getUpperBoundList() {
        return java.util.Collections.unmodifiableList(upperBound_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;</code>
       */
      public int getUpperBoundCount() {
        return upperBound_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;</code>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.Type getUpperBound(int index) {
        return upperBound_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;</code>
       */
      public Builder setUpperBound(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureUpperBoundIsMutable();
        upperBound_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;</code>
       */
      public Builder setUpperBound(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Type.Builder builderForValue) {
        ensureUpperBoundIsMutable();
        upperBound_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;</code>
       */
      public Builder addUpperBound(org.jetbrains.kotlin.serialization.ProtoBuf.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureUpperBoundIsMutable();
        upperBound_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;</code>
       */
      public Builder addUpperBound(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureUpperBoundIsMutable();
        upperBound_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;</code>
       */
      public Builder addUpperBound(
          org.jetbrains.kotlin.serialization.ProtoBuf.Type.Builder builderForValue) {
        ensureUpperBoundIsMutable();
        upperBound_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;</code>
       */
      public Builder addUpperBound(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Type.Builder builderForValue) {
        ensureUpperBoundIsMutable();
        upperBound_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;</code>
       */
      public Builder addAllUpperBound(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.ProtoBuf.Type> values) {
        ensureUpperBoundIsMutable();
        super.addAll(values, upperBound_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;</code>
       */
      public Builder clearUpperBound() {
        upperBound_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type upper_bound = 5;</code>
       */
      public Builder removeUpperBound(int index) {
        ensureUpperBoundIsMutable();
        upperBound_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.TypeParameter)
    }

    static {
      defaultInstance = new TypeParameter(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.TypeParameter)
  }

  public interface ClassOrBuilder extends 
       com.google.protobuf.GeneratedMessageLite.
            ExtendableMessageOrBuilder<Class> {

    // optional int32 flags = 1 [default = 0];
    /**
     * <code>optional int32 flags = 1 [default = 0];</code>
     *
     * <pre>
     *
     *Visibility
     *Modality
     *has_annotation
     *ClassKind
     *is_inner
     * </pre>
     */
    boolean hasFlags();
    /**
     * <code>optional int32 flags = 1 [default = 0];</code>
     *
     * <pre>
     *
     *Visibility
     *Modality
     *has_annotation
     *ClassKind
     *is_inner
     * </pre>
     */
    int getFlags();

    // required int32 fq_name = 3;
    /**
     * <code>required int32 fq_name = 3;</code>
     */
    boolean hasFqName();
    /**
     * <code>required int32 fq_name = 3;</code>
     */
    int getFqName();

    // optional int32 companion_object_name = 4;
    /**
     * <code>optional int32 companion_object_name = 4;</code>
     *
     * <pre>
     * If this field is present, it contains the name of companion object.
     * </pre>
     */
    boolean hasCompanionObjectName();
    /**
     * <code>optional int32 companion_object_name = 4;</code>
     *
     * <pre>
     * If this field is present, it contains the name of companion object.
     * </pre>
     */
    int getCompanionObjectName();

    // repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter> 
        getTypeParameterList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;</code>
     */
    org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter getTypeParameter(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;</code>
     */
    int getTypeParameterCount();

    // repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Type> 
        getSupertypeList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;</code>
     */
    org.jetbrains.kotlin.serialization.ProtoBuf.Type getSupertype(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;</code>
     */
    int getSupertypeCount();

    // repeated int32 nested_class_name = 7 [packed = true];
    /**
     * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
     *
     * <pre>
     * we store only names, because the actual information must reside in the corresponding .class files,
     * to be obtainable through reflection at runtime
     * </pre>
     */
    java.util.List<java.lang.Integer> getNestedClassNameList();
    /**
     * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
     *
     * <pre>
     * we store only names, because the actual information must reside in the corresponding .class files,
     * to be obtainable through reflection at runtime
     * </pre>
     */
    int getNestedClassNameCount();
    /**
     * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
     *
     * <pre>
     * we store only names, because the actual information must reside in the corresponding .class files,
     * to be obtainable through reflection at runtime
     * </pre>
     */
    int getNestedClassName(int index);

    // repeated .org.jetbrains.kotlin.serialization.Callable member = 11;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 11;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Callable> 
        getMemberList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 11;</code>
     */
    org.jetbrains.kotlin.serialization.ProtoBuf.Callable getMember(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 11;</code>
     */
    int getMemberCount();

    // repeated int32 enum_entry = 12 [packed = true];
    /**
     * <code>repeated int32 enum_entry = 12 [packed = true];</code>
     */
    java.util.List<java.lang.Integer> getEnumEntryList();
    /**
     * <code>repeated int32 enum_entry = 12 [packed = true];</code>
     */
    int getEnumEntryCount();
    /**
     * <code>repeated int32 enum_entry = 12 [packed = true];</code>
     */
    int getEnumEntry(int index);

    // optional .org.jetbrains.kotlin.serialization.Class.PrimaryConstructor primary_constructor = 13;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.Class.PrimaryConstructor primary_constructor = 13;</code>
     *
     * <pre>
     * This field is present if and only if the class has a primary constructor
     * </pre>
     */
    boolean hasPrimaryConstructor();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.Class.PrimaryConstructor primary_constructor = 13;</code>
     *
     * <pre>
     * This field is present if and only if the class has a primary constructor
     * </pre>
     */
    org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor getPrimaryConstructor();

    // repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Callable> 
        getSecondaryConstructorList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;</code>
     */
    org.jetbrains.kotlin.serialization.ProtoBuf.Callable getSecondaryConstructor(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;</code>
     */
    int getSecondaryConstructorCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.Class}
   */
  public static final class Class extends
      com.google.protobuf.GeneratedMessageLite.ExtendableMessage<
        Class> implements ClassOrBuilder {
    // Use Class.newBuilder() to construct.
    private Class(com.google.protobuf.GeneratedMessageLite.ExtendableBuilder<org.jetbrains.kotlin.serialization.ProtoBuf.Class, ?> builder) {
      super(builder);

    }
    private Class(boolean noInit) {}

    private static final Class defaultInstance;
    public static Class getDefaultInstance() {
      return defaultInstance;
    }

    public Class getDefaultInstanceForType() {
      return defaultInstance;
    }

    private Class(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              flags_ = input.readInt32();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000002;
              fqName_ = input.readInt32();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000004;
              companionObjectName_ = input.readInt32();
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                typeParameter_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter>();
                mutable_bitField0_ |= 0x00000008;
              }
              typeParameter_.add(input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.PARSER, extensionRegistry));
              break;
            }
            case 50: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                supertype_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.Type>();
                mutable_bitField0_ |= 0x00000010;
              }
              supertype_.add(input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Type.PARSER, extensionRegistry));
              break;
            }
            case 56: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                nestedClassName_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000020;
              }
              nestedClassName_.add(input.readInt32());
              break;
            }
            case 58: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020) && input.getBytesUntilLimit() > 0) {
                nestedClassName_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000020;
              }
              while (input.getBytesUntilLimit() > 0) {
                nestedClassName_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 90: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                member_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.Callable>();
                mutable_bitField0_ |= 0x00000040;
              }
              member_.add(input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Callable.PARSER, extensionRegistry));
              break;
            }
            case 96: {
              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                enumEntry_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000080;
              }
              enumEntry_.add(input.readInt32());
              break;
            }
            case 98: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080) && input.getBytesUntilLimit() > 0) {
                enumEntry_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000080;
              }
              while (input.getBytesUntilLimit() > 0) {
                enumEntry_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 106: {
              org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = primaryConstructor_.toBuilder();
              }
              primaryConstructor_ = input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(primaryConstructor_);
                primaryConstructor_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 114: {
              if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
                secondaryConstructor_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.Callable>();
                mutable_bitField0_ |= 0x00000200;
              }
              secondaryConstructor_.add(input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Callable.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          typeParameter_ = java.util.Collections.unmodifiableList(typeParameter_);
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          supertype_ = java.util.Collections.unmodifiableList(supertype_);
        }
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          nestedClassName_ = java.util.Collections.unmodifiableList(nestedClassName_);
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          member_ = java.util.Collections.unmodifiableList(member_);
        }
        if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
          enumEntry_ = java.util.Collections.unmodifiableList(enumEntry_);
        }
        if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
          secondaryConstructor_ = java.util.Collections.unmodifiableList(secondaryConstructor_);
        }
        makeExtensionsImmutable();
      }
    }
    public static com.google.protobuf.Parser<Class> PARSER =
        new com.google.protobuf.AbstractParser<Class>() {
      public Class parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Class(input, extensionRegistry);
      }
    };

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

    /**
     * Protobuf enum {@code org.jetbrains.kotlin.serialization.Class.Kind}
     */
    public enum Kind
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <code>CLASS = 0;</code>
       *
       * <pre>
       * 3 bits
       * </pre>
       */
      CLASS(0, 0),
      /**
       * <code>TRAIT = 1;</code>
       */
      TRAIT(1, 1),
      /**
       * <code>ENUM_CLASS = 2;</code>
       */
      ENUM_CLASS(2, 2),
      /**
       * <code>ENUM_ENTRY = 3;</code>
       */
      ENUM_ENTRY(3, 3),
      /**
       * <code>ANNOTATION_CLASS = 4;</code>
       */
      ANNOTATION_CLASS(4, 4),
      /**
       * <code>OBJECT = 5;</code>
       */
      OBJECT(5, 5),
      /**
       * <code>CLASS_OBJECT = 6;</code>
       */
      CLASS_OBJECT(6, 6),
      ;

      /**
       * <code>CLASS = 0;</code>
       *
       * <pre>
       * 3 bits
       * </pre>
       */
      public static final int CLASS_VALUE = 0;
      /**
       * <code>TRAIT = 1;</code>
       */
      public static final int TRAIT_VALUE = 1;
      /**
       * <code>ENUM_CLASS = 2;</code>
       */
      public static final int ENUM_CLASS_VALUE = 2;
      /**
       * <code>ENUM_ENTRY = 3;</code>
       */
      public static final int ENUM_ENTRY_VALUE = 3;
      /**
       * <code>ANNOTATION_CLASS = 4;</code>
       */
      public static final int ANNOTATION_CLASS_VALUE = 4;
      /**
       * <code>OBJECT = 5;</code>
       */
      public static final int OBJECT_VALUE = 5;
      /**
       * <code>CLASS_OBJECT = 6;</code>
       */
      public static final int CLASS_OBJECT_VALUE = 6;


      public final int getNumber() { return value; }

      public static Kind valueOf(int value) {
        switch (value) {
          case 0: return CLASS;
          case 1: return TRAIT;
          case 2: return ENUM_CLASS;
          case 3: return ENUM_ENTRY;
          case 4: return ANNOTATION_CLASS;
          case 5: return OBJECT;
          case 6: return CLASS_OBJECT;
          default: return null;
        }
      }

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

      private final int value;

      private Kind(int index, int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.serialization.Class.Kind)
    }

    public interface PrimaryConstructorOrBuilder
        extends com.google.protobuf.MessageLiteOrBuilder {

      // optional .org.jetbrains.kotlin.serialization.Callable data = 1;
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Callable data = 1;</code>
       *
       * <pre>
       * If this field is present, it contains serialized data for the primary constructor.
       * Otherwise it's default and can be created manually upon deserialization
       * Note: currently only objects have default primary constructor
       * </pre>
       */
      boolean hasData();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Callable data = 1;</code>
       *
       * <pre>
       * If this field is present, it contains serialized data for the primary constructor.
       * Otherwise it's default and can be created manually upon deserialization
       * Note: currently only objects have default primary constructor
       * </pre>
       */
      org.jetbrains.kotlin.serialization.ProtoBuf.Callable getData();
    }
    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.Class.PrimaryConstructor}
     */
    public static final class PrimaryConstructor extends
        com.google.protobuf.GeneratedMessageLite
        implements PrimaryConstructorOrBuilder {
      // Use PrimaryConstructor.newBuilder() to construct.
      private PrimaryConstructor(com.google.protobuf.GeneratedMessageLite.Builder builder) {
        super(builder);

      }
      private PrimaryConstructor(boolean noInit) {}

      private static final PrimaryConstructor defaultInstance;
      public static PrimaryConstructor getDefaultInstance() {
        return defaultInstance;
      }

      public PrimaryConstructor getDefaultInstanceForType() {
        return defaultInstance;
      }

      private PrimaryConstructor(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                org.jetbrains.kotlin.serialization.ProtoBuf.Callable.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) == 0x00000001)) {
                  subBuilder = data_.toBuilder();
                }
                data_ = input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Callable.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(data_);
                  data_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          makeExtensionsImmutable();
        }
      }
      public static com.google.protobuf.Parser<PrimaryConstructor> PARSER =
          new com.google.protobuf.AbstractParser<PrimaryConstructor>() {
        public PrimaryConstructor parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new PrimaryConstructor(input, extensionRegistry);
        }
      };

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

      private int bitField0_;
      // optional .org.jetbrains.kotlin.serialization.Callable data = 1;
      public static final int DATA_FIELD_NUMBER = 1;
      private org.jetbrains.kotlin.serialization.ProtoBuf.Callable data_;
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Callable data = 1;</code>
       *
       * <pre>
       * If this field is present, it contains serialized data for the primary constructor.
       * Otherwise it's default and can be created manually upon deserialization
       * Note: currently only objects have default primary constructor
       * </pre>
       */
      public boolean hasData() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Callable data = 1;</code>
       *
       * <pre>
       * If this field is present, it contains serialized data for the primary constructor.
       * Otherwise it's default and can be created manually upon deserialization
       * Note: currently only objects have default primary constructor
       * </pre>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.Callable getData() {
        return data_;
      }

      private void initFields() {
        data_ = org.jetbrains.kotlin.serialization.ProtoBuf.Callable.getDefaultInstance();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;

        if (hasData()) {
          if (!getData().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeMessage(1, data_);
        }
      }

      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, data_);
        }
        memoizedSerializedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }

      public static org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }

      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      /**
       * Protobuf type {@code org.jetbrains.kotlin.serialization.Class.PrimaryConstructor}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor, Builder>
          implements org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructorOrBuilder {
        // Construct using org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private void maybeForceBuilderInitialization() {
        }
        private static Builder create() {
          return new Builder();
        }

        public Builder clear() {
          super.clear();
          data_ = org.jetbrains.kotlin.serialization.ProtoBuf.Callable.getDefaultInstance();
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }

        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }

        public org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor getDefaultInstanceForType() {
          return org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor.getDefaultInstance();
        }

        public org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor build() {
          org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor buildPartial() {
          org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor result = new org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.data_ = data_;
          result.bitField0_ = to_bitField0_;
          return result;
        }

        public Builder mergeFrom(org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor other) {
          if (other == org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor.getDefaultInstance()) return this;
          if (other.hasData()) {
            mergeData(other.getData());
          }
          return this;
        }

        public final boolean isInitialized() {
          if (hasData()) {
            if (!getData().isInitialized()) {
              
              return false;
            }
          }
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        // optional .org.jetbrains.kotlin.serialization.Callable data = 1;
        private org.jetbrains.kotlin.serialization.ProtoBuf.Callable data_ = org.jetbrains.kotlin.serialization.ProtoBuf.Callable.getDefaultInstance();
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Callable data = 1;</code>
         *
         * <pre>
         * If this field is present, it contains serialized data for the primary constructor.
         * Otherwise it's default and can be created manually upon deserialization
         * Note: currently only objects have default primary constructor
         * </pre>
         */
        public boolean hasData() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Callable data = 1;</code>
         *
         * <pre>
         * If this field is present, it contains serialized data for the primary constructor.
         * Otherwise it's default and can be created manually upon deserialization
         * Note: currently only objects have default primary constructor
         * </pre>
         */
        public org.jetbrains.kotlin.serialization.ProtoBuf.Callable getData() {
          return data_;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Callable data = 1;</code>
         *
         * <pre>
         * If this field is present, it contains serialized data for the primary constructor.
         * Otherwise it's default and can be created manually upon deserialization
         * Note: currently only objects have default primary constructor
         * </pre>
         */
        public Builder setData(org.jetbrains.kotlin.serialization.ProtoBuf.Callable value) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;

          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Callable data = 1;</code>
         *
         * <pre>
         * If this field is present, it contains serialized data for the primary constructor.
         * Otherwise it's default and can be created manually upon deserialization
         * Note: currently only objects have default primary constructor
         * </pre>
         */
        public Builder setData(
            org.jetbrains.kotlin.serialization.ProtoBuf.Callable.Builder builderForValue) {
          data_ = builderForValue.build();

          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Callable data = 1;</code>
         *
         * <pre>
         * If this field is present, it contains serialized data for the primary constructor.
         * Otherwise it's default and can be created manually upon deserialization
         * Note: currently only objects have default primary constructor
         * </pre>
         */
        public Builder mergeData(org.jetbrains.kotlin.serialization.ProtoBuf.Callable value) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              data_ != org.jetbrains.kotlin.serialization.ProtoBuf.Callable.getDefaultInstance()) {
            data_ =
              org.jetbrains.kotlin.serialization.ProtoBuf.Callable.newBuilder(data_).mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }

          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Callable data = 1;</code>
         *
         * <pre>
         * If this field is present, it contains serialized data for the primary constructor.
         * Otherwise it's default and can be created manually upon deserialization
         * Note: currently only objects have default primary constructor
         * </pre>
         */
        public Builder clearData() {
          data_ = org.jetbrains.kotlin.serialization.ProtoBuf.Callable.getDefaultInstance();

          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }

        // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.Class.PrimaryConstructor)
      }

      static {
        defaultInstance = new PrimaryConstructor(true);
        defaultInstance.initFields();
      }

      // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.Class.PrimaryConstructor)
    }

    private int bitField0_;
    // optional int32 flags = 1 [default = 0];
    public static final int FLAGS_FIELD_NUMBER = 1;
    private int flags_;
    /**
     * <code>optional int32 flags = 1 [default = 0];</code>
     *
     * <pre>
     *
     *Visibility
     *Modality
     *has_annotation
     *ClassKind
     *is_inner
     * </pre>
     */
    public boolean hasFlags() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int32 flags = 1 [default = 0];</code>
     *
     * <pre>
     *
     *Visibility
     *Modality
     *has_annotation
     *ClassKind
     *is_inner
     * </pre>
     */
    public int getFlags() {
      return flags_;
    }

    // required int32 fq_name = 3;
    public static final int FQ_NAME_FIELD_NUMBER = 3;
    private int fqName_;
    /**
     * <code>required int32 fq_name = 3;</code>
     */
    public boolean hasFqName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 fq_name = 3;</code>
     */
    public int getFqName() {
      return fqName_;
    }

    // optional int32 companion_object_name = 4;
    public static final int COMPANION_OBJECT_NAME_FIELD_NUMBER = 4;
    private int companionObjectName_;
    /**
     * <code>optional int32 companion_object_name = 4;</code>
     *
     * <pre>
     * If this field is present, it contains the name of companion object.
     * </pre>
     */
    public boolean hasCompanionObjectName() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional int32 companion_object_name = 4;</code>
     *
     * <pre>
     * If this field is present, it contains the name of companion object.
     * </pre>
     */
    public int getCompanionObjectName() {
      return companionObjectName_;
    }

    // repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;
    public static final int TYPE_PARAMETER_FIELD_NUMBER = 5;
    private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter> typeParameter_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter> getTypeParameterList() {
      return typeParameter_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameterOrBuilder> 
        getTypeParameterOrBuilderList() {
      return typeParameter_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;</code>
     */
    public int getTypeParameterCount() {
      return typeParameter_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter getTypeParameter(int index) {
      return typeParameter_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameterOrBuilder getTypeParameterOrBuilder(
        int index) {
      return typeParameter_.get(index);
    }

    // repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;
    public static final int SUPERTYPE_FIELD_NUMBER = 6;
    private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Type> supertype_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Type> getSupertypeList() {
      return supertype_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.ProtoBuf.TypeOrBuilder> 
        getSupertypeOrBuilderList() {
      return supertype_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;</code>
     */
    public int getSupertypeCount() {
      return supertype_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.Type getSupertype(int index) {
      return supertype_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.TypeOrBuilder getSupertypeOrBuilder(
        int index) {
      return supertype_.get(index);
    }

    // repeated int32 nested_class_name = 7 [packed = true];
    public static final int NESTED_CLASS_NAME_FIELD_NUMBER = 7;
    private java.util.List<java.lang.Integer> nestedClassName_;
    /**
     * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
     *
     * <pre>
     * we store only names, because the actual information must reside in the corresponding .class files,
     * to be obtainable through reflection at runtime
     * </pre>
     */
    public java.util.List<java.lang.Integer>
        getNestedClassNameList() {
      return nestedClassName_;
    }
    /**
     * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
     *
     * <pre>
     * we store only names, because the actual information must reside in the corresponding .class files,
     * to be obtainable through reflection at runtime
     * </pre>
     */
    public int getNestedClassNameCount() {
      return nestedClassName_.size();
    }
    /**
     * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
     *
     * <pre>
     * we store only names, because the actual information must reside in the corresponding .class files,
     * to be obtainable through reflection at runtime
     * </pre>
     */
    public int getNestedClassName(int index) {
      return nestedClassName_.get(index);
    }
    private int nestedClassNameMemoizedSerializedSize = -1;

    // repeated .org.jetbrains.kotlin.serialization.Callable member = 11;
    public static final int MEMBER_FIELD_NUMBER = 11;
    private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Callable> member_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 11;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Callable> getMemberList() {
      return member_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 11;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.ProtoBuf.CallableOrBuilder> 
        getMemberOrBuilderList() {
      return member_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 11;</code>
     */
    public int getMemberCount() {
      return member_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 11;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.Callable getMember(int index) {
      return member_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 11;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.CallableOrBuilder getMemberOrBuilder(
        int index) {
      return member_.get(index);
    }

    // repeated int32 enum_entry = 12 [packed = true];
    public static final int ENUM_ENTRY_FIELD_NUMBER = 12;
    private java.util.List<java.lang.Integer> enumEntry_;
    /**
     * <code>repeated int32 enum_entry = 12 [packed = true];</code>
     */
    public java.util.List<java.lang.Integer>
        getEnumEntryList() {
      return enumEntry_;
    }
    /**
     * <code>repeated int32 enum_entry = 12 [packed = true];</code>
     */
    public int getEnumEntryCount() {
      return enumEntry_.size();
    }
    /**
     * <code>repeated int32 enum_entry = 12 [packed = true];</code>
     */
    public int getEnumEntry(int index) {
      return enumEntry_.get(index);
    }
    private int enumEntryMemoizedSerializedSize = -1;

    // optional .org.jetbrains.kotlin.serialization.Class.PrimaryConstructor primary_constructor = 13;
    public static final int PRIMARY_CONSTRUCTOR_FIELD_NUMBER = 13;
    private org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor primaryConstructor_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.Class.PrimaryConstructor primary_constructor = 13;</code>
     *
     * <pre>
     * This field is present if and only if the class has a primary constructor
     * </pre>
     */
    public boolean hasPrimaryConstructor() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.Class.PrimaryConstructor primary_constructor = 13;</code>
     *
     * <pre>
     * This field is present if and only if the class has a primary constructor
     * </pre>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor getPrimaryConstructor() {
      return primaryConstructor_;
    }

    // repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;
    public static final int SECONDARY_CONSTRUCTOR_FIELD_NUMBER = 14;
    private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Callable> secondaryConstructor_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Callable> getSecondaryConstructorList() {
      return secondaryConstructor_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.ProtoBuf.CallableOrBuilder> 
        getSecondaryConstructorOrBuilderList() {
      return secondaryConstructor_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;</code>
     */
    public int getSecondaryConstructorCount() {
      return secondaryConstructor_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.Callable getSecondaryConstructor(int index) {
      return secondaryConstructor_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.CallableOrBuilder getSecondaryConstructorOrBuilder(
        int index) {
      return secondaryConstructor_.get(index);
    }

    private void initFields() {
      flags_ = 0;
      fqName_ = 0;
      companionObjectName_ = 0;
      typeParameter_ = java.util.Collections.emptyList();
      supertype_ = java.util.Collections.emptyList();
      nestedClassName_ = java.util.Collections.emptyList();
      member_ = java.util.Collections.emptyList();
      enumEntry_ = java.util.Collections.emptyList();
      primaryConstructor_ = org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor.getDefaultInstance();
      secondaryConstructor_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasFqName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getTypeParameterCount(); i++) {
        if (!getTypeParameter(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getSupertypeCount(); i++) {
        if (!getSupertype(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getMemberCount(); i++) {
        if (!getMember(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasPrimaryConstructor()) {
        if (!getPrimaryConstructor().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getSecondaryConstructorCount(); i++) {
        if (!getSecondaryConstructor(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!extensionsAreInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      com.google.protobuf.GeneratedMessageLite
        .ExtendableMessage<org.jetbrains.kotlin.serialization.ProtoBuf.Class>.ExtensionWriter extensionWriter =
          newExtensionWriter();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, flags_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(3, fqName_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(4, companionObjectName_);
      }
      for (int i = 0; i < typeParameter_.size(); i++) {
        output.writeMessage(5, typeParameter_.get(i));
      }
      for (int i = 0; i < supertype_.size(); i++) {
        output.writeMessage(6, supertype_.get(i));
      }
      if (getNestedClassNameList().size() > 0) {
        output.writeRawVarint32(58);
        output.writeRawVarint32(nestedClassNameMemoizedSerializedSize);
      }
      for (int i = 0; i < nestedClassName_.size(); i++) {
        output.writeInt32NoTag(nestedClassName_.get(i));
      }
      for (int i = 0; i < member_.size(); i++) {
        output.writeMessage(11, member_.get(i));
      }
      if (getEnumEntryList().size() > 0) {
        output.writeRawVarint32(98);
        output.writeRawVarint32(enumEntryMemoizedSerializedSize);
      }
      for (int i = 0; i < enumEntry_.size(); i++) {
        output.writeInt32NoTag(enumEntry_.get(i));
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(13, primaryConstructor_);
      }
      for (int i = 0; i < secondaryConstructor_.size(); i++) {
        output.writeMessage(14, secondaryConstructor_.get(i));
      }
      extensionWriter.writeUntil(200, output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, flags_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, fqName_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, companionObjectName_);
      }
      for (int i = 0; i < typeParameter_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, typeParameter_.get(i));
      }
      for (int i = 0; i < supertype_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, supertype_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < nestedClassName_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(nestedClassName_.get(i));
        }
        size += dataSize;
        if (!getNestedClassNameList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        nestedClassNameMemoizedSerializedSize = dataSize;
      }
      for (int i = 0; i < member_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, member_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < enumEntry_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(enumEntry_.get(i));
        }
        size += dataSize;
        if (!getEnumEntryList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        enumEntryMemoizedSerializedSize = dataSize;
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, primaryConstructor_);
      }
      for (int i = 0; i < secondaryConstructor_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, secondaryConstructor_.get(i));
      }
      size += extensionsSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.jetbrains.kotlin.serialization.ProtoBuf.Class parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Class parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Class parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Class parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Class parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Class parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Class parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Class parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Class parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Class parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.jetbrains.kotlin.serialization.ProtoBuf.Class prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.Class}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.ExtendableBuilder<
          org.jetbrains.kotlin.serialization.ProtoBuf.Class, Builder> implements org.jetbrains.kotlin.serialization.ProtoBuf.ClassOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.ProtoBuf.Class.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        flags_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        fqName_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        companionObjectName_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        typeParameter_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        supertype_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        nestedClassName_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        member_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        enumEntry_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);
        primaryConstructor_ = org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000100);
        secondaryConstructor_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000200);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.Class getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.ProtoBuf.Class.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.Class build() {
        org.jetbrains.kotlin.serialization.ProtoBuf.Class result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.Class buildPartial() {
        org.jetbrains.kotlin.serialization.ProtoBuf.Class result = new org.jetbrains.kotlin.serialization.ProtoBuf.Class(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.flags_ = flags_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.fqName_ = fqName_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.companionObjectName_ = companionObjectName_;
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          typeParameter_ = java.util.Collections.unmodifiableList(typeParameter_);
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.typeParameter_ = typeParameter_;
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          supertype_ = java.util.Collections.unmodifiableList(supertype_);
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.supertype_ = supertype_;
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          nestedClassName_ = java.util.Collections.unmodifiableList(nestedClassName_);
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.nestedClassName_ = nestedClassName_;
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          member_ = java.util.Collections.unmodifiableList(member_);
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.member_ = member_;
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          enumEntry_ = java.util.Collections.unmodifiableList(enumEntry_);
          bitField0_ = (bitField0_ & ~0x00000080);
        }
        result.enumEntry_ = enumEntry_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000008;
        }
        result.primaryConstructor_ = primaryConstructor_;
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          secondaryConstructor_ = java.util.Collections.unmodifiableList(secondaryConstructor_);
          bitField0_ = (bitField0_ & ~0x00000200);
        }
        result.secondaryConstructor_ = secondaryConstructor_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.ProtoBuf.Class other) {
        if (other == org.jetbrains.kotlin.serialization.ProtoBuf.Class.getDefaultInstance()) return this;
        if (other.hasFlags()) {
          setFlags(other.getFlags());
        }
        if (other.hasFqName()) {
          setFqName(other.getFqName());
        }
        if (other.hasCompanionObjectName()) {
          setCompanionObjectName(other.getCompanionObjectName());
        }
        if (!other.typeParameter_.isEmpty()) {
          if (typeParameter_.isEmpty()) {
            typeParameter_ = other.typeParameter_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureTypeParameterIsMutable();
            typeParameter_.addAll(other.typeParameter_);
          }
          
        }
        if (!other.supertype_.isEmpty()) {
          if (supertype_.isEmpty()) {
            supertype_ = other.supertype_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureSupertypeIsMutable();
            supertype_.addAll(other.supertype_);
          }
          
        }
        if (!other.nestedClassName_.isEmpty()) {
          if (nestedClassName_.isEmpty()) {
            nestedClassName_ = other.nestedClassName_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureNestedClassNameIsMutable();
            nestedClassName_.addAll(other.nestedClassName_);
          }
          
        }
        if (!other.member_.isEmpty()) {
          if (member_.isEmpty()) {
            member_ = other.member_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureMemberIsMutable();
            member_.addAll(other.member_);
          }
          
        }
        if (!other.enumEntry_.isEmpty()) {
          if (enumEntry_.isEmpty()) {
            enumEntry_ = other.enumEntry_;
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            ensureEnumEntryIsMutable();
            enumEntry_.addAll(other.enumEntry_);
          }
          
        }
        if (other.hasPrimaryConstructor()) {
          mergePrimaryConstructor(other.getPrimaryConstructor());
        }
        if (!other.secondaryConstructor_.isEmpty()) {
          if (secondaryConstructor_.isEmpty()) {
            secondaryConstructor_ = other.secondaryConstructor_;
            bitField0_ = (bitField0_ & ~0x00000200);
          } else {
            ensureSecondaryConstructorIsMutable();
            secondaryConstructor_.addAll(other.secondaryConstructor_);
          }
          
        }
        this.mergeExtensionFields(other);
        return this;
      }

      public final boolean isInitialized() {
        if (!hasFqName()) {
          
          return false;
        }
        for (int i = 0; i < getTypeParameterCount(); i++) {
          if (!getTypeParameter(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getSupertypeCount(); i++) {
          if (!getSupertype(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getMemberCount(); i++) {
          if (!getMember(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasPrimaryConstructor()) {
          if (!getPrimaryConstructor().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getSecondaryConstructorCount(); i++) {
          if (!getSecondaryConstructor(i).isInitialized()) {
            
            return false;
          }
        }
        if (!extensionsAreInitialized()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.jetbrains.kotlin.serialization.ProtoBuf.Class parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.ProtoBuf.Class) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional int32 flags = 1 [default = 0];
      private int flags_ ;
      /**
       * <code>optional int32 flags = 1 [default = 0];</code>
       *
       * <pre>
       *
       *Visibility
       *Modality
       *has_annotation
       *ClassKind
       *is_inner
       * </pre>
       */
      public boolean hasFlags() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int32 flags = 1 [default = 0];</code>
       *
       * <pre>
       *
       *Visibility
       *Modality
       *has_annotation
       *ClassKind
       *is_inner
       * </pre>
       */
      public int getFlags() {
        return flags_;
      }
      /**
       * <code>optional int32 flags = 1 [default = 0];</code>
       *
       * <pre>
       *
       *Visibility
       *Modality
       *has_annotation
       *ClassKind
       *is_inner
       * </pre>
       */
      public Builder setFlags(int value) {
        bitField0_ |= 0x00000001;
        flags_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 flags = 1 [default = 0];</code>
       *
       * <pre>
       *
       *Visibility
       *Modality
       *has_annotation
       *ClassKind
       *is_inner
       * </pre>
       */
      public Builder clearFlags() {
        bitField0_ = (bitField0_ & ~0x00000001);
        flags_ = 0;
        
        return this;
      }

      // required int32 fq_name = 3;
      private int fqName_ ;
      /**
       * <code>required int32 fq_name = 3;</code>
       */
      public boolean hasFqName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 fq_name = 3;</code>
       */
      public int getFqName() {
        return fqName_;
      }
      /**
       * <code>required int32 fq_name = 3;</code>
       */
      public Builder setFqName(int value) {
        bitField0_ |= 0x00000002;
        fqName_ = value;
        
        return this;
      }
      /**
       * <code>required int32 fq_name = 3;</code>
       */
      public Builder clearFqName() {
        bitField0_ = (bitField0_ & ~0x00000002);
        fqName_ = 0;
        
        return this;
      }

      // optional int32 companion_object_name = 4;
      private int companionObjectName_ ;
      /**
       * <code>optional int32 companion_object_name = 4;</code>
       *
       * <pre>
       * If this field is present, it contains the name of companion object.
       * </pre>
       */
      public boolean hasCompanionObjectName() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional int32 companion_object_name = 4;</code>
       *
       * <pre>
       * If this field is present, it contains the name of companion object.
       * </pre>
       */
      public int getCompanionObjectName() {
        return companionObjectName_;
      }
      /**
       * <code>optional int32 companion_object_name = 4;</code>
       *
       * <pre>
       * If this field is present, it contains the name of companion object.
       * </pre>
       */
      public Builder setCompanionObjectName(int value) {
        bitField0_ |= 0x00000004;
        companionObjectName_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 companion_object_name = 4;</code>
       *
       * <pre>
       * If this field is present, it contains the name of companion object.
       * </pre>
       */
      public Builder clearCompanionObjectName() {
        bitField0_ = (bitField0_ & ~0x00000004);
        companionObjectName_ = 0;
        
        return this;
      }

      // repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;
      private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter> typeParameter_ =
        java.util.Collections.emptyList();
      private void ensureTypeParameterIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          typeParameter_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter>(typeParameter_);
          bitField0_ |= 0x00000008;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter> getTypeParameterList() {
        return java.util.Collections.unmodifiableList(typeParameter_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;</code>
       */
      public int getTypeParameterCount() {
        return typeParameter_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;</code>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter getTypeParameter(int index) {
        return typeParameter_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;</code>
       */
      public Builder setTypeParameter(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeParameterIsMutable();
        typeParameter_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;</code>
       */
      public Builder setTypeParameter(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.Builder builderForValue) {
        ensureTypeParameterIsMutable();
        typeParameter_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;</code>
       */
      public Builder addTypeParameter(org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeParameterIsMutable();
        typeParameter_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;</code>
       */
      public Builder addTypeParameter(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeParameterIsMutable();
        typeParameter_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;</code>
       */
      public Builder addTypeParameter(
          org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.Builder builderForValue) {
        ensureTypeParameterIsMutable();
        typeParameter_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;</code>
       */
      public Builder addTypeParameter(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.Builder builderForValue) {
        ensureTypeParameterIsMutable();
        typeParameter_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;</code>
       */
      public Builder addAllTypeParameter(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter> values) {
        ensureTypeParameterIsMutable();
        super.addAll(values, typeParameter_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;</code>
       */
      public Builder clearTypeParameter() {
        typeParameter_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 5;</code>
       */
      public Builder removeTypeParameter(int index) {
        ensureTypeParameterIsMutable();
        typeParameter_.remove(index);

        return this;
      }

      // repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;
      private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Type> supertype_ =
        java.util.Collections.emptyList();
      private void ensureSupertypeIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          supertype_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.Type>(supertype_);
          bitField0_ |= 0x00000010;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Type> getSupertypeList() {
        return java.util.Collections.unmodifiableList(supertype_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;</code>
       */
      public int getSupertypeCount() {
        return supertype_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;</code>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.Type getSupertype(int index) {
        return supertype_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;</code>
       */
      public Builder setSupertype(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSupertypeIsMutable();
        supertype_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;</code>
       */
      public Builder setSupertype(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Type.Builder builderForValue) {
        ensureSupertypeIsMutable();
        supertype_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;</code>
       */
      public Builder addSupertype(org.jetbrains.kotlin.serialization.ProtoBuf.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSupertypeIsMutable();
        supertype_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;</code>
       */
      public Builder addSupertype(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSupertypeIsMutable();
        supertype_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;</code>
       */
      public Builder addSupertype(
          org.jetbrains.kotlin.serialization.ProtoBuf.Type.Builder builderForValue) {
        ensureSupertypeIsMutable();
        supertype_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;</code>
       */
      public Builder addSupertype(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Type.Builder builderForValue) {
        ensureSupertypeIsMutable();
        supertype_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;</code>
       */
      public Builder addAllSupertype(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.ProtoBuf.Type> values) {
        ensureSupertypeIsMutable();
        super.addAll(values, supertype_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;</code>
       */
      public Builder clearSupertype() {
        supertype_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Type supertype = 6;</code>
       */
      public Builder removeSupertype(int index) {
        ensureSupertypeIsMutable();
        supertype_.remove(index);

        return this;
      }

      // repeated int32 nested_class_name = 7 [packed = true];
      private java.util.List<java.lang.Integer> nestedClassName_ = java.util.Collections.emptyList();
      private void ensureNestedClassNameIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          nestedClassName_ = new java.util.ArrayList<java.lang.Integer>(nestedClassName_);
          bitField0_ |= 0x00000020;
         }
      }
      /**
       * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
       *
       * <pre>
       * we store only names, because the actual information must reside in the corresponding .class files,
       * to be obtainable through reflection at runtime
       * </pre>
       */
      public java.util.List<java.lang.Integer>
          getNestedClassNameList() {
        return java.util.Collections.unmodifiableList(nestedClassName_);
      }
      /**
       * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
       *
       * <pre>
       * we store only names, because the actual information must reside in the corresponding .class files,
       * to be obtainable through reflection at runtime
       * </pre>
       */
      public int getNestedClassNameCount() {
        return nestedClassName_.size();
      }
      /**
       * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
       *
       * <pre>
       * we store only names, because the actual information must reside in the corresponding .class files,
       * to be obtainable through reflection at runtime
       * </pre>
       */
      public int getNestedClassName(int index) {
        return nestedClassName_.get(index);
      }
      /**
       * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
       *
       * <pre>
       * we store only names, because the actual information must reside in the corresponding .class files,
       * to be obtainable through reflection at runtime
       * </pre>
       */
      public Builder setNestedClassName(
          int index, int value) {
        ensureNestedClassNameIsMutable();
        nestedClassName_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
       *
       * <pre>
       * we store only names, because the actual information must reside in the corresponding .class files,
       * to be obtainable through reflection at runtime
       * </pre>
       */
      public Builder addNestedClassName(int value) {
        ensureNestedClassNameIsMutable();
        nestedClassName_.add(value);
        
        return this;
      }
      /**
       * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
       *
       * <pre>
       * we store only names, because the actual information must reside in the corresponding .class files,
       * to be obtainable through reflection at runtime
       * </pre>
       */
      public Builder addAllNestedClassName(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureNestedClassNameIsMutable();
        super.addAll(values, nestedClassName_);
        
        return this;
      }
      /**
       * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
       *
       * <pre>
       * we store only names, because the actual information must reside in the corresponding .class files,
       * to be obtainable through reflection at runtime
       * </pre>
       */
      public Builder clearNestedClassName() {
        nestedClassName_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        
        return this;
      }

      // repeated .org.jetbrains.kotlin.serialization.Callable member = 11;
      private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Callable> member_ =
        java.util.Collections.emptyList();
      private void ensureMemberIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          member_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.Callable>(member_);
          bitField0_ |= 0x00000040;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 11;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Callable> getMemberList() {
        return java.util.Collections.unmodifiableList(member_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 11;</code>
       */
      public int getMemberCount() {
        return member_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 11;</code>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.Callable getMember(int index) {
        return member_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 11;</code>
       */
      public Builder setMember(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Callable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureMemberIsMutable();
        member_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 11;</code>
       */
      public Builder setMember(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Callable.Builder builderForValue) {
        ensureMemberIsMutable();
        member_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 11;</code>
       */
      public Builder addMember(org.jetbrains.kotlin.serialization.ProtoBuf.Callable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureMemberIsMutable();
        member_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 11;</code>
       */
      public Builder addMember(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Callable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureMemberIsMutable();
        member_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 11;</code>
       */
      public Builder addMember(
          org.jetbrains.kotlin.serialization.ProtoBuf.Callable.Builder builderForValue) {
        ensureMemberIsMutable();
        member_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 11;</code>
       */
      public Builder addMember(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Callable.Builder builderForValue) {
        ensureMemberIsMutable();
        member_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 11;</code>
       */
      public Builder addAllMember(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.ProtoBuf.Callable> values) {
        ensureMemberIsMutable();
        super.addAll(values, member_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 11;</code>
       */
      public Builder clearMember() {
        member_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 11;</code>
       */
      public Builder removeMember(int index) {
        ensureMemberIsMutable();
        member_.remove(index);

        return this;
      }

      // repeated int32 enum_entry = 12 [packed = true];
      private java.util.List<java.lang.Integer> enumEntry_ = java.util.Collections.emptyList();
      private void ensureEnumEntryIsMutable() {
        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
          enumEntry_ = new java.util.ArrayList<java.lang.Integer>(enumEntry_);
          bitField0_ |= 0x00000080;
         }
      }
      /**
       * <code>repeated int32 enum_entry = 12 [packed = true];</code>
       */
      public java.util.List<java.lang.Integer>
          getEnumEntryList() {
        return java.util.Collections.unmodifiableList(enumEntry_);
      }
      /**
       * <code>repeated int32 enum_entry = 12 [packed = true];</code>
       */
      public int getEnumEntryCount() {
        return enumEntry_.size();
      }
      /**
       * <code>repeated int32 enum_entry = 12 [packed = true];</code>
       */
      public int getEnumEntry(int index) {
        return enumEntry_.get(index);
      }
      /**
       * <code>repeated int32 enum_entry = 12 [packed = true];</code>
       */
      public Builder setEnumEntry(
          int index, int value) {
        ensureEnumEntryIsMutable();
        enumEntry_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated int32 enum_entry = 12 [packed = true];</code>
       */
      public Builder addEnumEntry(int value) {
        ensureEnumEntryIsMutable();
        enumEntry_.add(value);
        
        return this;
      }
      /**
       * <code>repeated int32 enum_entry = 12 [packed = true];</code>
       */
      public Builder addAllEnumEntry(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureEnumEntryIsMutable();
        super.addAll(values, enumEntry_);
        
        return this;
      }
      /**
       * <code>repeated int32 enum_entry = 12 [packed = true];</code>
       */
      public Builder clearEnumEntry() {
        enumEntry_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);
        
        return this;
      }

      // optional .org.jetbrains.kotlin.serialization.Class.PrimaryConstructor primary_constructor = 13;
      private org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor primaryConstructor_ = org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Class.PrimaryConstructor primary_constructor = 13;</code>
       *
       * <pre>
       * This field is present if and only if the class has a primary constructor
       * </pre>
       */
      public boolean hasPrimaryConstructor() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Class.PrimaryConstructor primary_constructor = 13;</code>
       *
       * <pre>
       * This field is present if and only if the class has a primary constructor
       * </pre>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor getPrimaryConstructor() {
        return primaryConstructor_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Class.PrimaryConstructor primary_constructor = 13;</code>
       *
       * <pre>
       * This field is present if and only if the class has a primary constructor
       * </pre>
       */
      public Builder setPrimaryConstructor(org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor value) {
        if (value == null) {
          throw new NullPointerException();
        }
        primaryConstructor_ = value;

        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Class.PrimaryConstructor primary_constructor = 13;</code>
       *
       * <pre>
       * This field is present if and only if the class has a primary constructor
       * </pre>
       */
      public Builder setPrimaryConstructor(
          org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor.Builder builderForValue) {
        primaryConstructor_ = builderForValue.build();

        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Class.PrimaryConstructor primary_constructor = 13;</code>
       *
       * <pre>
       * This field is present if and only if the class has a primary constructor
       * </pre>
       */
      public Builder mergePrimaryConstructor(org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor value) {
        if (((bitField0_ & 0x00000100) == 0x00000100) &&
            primaryConstructor_ != org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor.getDefaultInstance()) {
          primaryConstructor_ =
            org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor.newBuilder(primaryConstructor_).mergeFrom(value).buildPartial();
        } else {
          primaryConstructor_ = value;
        }

        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Class.PrimaryConstructor primary_constructor = 13;</code>
       *
       * <pre>
       * This field is present if and only if the class has a primary constructor
       * </pre>
       */
      public Builder clearPrimaryConstructor() {
        primaryConstructor_ = org.jetbrains.kotlin.serialization.ProtoBuf.Class.PrimaryConstructor.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000100);
        return this;
      }

      // repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;
      private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Callable> secondaryConstructor_ =
        java.util.Collections.emptyList();
      private void ensureSecondaryConstructorIsMutable() {
        if (!((bitField0_ & 0x00000200) == 0x00000200)) {
          secondaryConstructor_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.Callable>(secondaryConstructor_);
          bitField0_ |= 0x00000200;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Callable> getSecondaryConstructorList() {
        return java.util.Collections.unmodifiableList(secondaryConstructor_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;</code>
       */
      public int getSecondaryConstructorCount() {
        return secondaryConstructor_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;</code>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.Callable getSecondaryConstructor(int index) {
        return secondaryConstructor_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;</code>
       */
      public Builder setSecondaryConstructor(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Callable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSecondaryConstructorIsMutable();
        secondaryConstructor_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;</code>
       */
      public Builder setSecondaryConstructor(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Callable.Builder builderForValue) {
        ensureSecondaryConstructorIsMutable();
        secondaryConstructor_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;</code>
       */
      public Builder addSecondaryConstructor(org.jetbrains.kotlin.serialization.ProtoBuf.Callable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSecondaryConstructorIsMutable();
        secondaryConstructor_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;</code>
       */
      public Builder addSecondaryConstructor(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Callable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSecondaryConstructorIsMutable();
        secondaryConstructor_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;</code>
       */
      public Builder addSecondaryConstructor(
          org.jetbrains.kotlin.serialization.ProtoBuf.Callable.Builder builderForValue) {
        ensureSecondaryConstructorIsMutable();
        secondaryConstructor_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;</code>
       */
      public Builder addSecondaryConstructor(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Callable.Builder builderForValue) {
        ensureSecondaryConstructorIsMutable();
        secondaryConstructor_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;</code>
       */
      public Builder addAllSecondaryConstructor(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.ProtoBuf.Callable> values) {
        ensureSecondaryConstructorIsMutable();
        super.addAll(values, secondaryConstructor_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;</code>
       */
      public Builder clearSecondaryConstructor() {
        secondaryConstructor_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000200);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable secondary_constructor = 14;</code>
       */
      public Builder removeSecondaryConstructor(int index) {
        ensureSecondaryConstructorIsMutable();
        secondaryConstructor_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.Class)
    }

    static {
      defaultInstance = new Class(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.Class)
  }

  public interface PackageOrBuilder extends 
       com.google.protobuf.GeneratedMessageLite.
            ExtendableMessageOrBuilder<Package> {

    // repeated .org.jetbrains.kotlin.serialization.Callable member = 1;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Callable> 
        getMemberList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 1;</code>
     */
    org.jetbrains.kotlin.serialization.ProtoBuf.Callable getMember(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 1;</code>
     */
    int getMemberCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.Package}
   */
  public static final class Package extends
      com.google.protobuf.GeneratedMessageLite.ExtendableMessage<
        Package> implements PackageOrBuilder {
    // Use Package.newBuilder() to construct.
    private Package(com.google.protobuf.GeneratedMessageLite.ExtendableBuilder<org.jetbrains.kotlin.serialization.ProtoBuf.Package, ?> builder) {
      super(builder);

    }
    private Package(boolean noInit) {}

    private static final Package defaultInstance;
    public static Package getDefaultInstance() {
      return defaultInstance;
    }

    public Package getDefaultInstanceForType() {
      return defaultInstance;
    }

    private Package(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                member_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.Callable>();
                mutable_bitField0_ |= 0x00000001;
              }
              member_.add(input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Callable.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          member_ = java.util.Collections.unmodifiableList(member_);
        }
        makeExtensionsImmutable();
      }
    }
    public static com.google.protobuf.Parser<Package> PARSER =
        new com.google.protobuf.AbstractParser<Package>() {
      public Package parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Package(input, extensionRegistry);
      }
    };

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

    // repeated .org.jetbrains.kotlin.serialization.Callable member = 1;
    public static final int MEMBER_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Callable> member_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Callable> getMemberList() {
      return member_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.ProtoBuf.CallableOrBuilder> 
        getMemberOrBuilderList() {
      return member_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 1;</code>
     */
    public int getMemberCount() {
      return member_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.Callable getMember(int index) {
      return member_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.CallableOrBuilder getMemberOrBuilder(
        int index) {
      return member_.get(index);
    }

    private void initFields() {
      member_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      for (int i = 0; i < getMemberCount(); i++) {
        if (!getMember(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!extensionsAreInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      com.google.protobuf.GeneratedMessageLite
        .ExtendableMessage<org.jetbrains.kotlin.serialization.ProtoBuf.Package>.ExtensionWriter extensionWriter =
          newExtensionWriter();
      for (int i = 0; i < member_.size(); i++) {
        output.writeMessage(1, member_.get(i));
      }
      extensionWriter.writeUntil(200, output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < member_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, member_.get(i));
      }
      size += extensionsSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.jetbrains.kotlin.serialization.ProtoBuf.Package parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Package parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Package parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Package parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Package parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Package parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Package parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Package parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Package parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Package parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.jetbrains.kotlin.serialization.ProtoBuf.Package prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.Package}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.ExtendableBuilder<
          org.jetbrains.kotlin.serialization.ProtoBuf.Package, Builder> implements org.jetbrains.kotlin.serialization.ProtoBuf.PackageOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.ProtoBuf.Package.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        member_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.Package getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.ProtoBuf.Package.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.Package build() {
        org.jetbrains.kotlin.serialization.ProtoBuf.Package result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.Package buildPartial() {
        org.jetbrains.kotlin.serialization.ProtoBuf.Package result = new org.jetbrains.kotlin.serialization.ProtoBuf.Package(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          member_ = java.util.Collections.unmodifiableList(member_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.member_ = member_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.ProtoBuf.Package other) {
        if (other == org.jetbrains.kotlin.serialization.ProtoBuf.Package.getDefaultInstance()) return this;
        if (!other.member_.isEmpty()) {
          if (member_.isEmpty()) {
            member_ = other.member_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureMemberIsMutable();
            member_.addAll(other.member_);
          }
          
        }
        this.mergeExtensionFields(other);
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getMemberCount(); i++) {
          if (!getMember(i).isInitialized()) {
            
            return false;
          }
        }
        if (!extensionsAreInitialized()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.jetbrains.kotlin.serialization.ProtoBuf.Package parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.ProtoBuf.Package) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .org.jetbrains.kotlin.serialization.Callable member = 1;
      private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Callable> member_ =
        java.util.Collections.emptyList();
      private void ensureMemberIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          member_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.Callable>(member_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Callable> getMemberList() {
        return java.util.Collections.unmodifiableList(member_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 1;</code>
       */
      public int getMemberCount() {
        return member_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.Callable getMember(int index) {
        return member_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 1;</code>
       */
      public Builder setMember(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Callable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureMemberIsMutable();
        member_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 1;</code>
       */
      public Builder setMember(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Callable.Builder builderForValue) {
        ensureMemberIsMutable();
        member_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 1;</code>
       */
      public Builder addMember(org.jetbrains.kotlin.serialization.ProtoBuf.Callable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureMemberIsMutable();
        member_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 1;</code>
       */
      public Builder addMember(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Callable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureMemberIsMutable();
        member_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 1;</code>
       */
      public Builder addMember(
          org.jetbrains.kotlin.serialization.ProtoBuf.Callable.Builder builderForValue) {
        ensureMemberIsMutable();
        member_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 1;</code>
       */
      public Builder addMember(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Callable.Builder builderForValue) {
        ensureMemberIsMutable();
        member_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 1;</code>
       */
      public Builder addAllMember(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.ProtoBuf.Callable> values) {
        ensureMemberIsMutable();
        super.addAll(values, member_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 1;</code>
       */
      public Builder clearMember() {
        member_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable member = 1;</code>
       */
      public Builder removeMember(int index) {
        ensureMemberIsMutable();
        member_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.Package)
    }

    static {
      defaultInstance = new Package(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.Package)
  }

  public interface CallableOrBuilder extends 
       com.google.protobuf.GeneratedMessageLite.
            ExtendableMessageOrBuilder<Callable> {

    // optional int32 flags = 1;
    /**
     * <code>optional int32 flags = 1;</code>
     *
     * <pre>
     *
     *Visibility
     *Modality
     *has_annotations
     *CallableKind
     *MemberKind
     *hasGetter
     *hasSetter
     *hasConstant
     * </pre>
     */
    boolean hasFlags();
    /**
     * <code>optional int32 flags = 1;</code>
     *
     * <pre>
     *
     *Visibility
     *Modality
     *has_annotations
     *CallableKind
     *MemberKind
     *hasGetter
     *hasSetter
     *hasConstant
     * </pre>
     */
    int getFlags();

    // optional int32 getter_flags = 9;
    /**
     * <code>optional int32 getter_flags = 9;</code>
     *
     * <pre>
     *
     *isNotDefault
     *Visibility
     *Modality
     *has_annotations
     * </pre>
     */
    boolean hasGetterFlags();
    /**
     * <code>optional int32 getter_flags = 9;</code>
     *
     * <pre>
     *
     *isNotDefault
     *Visibility
     *Modality
     *has_annotations
     * </pre>
     */
    int getGetterFlags();

    // optional int32 setter_flags = 10;
    /**
     * <code>optional int32 setter_flags = 10;</code>
     */
    boolean hasSetterFlags();
    /**
     * <code>optional int32 setter_flags = 10;</code>
     */
    int getSetterFlags();

    // repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter> 
        getTypeParameterList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;</code>
     */
    org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter getTypeParameter(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;</code>
     */
    int getTypeParameterCount();

    // optional .org.jetbrains.kotlin.serialization.Type receiver_type = 5;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.Type receiver_type = 5;</code>
     */
    boolean hasReceiverType();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.Type receiver_type = 5;</code>
     */
    org.jetbrains.kotlin.serialization.ProtoBuf.Type getReceiverType();

    // required int32 name = 6;
    /**
     * <code>required int32 name = 6;</code>
     *
     * <pre>
     * Id in the StringTable
     * </pre>
     */
    boolean hasName();
    /**
     * <code>required int32 name = 6;</code>
     *
     * <pre>
     * Id in the StringTable
     * </pre>
     */
    int getName();

    // repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;</code>
     *
     * <pre>
     * Value parameters for functions and constructors, or setter value parameter for properties
     * </pre>
     */
    java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter> 
        getValueParameterList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;</code>
     *
     * <pre>
     * Value parameters for functions and constructors, or setter value parameter for properties
     * </pre>
     */
    org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter getValueParameter(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;</code>
     *
     * <pre>
     * Value parameters for functions and constructors, or setter value parameter for properties
     * </pre>
     */
    int getValueParameterCount();

    // required .org.jetbrains.kotlin.serialization.Type return_type = 8;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.Type return_type = 8;</code>
     */
    boolean hasReturnType();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.Type return_type = 8;</code>
     */
    org.jetbrains.kotlin.serialization.ProtoBuf.Type getReturnType();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.Callable}
   */
  public static final class Callable extends
      com.google.protobuf.GeneratedMessageLite.ExtendableMessage<
        Callable> implements CallableOrBuilder {
    // Use Callable.newBuilder() to construct.
    private Callable(com.google.protobuf.GeneratedMessageLite.ExtendableBuilder<org.jetbrains.kotlin.serialization.ProtoBuf.Callable, ?> builder) {
      super(builder);

    }
    private Callable(boolean noInit) {}

    private static final Callable defaultInstance;
    public static Callable getDefaultInstance() {
      return defaultInstance;
    }

    public Callable getDefaultInstanceForType() {
      return defaultInstance;
    }

    private Callable(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              flags_ = input.readInt32();
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                typeParameter_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter>();
                mutable_bitField0_ |= 0x00000008;
              }
              typeParameter_.add(input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.PARSER, extensionRegistry));
              break;
            }
            case 42: {
              org.jetbrains.kotlin.serialization.ProtoBuf.Type.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = receiverType_.toBuilder();
              }
              receiverType_ = input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Type.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(receiverType_);
                receiverType_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 48: {
              bitField0_ |= 0x00000010;
              name_ = input.readInt32();
              break;
            }
            case 58: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                valueParameter_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter>();
                mutable_bitField0_ |= 0x00000040;
              }
              valueParameter_.add(input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter.PARSER, extensionRegistry));
              break;
            }
            case 66: {
              org.jetbrains.kotlin.serialization.ProtoBuf.Type.Builder subBuilder = null;
              if (((bitField0_ & 0x00000020) == 0x00000020)) {
                subBuilder = returnType_.toBuilder();
              }
              returnType_ = input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Type.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(returnType_);
                returnType_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000020;
              break;
            }
            case 72: {
              bitField0_ |= 0x00000002;
              getterFlags_ = input.readInt32();
              break;
            }
            case 80: {
              bitField0_ |= 0x00000004;
              setterFlags_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          typeParameter_ = java.util.Collections.unmodifiableList(typeParameter_);
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          valueParameter_ = java.util.Collections.unmodifiableList(valueParameter_);
        }
        makeExtensionsImmutable();
      }
    }
    public static com.google.protobuf.Parser<Callable> PARSER =
        new com.google.protobuf.AbstractParser<Callable>() {
      public Callable parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Callable(input, extensionRegistry);
      }
    };

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

    /**
     * Protobuf enum {@code org.jetbrains.kotlin.serialization.Callable.MemberKind}
     */
    public enum MemberKind
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <code>DECLARATION = 0;</code>
       *
       * <pre>
       * 2 bits
       * </pre>
       */
      DECLARATION(0, 0),
      /**
       * <code>FAKE_OVERRIDE = 1;</code>
       */
      FAKE_OVERRIDE(1, 1),
      /**
       * <code>DELEGATION = 2;</code>
       */
      DELEGATION(2, 2),
      /**
       * <code>SYNTHESIZED = 3;</code>
       */
      SYNTHESIZED(3, 3),
      ;

      /**
       * <code>DECLARATION = 0;</code>
       *
       * <pre>
       * 2 bits
       * </pre>
       */
      public static final int DECLARATION_VALUE = 0;
      /**
       * <code>FAKE_OVERRIDE = 1;</code>
       */
      public static final int FAKE_OVERRIDE_VALUE = 1;
      /**
       * <code>DELEGATION = 2;</code>
       */
      public static final int DELEGATION_VALUE = 2;
      /**
       * <code>SYNTHESIZED = 3;</code>
       */
      public static final int SYNTHESIZED_VALUE = 3;


      public final int getNumber() { return value; }

      public static MemberKind valueOf(int value) {
        switch (value) {
          case 0: return DECLARATION;
          case 1: return FAKE_OVERRIDE;
          case 2: return DELEGATION;
          case 3: return SYNTHESIZED;
          default: return null;
        }
      }

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

      private final int value;

      private MemberKind(int index, int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.serialization.Callable.MemberKind)
    }

    /**
     * Protobuf enum {@code org.jetbrains.kotlin.serialization.Callable.CallableKind}
     */
    public enum CallableKind
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <code>FUN = 0;</code>
       *
       * <pre>
       * 2 bits
       * </pre>
       */
      FUN(0, 0),
      /**
       * <code>VAL = 1;</code>
       */
      VAL(1, 1),
      /**
       * <code>VAR = 2;</code>
       */
      VAR(2, 2),
      /**
       * <code>CONSTRUCTOR = 3;</code>
       */
      CONSTRUCTOR(3, 3),
      ;

      /**
       * <code>FUN = 0;</code>
       *
       * <pre>
       * 2 bits
       * </pre>
       */
      public static final int FUN_VALUE = 0;
      /**
       * <code>VAL = 1;</code>
       */
      public static final int VAL_VALUE = 1;
      /**
       * <code>VAR = 2;</code>
       */
      public static final int VAR_VALUE = 2;
      /**
       * <code>CONSTRUCTOR = 3;</code>
       */
      public static final int CONSTRUCTOR_VALUE = 3;


      public final int getNumber() { return value; }

      public static CallableKind valueOf(int value) {
        switch (value) {
          case 0: return FUN;
          case 1: return VAL;
          case 2: return VAR;
          case 3: return CONSTRUCTOR;
          default: return null;
        }
      }

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

      private final int value;

      private CallableKind(int index, int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.serialization.Callable.CallableKind)
    }

    public interface ValueParameterOrBuilder extends 
         com.google.protobuf.GeneratedMessageLite.
              ExtendableMessageOrBuilder<ValueParameter> {

      // optional int32 flags = 1;
      /**
       * <code>optional int32 flags = 1;</code>
       *
       * <pre>
       *
       *declaresDefault
       *has_annotations
       * </pre>
       */
      boolean hasFlags();
      /**
       * <code>optional int32 flags = 1;</code>
       *
       * <pre>
       *
       *declaresDefault
       *has_annotations
       * </pre>
       */
      int getFlags();

      // required int32 name = 2;
      /**
       * <code>required int32 name = 2;</code>
       *
       * <pre>
       * Id in the StringTable
       * </pre>
       */
      boolean hasName();
      /**
       * <code>required int32 name = 2;</code>
       *
       * <pre>
       * Id in the StringTable
       * </pre>
       */
      int getName();

      // required .org.jetbrains.kotlin.serialization.Type type = 3;
      /**
       * <code>required .org.jetbrains.kotlin.serialization.Type type = 3;</code>
       */
      boolean hasType();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.Type type = 3;</code>
       */
      org.jetbrains.kotlin.serialization.ProtoBuf.Type getType();

      // optional .org.jetbrains.kotlin.serialization.Type vararg_element_type = 4;
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type vararg_element_type = 4;</code>
       */
      boolean hasVarargElementType();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type vararg_element_type = 4;</code>
       */
      org.jetbrains.kotlin.serialization.ProtoBuf.Type getVarargElementType();
    }
    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.Callable.ValueParameter}
     */
    public static final class ValueParameter extends
        com.google.protobuf.GeneratedMessageLite.ExtendableMessage<
          ValueParameter> implements ValueParameterOrBuilder {
      // Use ValueParameter.newBuilder() to construct.
      private ValueParameter(com.google.protobuf.GeneratedMessageLite.ExtendableBuilder<org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter, ?> builder) {
        super(builder);

      }
      private ValueParameter(boolean noInit) {}

      private static final ValueParameter defaultInstance;
      public static ValueParameter getDefaultInstance() {
        return defaultInstance;
      }

      public ValueParameter getDefaultInstanceForType() {
        return defaultInstance;
      }

      private ValueParameter(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                flags_ = input.readInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                name_ = input.readInt32();
                break;
              }
              case 26: {
                org.jetbrains.kotlin.serialization.ProtoBuf.Type.Builder subBuilder = null;
                if (((bitField0_ & 0x00000004) == 0x00000004)) {
                  subBuilder = type_.toBuilder();
                }
                type_ = input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Type.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(type_);
                  type_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000004;
                break;
              }
              case 34: {
                org.jetbrains.kotlin.serialization.ProtoBuf.Type.Builder subBuilder = null;
                if (((bitField0_ & 0x00000008) == 0x00000008)) {
                  subBuilder = varargElementType_.toBuilder();
                }
                varargElementType_ = input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Type.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(varargElementType_);
                  varargElementType_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000008;
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          makeExtensionsImmutable();
        }
      }
      public static com.google.protobuf.Parser<ValueParameter> PARSER =
          new com.google.protobuf.AbstractParser<ValueParameter>() {
        public ValueParameter parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new ValueParameter(input, extensionRegistry);
        }
      };

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

      private int bitField0_;
      // optional int32 flags = 1;
      public static final int FLAGS_FIELD_NUMBER = 1;
      private int flags_;
      /**
       * <code>optional int32 flags = 1;</code>
       *
       * <pre>
       *
       *declaresDefault
       *has_annotations
       * </pre>
       */
      public boolean hasFlags() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int32 flags = 1;</code>
       *
       * <pre>
       *
       *declaresDefault
       *has_annotations
       * </pre>
       */
      public int getFlags() {
        return flags_;
      }

      // required int32 name = 2;
      public static final int NAME_FIELD_NUMBER = 2;
      private int name_;
      /**
       * <code>required int32 name = 2;</code>
       *
       * <pre>
       * Id in the StringTable
       * </pre>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 name = 2;</code>
       *
       * <pre>
       * Id in the StringTable
       * </pre>
       */
      public int getName() {
        return name_;
      }

      // required .org.jetbrains.kotlin.serialization.Type type = 3;
      public static final int TYPE_FIELD_NUMBER = 3;
      private org.jetbrains.kotlin.serialization.ProtoBuf.Type type_;
      /**
       * <code>required .org.jetbrains.kotlin.serialization.Type type = 3;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.Type type = 3;</code>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.Type getType() {
        return type_;
      }

      // optional .org.jetbrains.kotlin.serialization.Type vararg_element_type = 4;
      public static final int VARARG_ELEMENT_TYPE_FIELD_NUMBER = 4;
      private org.jetbrains.kotlin.serialization.ProtoBuf.Type varargElementType_;
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type vararg_element_type = 4;</code>
       */
      public boolean hasVarargElementType() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type vararg_element_type = 4;</code>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.Type getVarargElementType() {
        return varargElementType_;
      }

      private void initFields() {
        flags_ = 0;
        name_ = 0;
        type_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();
        varargElementType_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;

        if (!hasName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasType()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getType().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (hasVarargElementType()) {
          if (!getVarargElementType().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (!extensionsAreInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        com.google.protobuf.GeneratedMessageLite
          .ExtendableMessage<org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter>.ExtensionWriter extensionWriter =
            newExtensionWriter();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeInt32(1, flags_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeInt32(2, name_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeMessage(3, type_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeMessage(4, varargElementType_);
        }
        extensionWriter.writeUntil(200, output);
      }

      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, flags_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, name_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, type_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, varargElementType_);
        }
        size += extensionsSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }

      public static org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }

      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      /**
       * Protobuf type {@code org.jetbrains.kotlin.serialization.Callable.ValueParameter}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.ExtendableBuilder<
            org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter, Builder> implements org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameterOrBuilder {
        // Construct using org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private void maybeForceBuilderInitialization() {
        }
        private static Builder create() {
          return new Builder();
        }

        public Builder clear() {
          super.clear();
          flags_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          name_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          type_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();
          bitField0_ = (bitField0_ & ~0x00000004);
          varargElementType_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }

        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }

        public org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter getDefaultInstanceForType() {
          return org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter.getDefaultInstance();
        }

        public org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter build() {
          org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter buildPartial() {
          org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter result = new org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.flags_ = flags_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.name_ = name_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.type_ = type_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.varargElementType_ = varargElementType_;
          result.bitField0_ = to_bitField0_;
          return result;
        }

        public Builder mergeFrom(org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter other) {
          if (other == org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter.getDefaultInstance()) return this;
          if (other.hasFlags()) {
            setFlags(other.getFlags());
          }
          if (other.hasName()) {
            setName(other.getName());
          }
          if (other.hasType()) {
            mergeType(other.getType());
          }
          if (other.hasVarargElementType()) {
            mergeVarargElementType(other.getVarargElementType());
          }
          this.mergeExtensionFields(other);
          return this;
        }

        public final boolean isInitialized() {
          if (!hasName()) {
            
            return false;
          }
          if (!hasType()) {
            
            return false;
          }
          if (!getType().isInitialized()) {
            
            return false;
          }
          if (hasVarargElementType()) {
            if (!getVarargElementType().isInitialized()) {
              
              return false;
            }
          }
          if (!extensionsAreInitialized()) {
            
            return false;
          }
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        // optional int32 flags = 1;
        private int flags_ ;
        /**
         * <code>optional int32 flags = 1;</code>
         *
         * <pre>
         *
         *declaresDefault
         *has_annotations
         * </pre>
         */
        public boolean hasFlags() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional int32 flags = 1;</code>
         *
         * <pre>
         *
         *declaresDefault
         *has_annotations
         * </pre>
         */
        public int getFlags() {
          return flags_;
        }
        /**
         * <code>optional int32 flags = 1;</code>
         *
         * <pre>
         *
         *declaresDefault
         *has_annotations
         * </pre>
         */
        public Builder setFlags(int value) {
          bitField0_ |= 0x00000001;
          flags_ = value;
          
          return this;
        }
        /**
         * <code>optional int32 flags = 1;</code>
         *
         * <pre>
         *
         *declaresDefault
         *has_annotations
         * </pre>
         */
        public Builder clearFlags() {
          bitField0_ = (bitField0_ & ~0x00000001);
          flags_ = 0;
          
          return this;
        }

        // required int32 name = 2;
        private int name_ ;
        /**
         * <code>required int32 name = 2;</code>
         *
         * <pre>
         * Id in the StringTable
         * </pre>
         */
        public boolean hasName() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required int32 name = 2;</code>
         *
         * <pre>
         * Id in the StringTable
         * </pre>
         */
        public int getName() {
          return name_;
        }
        /**
         * <code>required int32 name = 2;</code>
         *
         * <pre>
         * Id in the StringTable
         * </pre>
         */
        public Builder setName(int value) {
          bitField0_ |= 0x00000002;
          name_ = value;
          
          return this;
        }
        /**
         * <code>required int32 name = 2;</code>
         *
         * <pre>
         * Id in the StringTable
         * </pre>
         */
        public Builder clearName() {
          bitField0_ = (bitField0_ & ~0x00000002);
          name_ = 0;
          
          return this;
        }

        // required .org.jetbrains.kotlin.serialization.Type type = 3;
        private org.jetbrains.kotlin.serialization.ProtoBuf.Type type_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();
        /**
         * <code>required .org.jetbrains.kotlin.serialization.Type type = 3;</code>
         */
        public boolean hasType() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>required .org.jetbrains.kotlin.serialization.Type type = 3;</code>
         */
        public org.jetbrains.kotlin.serialization.ProtoBuf.Type getType() {
          return type_;
        }
        /**
         * <code>required .org.jetbrains.kotlin.serialization.Type type = 3;</code>
         */
        public Builder setType(org.jetbrains.kotlin.serialization.ProtoBuf.Type value) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;

          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <code>required .org.jetbrains.kotlin.serialization.Type type = 3;</code>
         */
        public Builder setType(
            org.jetbrains.kotlin.serialization.ProtoBuf.Type.Builder builderForValue) {
          type_ = builderForValue.build();

          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <code>required .org.jetbrains.kotlin.serialization.Type type = 3;</code>
         */
        public Builder mergeType(org.jetbrains.kotlin.serialization.ProtoBuf.Type value) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              type_ != org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance()) {
            type_ =
              org.jetbrains.kotlin.serialization.ProtoBuf.Type.newBuilder(type_).mergeFrom(value).buildPartial();
          } else {
            type_ = value;
          }

          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <code>required .org.jetbrains.kotlin.serialization.Type type = 3;</code>
         */
        public Builder clearType() {
          type_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();

          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }

        // optional .org.jetbrains.kotlin.serialization.Type vararg_element_type = 4;
        private org.jetbrains.kotlin.serialization.ProtoBuf.Type varargElementType_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Type vararg_element_type = 4;</code>
         */
        public boolean hasVarargElementType() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Type vararg_element_type = 4;</code>
         */
        public org.jetbrains.kotlin.serialization.ProtoBuf.Type getVarargElementType() {
          return varargElementType_;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Type vararg_element_type = 4;</code>
         */
        public Builder setVarargElementType(org.jetbrains.kotlin.serialization.ProtoBuf.Type value) {
          if (value == null) {
            throw new NullPointerException();
          }
          varargElementType_ = value;

          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Type vararg_element_type = 4;</code>
         */
        public Builder setVarargElementType(
            org.jetbrains.kotlin.serialization.ProtoBuf.Type.Builder builderForValue) {
          varargElementType_ = builderForValue.build();

          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Type vararg_element_type = 4;</code>
         */
        public Builder mergeVarargElementType(org.jetbrains.kotlin.serialization.ProtoBuf.Type value) {
          if (((bitField0_ & 0x00000008) == 0x00000008) &&
              varargElementType_ != org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance()) {
            varargElementType_ =
              org.jetbrains.kotlin.serialization.ProtoBuf.Type.newBuilder(varargElementType_).mergeFrom(value).buildPartial();
          } else {
            varargElementType_ = value;
          }

          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.serialization.Type vararg_element_type = 4;</code>
         */
        public Builder clearVarargElementType() {
          varargElementType_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();

          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }

        // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.Callable.ValueParameter)
      }

      static {
        defaultInstance = new ValueParameter(true);
        defaultInstance.initFields();
      }

      // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.Callable.ValueParameter)
    }

    private int bitField0_;
    // optional int32 flags = 1;
    public static final int FLAGS_FIELD_NUMBER = 1;
    private int flags_;
    /**
     * <code>optional int32 flags = 1;</code>
     *
     * <pre>
     *
     *Visibility
     *Modality
     *has_annotations
     *CallableKind
     *MemberKind
     *hasGetter
     *hasSetter
     *hasConstant
     * </pre>
     */
    public boolean hasFlags() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int32 flags = 1;</code>
     *
     * <pre>
     *
     *Visibility
     *Modality
     *has_annotations
     *CallableKind
     *MemberKind
     *hasGetter
     *hasSetter
     *hasConstant
     * </pre>
     */
    public int getFlags() {
      return flags_;
    }

    // optional int32 getter_flags = 9;
    public static final int GETTER_FLAGS_FIELD_NUMBER = 9;
    private int getterFlags_;
    /**
     * <code>optional int32 getter_flags = 9;</code>
     *
     * <pre>
     *
     *isNotDefault
     *Visibility
     *Modality
     *has_annotations
     * </pre>
     */
    public boolean hasGetterFlags() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int32 getter_flags = 9;</code>
     *
     * <pre>
     *
     *isNotDefault
     *Visibility
     *Modality
     *has_annotations
     * </pre>
     */
    public int getGetterFlags() {
      return getterFlags_;
    }

    // optional int32 setter_flags = 10;
    public static final int SETTER_FLAGS_FIELD_NUMBER = 10;
    private int setterFlags_;
    /**
     * <code>optional int32 setter_flags = 10;</code>
     */
    public boolean hasSetterFlags() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional int32 setter_flags = 10;</code>
     */
    public int getSetterFlags() {
      return setterFlags_;
    }

    // repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;
    public static final int TYPE_PARAMETER_FIELD_NUMBER = 4;
    private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter> typeParameter_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter> getTypeParameterList() {
      return typeParameter_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameterOrBuilder> 
        getTypeParameterOrBuilderList() {
      return typeParameter_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;</code>
     */
    public int getTypeParameterCount() {
      return typeParameter_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter getTypeParameter(int index) {
      return typeParameter_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameterOrBuilder getTypeParameterOrBuilder(
        int index) {
      return typeParameter_.get(index);
    }

    // optional .org.jetbrains.kotlin.serialization.Type receiver_type = 5;
    public static final int RECEIVER_TYPE_FIELD_NUMBER = 5;
    private org.jetbrains.kotlin.serialization.ProtoBuf.Type receiverType_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.Type receiver_type = 5;</code>
     */
    public boolean hasReceiverType() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.Type receiver_type = 5;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.Type getReceiverType() {
      return receiverType_;
    }

    // required int32 name = 6;
    public static final int NAME_FIELD_NUMBER = 6;
    private int name_;
    /**
     * <code>required int32 name = 6;</code>
     *
     * <pre>
     * Id in the StringTable
     * </pre>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>required int32 name = 6;</code>
     *
     * <pre>
     * Id in the StringTable
     * </pre>
     */
    public int getName() {
      return name_;
    }

    // repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;
    public static final int VALUE_PARAMETER_FIELD_NUMBER = 7;
    private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter> valueParameter_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;</code>
     *
     * <pre>
     * Value parameters for functions and constructors, or setter value parameter for properties
     * </pre>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter> getValueParameterList() {
      return valueParameter_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;</code>
     *
     * <pre>
     * Value parameters for functions and constructors, or setter value parameter for properties
     * </pre>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameterOrBuilder> 
        getValueParameterOrBuilderList() {
      return valueParameter_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;</code>
     *
     * <pre>
     * Value parameters for functions and constructors, or setter value parameter for properties
     * </pre>
     */
    public int getValueParameterCount() {
      return valueParameter_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;</code>
     *
     * <pre>
     * Value parameters for functions and constructors, or setter value parameter for properties
     * </pre>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter getValueParameter(int index) {
      return valueParameter_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;</code>
     *
     * <pre>
     * Value parameters for functions and constructors, or setter value parameter for properties
     * </pre>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameterOrBuilder getValueParameterOrBuilder(
        int index) {
      return valueParameter_.get(index);
    }

    // required .org.jetbrains.kotlin.serialization.Type return_type = 8;
    public static final int RETURN_TYPE_FIELD_NUMBER = 8;
    private org.jetbrains.kotlin.serialization.ProtoBuf.Type returnType_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.Type return_type = 8;</code>
     */
    public boolean hasReturnType() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.Type return_type = 8;</code>
     */
    public org.jetbrains.kotlin.serialization.ProtoBuf.Type getReturnType() {
      return returnType_;
    }

    private void initFields() {
      flags_ = 0;
      getterFlags_ = 0;
      setterFlags_ = 0;
      typeParameter_ = java.util.Collections.emptyList();
      receiverType_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();
      name_ = 0;
      valueParameter_ = java.util.Collections.emptyList();
      returnType_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasReturnType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getTypeParameterCount(); i++) {
        if (!getTypeParameter(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasReceiverType()) {
        if (!getReceiverType().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getValueParameterCount(); i++) {
        if (!getValueParameter(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!getReturnType().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!extensionsAreInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      com.google.protobuf.GeneratedMessageLite
        .ExtendableMessage<org.jetbrains.kotlin.serialization.ProtoBuf.Callable>.ExtensionWriter extensionWriter =
          newExtensionWriter();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, flags_);
      }
      for (int i = 0; i < typeParameter_.size(); i++) {
        output.writeMessage(4, typeParameter_.get(i));
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(5, receiverType_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt32(6, name_);
      }
      for (int i = 0; i < valueParameter_.size(); i++) {
        output.writeMessage(7, valueParameter_.get(i));
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeMessage(8, returnType_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(9, getterFlags_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(10, setterFlags_);
      }
      extensionWriter.writeUntil(200, output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, flags_);
      }
      for (int i = 0; i < typeParameter_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, typeParameter_.get(i));
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, receiverType_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, name_);
      }
      for (int i = 0; i < valueParameter_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, valueParameter_.get(i));
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, returnType_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(9, getterFlags_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(10, setterFlags_);
      }
      size += extensionsSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.jetbrains.kotlin.serialization.ProtoBuf.Callable parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Callable parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Callable parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Callable parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Callable parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Callable parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Callable parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Callable parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Callable parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.ProtoBuf.Callable parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.jetbrains.kotlin.serialization.ProtoBuf.Callable prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.Callable}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.ExtendableBuilder<
          org.jetbrains.kotlin.serialization.ProtoBuf.Callable, Builder> implements org.jetbrains.kotlin.serialization.ProtoBuf.CallableOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.ProtoBuf.Callable.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        flags_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        getterFlags_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        setterFlags_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        typeParameter_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        receiverType_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000010);
        name_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        valueParameter_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        returnType_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.Callable getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.ProtoBuf.Callable.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.Callable build() {
        org.jetbrains.kotlin.serialization.ProtoBuf.Callable result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.ProtoBuf.Callable buildPartial() {
        org.jetbrains.kotlin.serialization.ProtoBuf.Callable result = new org.jetbrains.kotlin.serialization.ProtoBuf.Callable(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.flags_ = flags_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.getterFlags_ = getterFlags_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.setterFlags_ = setterFlags_;
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          typeParameter_ = java.util.Collections.unmodifiableList(typeParameter_);
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.typeParameter_ = typeParameter_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000008;
        }
        result.receiverType_ = receiverType_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000010;
        }
        result.name_ = name_;
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          valueParameter_ = java.util.Collections.unmodifiableList(valueParameter_);
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.valueParameter_ = valueParameter_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000020;
        }
        result.returnType_ = returnType_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.ProtoBuf.Callable other) {
        if (other == org.jetbrains.kotlin.serialization.ProtoBuf.Callable.getDefaultInstance()) return this;
        if (other.hasFlags()) {
          setFlags(other.getFlags());
        }
        if (other.hasGetterFlags()) {
          setGetterFlags(other.getGetterFlags());
        }
        if (other.hasSetterFlags()) {
          setSetterFlags(other.getSetterFlags());
        }
        if (!other.typeParameter_.isEmpty()) {
          if (typeParameter_.isEmpty()) {
            typeParameter_ = other.typeParameter_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureTypeParameterIsMutable();
            typeParameter_.addAll(other.typeParameter_);
          }
          
        }
        if (other.hasReceiverType()) {
          mergeReceiverType(other.getReceiverType());
        }
        if (other.hasName()) {
          setName(other.getName());
        }
        if (!other.valueParameter_.isEmpty()) {
          if (valueParameter_.isEmpty()) {
            valueParameter_ = other.valueParameter_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureValueParameterIsMutable();
            valueParameter_.addAll(other.valueParameter_);
          }
          
        }
        if (other.hasReturnType()) {
          mergeReturnType(other.getReturnType());
        }
        this.mergeExtensionFields(other);
        return this;
      }

      public final boolean isInitialized() {
        if (!hasName()) {
          
          return false;
        }
        if (!hasReturnType()) {
          
          return false;
        }
        for (int i = 0; i < getTypeParameterCount(); i++) {
          if (!getTypeParameter(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasReceiverType()) {
          if (!getReceiverType().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getValueParameterCount(); i++) {
          if (!getValueParameter(i).isInitialized()) {
            
            return false;
          }
        }
        if (!getReturnType().isInitialized()) {
          
          return false;
        }
        if (!extensionsAreInitialized()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.jetbrains.kotlin.serialization.ProtoBuf.Callable parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.ProtoBuf.Callable) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional int32 flags = 1;
      private int flags_ ;
      /**
       * <code>optional int32 flags = 1;</code>
       *
       * <pre>
       *
       *Visibility
       *Modality
       *has_annotations
       *CallableKind
       *MemberKind
       *hasGetter
       *hasSetter
       *hasConstant
       * </pre>
       */
      public boolean hasFlags() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int32 flags = 1;</code>
       *
       * <pre>
       *
       *Visibility
       *Modality
       *has_annotations
       *CallableKind
       *MemberKind
       *hasGetter
       *hasSetter
       *hasConstant
       * </pre>
       */
      public int getFlags() {
        return flags_;
      }
      /**
       * <code>optional int32 flags = 1;</code>
       *
       * <pre>
       *
       *Visibility
       *Modality
       *has_annotations
       *CallableKind
       *MemberKind
       *hasGetter
       *hasSetter
       *hasConstant
       * </pre>
       */
      public Builder setFlags(int value) {
        bitField0_ |= 0x00000001;
        flags_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 flags = 1;</code>
       *
       * <pre>
       *
       *Visibility
       *Modality
       *has_annotations
       *CallableKind
       *MemberKind
       *hasGetter
       *hasSetter
       *hasConstant
       * </pre>
       */
      public Builder clearFlags() {
        bitField0_ = (bitField0_ & ~0x00000001);
        flags_ = 0;
        
        return this;
      }

      // optional int32 getter_flags = 9;
      private int getterFlags_ ;
      /**
       * <code>optional int32 getter_flags = 9;</code>
       *
       * <pre>
       *
       *isNotDefault
       *Visibility
       *Modality
       *has_annotations
       * </pre>
       */
      public boolean hasGetterFlags() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int32 getter_flags = 9;</code>
       *
       * <pre>
       *
       *isNotDefault
       *Visibility
       *Modality
       *has_annotations
       * </pre>
       */
      public int getGetterFlags() {
        return getterFlags_;
      }
      /**
       * <code>optional int32 getter_flags = 9;</code>
       *
       * <pre>
       *
       *isNotDefault
       *Visibility
       *Modality
       *has_annotations
       * </pre>
       */
      public Builder setGetterFlags(int value) {
        bitField0_ |= 0x00000002;
        getterFlags_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 getter_flags = 9;</code>
       *
       * <pre>
       *
       *isNotDefault
       *Visibility
       *Modality
       *has_annotations
       * </pre>
       */
      public Builder clearGetterFlags() {
        bitField0_ = (bitField0_ & ~0x00000002);
        getterFlags_ = 0;
        
        return this;
      }

      // optional int32 setter_flags = 10;
      private int setterFlags_ ;
      /**
       * <code>optional int32 setter_flags = 10;</code>
       */
      public boolean hasSetterFlags() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional int32 setter_flags = 10;</code>
       */
      public int getSetterFlags() {
        return setterFlags_;
      }
      /**
       * <code>optional int32 setter_flags = 10;</code>
       */
      public Builder setSetterFlags(int value) {
        bitField0_ |= 0x00000004;
        setterFlags_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 setter_flags = 10;</code>
       */
      public Builder clearSetterFlags() {
        bitField0_ = (bitField0_ & ~0x00000004);
        setterFlags_ = 0;
        
        return this;
      }

      // repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;
      private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter> typeParameter_ =
        java.util.Collections.emptyList();
      private void ensureTypeParameterIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          typeParameter_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter>(typeParameter_);
          bitField0_ |= 0x00000008;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter> getTypeParameterList() {
        return java.util.Collections.unmodifiableList(typeParameter_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;</code>
       */
      public int getTypeParameterCount() {
        return typeParameter_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;</code>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter getTypeParameter(int index) {
        return typeParameter_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;</code>
       */
      public Builder setTypeParameter(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeParameterIsMutable();
        typeParameter_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;</code>
       */
      public Builder setTypeParameter(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.Builder builderForValue) {
        ensureTypeParameterIsMutable();
        typeParameter_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;</code>
       */
      public Builder addTypeParameter(org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeParameterIsMutable();
        typeParameter_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;</code>
       */
      public Builder addTypeParameter(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeParameterIsMutable();
        typeParameter_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;</code>
       */
      public Builder addTypeParameter(
          org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.Builder builderForValue) {
        ensureTypeParameterIsMutable();
        typeParameter_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;</code>
       */
      public Builder addTypeParameter(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.Builder builderForValue) {
        ensureTypeParameterIsMutable();
        typeParameter_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;</code>
       */
      public Builder addAllTypeParameter(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter> values) {
        ensureTypeParameterIsMutable();
        super.addAll(values, typeParameter_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;</code>
       */
      public Builder clearTypeParameter() {
        typeParameter_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.TypeParameter type_parameter = 4;</code>
       */
      public Builder removeTypeParameter(int index) {
        ensureTypeParameterIsMutable();
        typeParameter_.remove(index);

        return this;
      }

      // optional .org.jetbrains.kotlin.serialization.Type receiver_type = 5;
      private org.jetbrains.kotlin.serialization.ProtoBuf.Type receiverType_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type receiver_type = 5;</code>
       */
      public boolean hasReceiverType() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type receiver_type = 5;</code>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.Type getReceiverType() {
        return receiverType_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type receiver_type = 5;</code>
       */
      public Builder setReceiverType(org.jetbrains.kotlin.serialization.ProtoBuf.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        receiverType_ = value;

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type receiver_type = 5;</code>
       */
      public Builder setReceiverType(
          org.jetbrains.kotlin.serialization.ProtoBuf.Type.Builder builderForValue) {
        receiverType_ = builderForValue.build();

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type receiver_type = 5;</code>
       */
      public Builder mergeReceiverType(org.jetbrains.kotlin.serialization.ProtoBuf.Type value) {
        if (((bitField0_ & 0x00000010) == 0x00000010) &&
            receiverType_ != org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance()) {
          receiverType_ =
            org.jetbrains.kotlin.serialization.ProtoBuf.Type.newBuilder(receiverType_).mergeFrom(value).buildPartial();
        } else {
          receiverType_ = value;
        }

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.Type receiver_type = 5;</code>
       */
      public Builder clearReceiverType() {
        receiverType_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      // required int32 name = 6;
      private int name_ ;
      /**
       * <code>required int32 name = 6;</code>
       *
       * <pre>
       * Id in the StringTable
       * </pre>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>required int32 name = 6;</code>
       *
       * <pre>
       * Id in the StringTable
       * </pre>
       */
      public int getName() {
        return name_;
      }
      /**
       * <code>required int32 name = 6;</code>
       *
       * <pre>
       * Id in the StringTable
       * </pre>
       */
      public Builder setName(int value) {
        bitField0_ |= 0x00000020;
        name_ = value;
        
        return this;
      }
      /**
       * <code>required int32 name = 6;</code>
       *
       * <pre>
       * Id in the StringTable
       * </pre>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000020);
        name_ = 0;
        
        return this;
      }

      // repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;
      private java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter> valueParameter_ =
        java.util.Collections.emptyList();
      private void ensureValueParameterIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          valueParameter_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter>(valueParameter_);
          bitField0_ |= 0x00000040;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;</code>
       *
       * <pre>
       * Value parameters for functions and constructors, or setter value parameter for properties
       * </pre>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter> getValueParameterList() {
        return java.util.Collections.unmodifiableList(valueParameter_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;</code>
       *
       * <pre>
       * Value parameters for functions and constructors, or setter value parameter for properties
       * </pre>
       */
      public int getValueParameterCount() {
        return valueParameter_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;</code>
       *
       * <pre>
       * Value parameters for functions and constructors, or setter value parameter for properties
       * </pre>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter getValueParameter(int index) {
        return valueParameter_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;</code>
       *
       * <pre>
       * Value parameters for functions and constructors, or setter value parameter for properties
       * </pre>
       */
      public Builder setValueParameter(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureValueParameterIsMutable();
        valueParameter_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;</code>
       *
       * <pre>
       * Value parameters for functions and constructors, or setter value parameter for properties
       * </pre>
       */
      public Builder setValueParameter(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter.Builder builderForValue) {
        ensureValueParameterIsMutable();
        valueParameter_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;</code>
       *
       * <pre>
       * Value parameters for functions and constructors, or setter value parameter for properties
       * </pre>
       */
      public Builder addValueParameter(org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureValueParameterIsMutable();
        valueParameter_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;</code>
       *
       * <pre>
       * Value parameters for functions and constructors, or setter value parameter for properties
       * </pre>
       */
      public Builder addValueParameter(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureValueParameterIsMutable();
        valueParameter_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;</code>
       *
       * <pre>
       * Value parameters for functions and constructors, or setter value parameter for properties
       * </pre>
       */
      public Builder addValueParameter(
          org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter.Builder builderForValue) {
        ensureValueParameterIsMutable();
        valueParameter_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;</code>
       *
       * <pre>
       * Value parameters for functions and constructors, or setter value parameter for properties
       * </pre>
       */
      public Builder addValueParameter(
          int index, org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter.Builder builderForValue) {
        ensureValueParameterIsMutable();
        valueParameter_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;</code>
       *
       * <pre>
       * Value parameters for functions and constructors, or setter value parameter for properties
       * </pre>
       */
      public Builder addAllValueParameter(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.ProtoBuf.Callable.ValueParameter> values) {
        ensureValueParameterIsMutable();
        super.addAll(values, valueParameter_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;</code>
       *
       * <pre>
       * Value parameters for functions and constructors, or setter value parameter for properties
       * </pre>
       */
      public Builder clearValueParameter() {
        valueParameter_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.Callable.ValueParameter value_parameter = 7;</code>
       *
       * <pre>
       * Value parameters for functions and constructors, or setter value parameter for properties
       * </pre>
       */
      public Builder removeValueParameter(int index) {
        ensureValueParameterIsMutable();
        valueParameter_.remove(index);

        return this;
      }

      // required .org.jetbrains.kotlin.serialization.Type return_type = 8;
      private org.jetbrains.kotlin.serialization.ProtoBuf.Type returnType_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.Type return_type = 8;</code>
       */
      public boolean hasReturnType() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.Type return_type = 8;</code>
       */
      public org.jetbrains.kotlin.serialization.ProtoBuf.Type getReturnType() {
        return returnType_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.Type return_type = 8;</code>
       */
      public Builder setReturnType(org.jetbrains.kotlin.serialization.ProtoBuf.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        returnType_ = value;

        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.Type return_type = 8;</code>
       */
      public Builder setReturnType(
          org.jetbrains.kotlin.serialization.ProtoBuf.Type.Builder builderForValue) {
        returnType_ = builderForValue.build();

        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.Type return_type = 8;</code>
       */
      public Builder mergeReturnType(org.jetbrains.kotlin.serialization.ProtoBuf.Type value) {
        if (((bitField0_ & 0x00000080) == 0x00000080) &&
            returnType_ != org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance()) {
          returnType_ =
            org.jetbrains.kotlin.serialization.ProtoBuf.Type.newBuilder(returnType_).mergeFrom(value).buildPartial();
        } else {
          returnType_ = value;
        }

        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.Type return_type = 8;</code>
       */
      public Builder clearReturnType() {
        returnType_ = org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.Callable)
    }

    static {
      defaultInstance = new Callable(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.Callable)
  }


  static {
  }

  // @@protoc_insertion_point(outer_class_scope)
}
