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

package org.jetbrains.kotlin.metadata;

public final class ProtoBuf {
  private ProtoBuf() {}
  public static void registerAllExtensions(
      org.jetbrains.kotlin.protobuf.ExtensionRegistryLite registry) {
  }
  /**
   * Protobuf enum {@code org.jetbrains.kotlin.metadata.Modality}
   */
  public enum Modality
      implements org.jetbrains.kotlin.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 org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<Modality>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<Modality>
        internalValueMap =
          new org.jetbrains.kotlin.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.metadata.Modality)
  }

  /**
   * Protobuf enum {@code org.jetbrains.kotlin.metadata.Visibility}
   */
  public enum Visibility
      implements org.jetbrains.kotlin.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 org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<Visibility>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<Visibility>
        internalValueMap =
          new org.jetbrains.kotlin.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.metadata.Visibility)
  }

  /**
   * Protobuf enum {@code org.jetbrains.kotlin.metadata.MemberKind}
   */
  public enum MemberKind
      implements org.jetbrains.kotlin.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 org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<MemberKind>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<MemberKind>
        internalValueMap =
          new org.jetbrains.kotlin.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.metadata.MemberKind)
  }

  public interface StringTableOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.StringTable)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated string string = 1;</code>
     */
    org.jetbrains.kotlin.protobuf.ProtocolStringList
        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>
     */
    org.jetbrains.kotlin.protobuf.ByteString
        getStringBytes(int index);
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.StringTable}
   */
  public static final class StringTable extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.StringTable)
      StringTableOrBuilder {
    // Use StringTable.newBuilder() to construct.
    private StringTable(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private StringTable(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public StringTable getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private StringTable(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                string_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              string_.add(bs);
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          string_ = string_.getUnmodifiableView();
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<StringTable> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<StringTable>() {
      public StringTable parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new StringTable(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<StringTable> getParserForType() {
      return PARSER;
    }

    public static final int STRING_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.protobuf.LazyStringList string_;
    /**
     * <code>repeated string string = 1;</code>
     */
    public org.jetbrains.kotlin.protobuf.ProtocolStringList
        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 org.jetbrains.kotlin.protobuf.ByteString
        getStringBytes(int index) {
      return string_.getByteString(index);
    }

    private void initFields() {
      string_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

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

    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 += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(string_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getStringList().size();
      }
      size += unknownFields.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.metadata.ProtoBuf.StringTable parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.StringTable parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.StringTable parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.StringTable parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.StringTable parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.StringTable parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.StringTable parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.StringTable parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.StringTable parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.StringTable parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.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.metadata.ProtoBuf.StringTable prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

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

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

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

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.StringTable buildPartial() {
        org.jetbrains.kotlin.metadata.ProtoBuf.StringTable result = new org.jetbrains.kotlin.metadata.ProtoBuf.StringTable(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          string_ = string_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.string_ = string_;
        return result;
      }

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

      public final boolean isInitialized() {
        return true;
      }

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

      private org.jetbrains.kotlin.protobuf.LazyStringList string_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
      private void ensureStringIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          string_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(string_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string string = 1;</code>
       */
      public org.jetbrains.kotlin.protobuf.ProtocolStringList
          getStringList() {
        return string_.getUnmodifiableView();
      }
      /**
       * <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 org.jetbrains.kotlin.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();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, string_);
        
        return this;
      }
      /**
       * <code>repeated string string = 1;</code>
       */
      public Builder clearString() {
        string_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        
        return this;
      }
      /**
       * <code>repeated string string = 1;</code>
       */
      public Builder addStringBytes(
          org.jetbrains.kotlin.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStringIsMutable();
        string_.add(value);
        
        return this;
      }

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

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

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

  public interface QualifiedNameTableOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.QualifiedNameTable)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName> 
        getQualifiedNameList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName getQualifiedName(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
     */
    int getQualifiedNameCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.QualifiedNameTable}
   */
  public static final class QualifiedNameTable extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.QualifiedNameTable)
      QualifiedNameTableOrBuilder {
    // Use QualifiedNameTable.newBuilder() to construct.
    private QualifiedNameTable(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private QualifiedNameTable(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public QualifiedNameTable getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private QualifiedNameTable(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                qualifiedName_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName>();
                mutable_bitField0_ |= 0x00000001;
              }
              qualifiedName_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          qualifiedName_ = java.util.Collections.unmodifiableList(qualifiedName_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<QualifiedNameTable> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<QualifiedNameTable>() {
      public QualifiedNameTable parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new QualifiedNameTable(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<QualifiedNameTable> getParserForType() {
      return PARSER;
    }

    public interface QualifiedNameOrBuilder extends
        // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.QualifiedNameTable.QualifiedName)
        org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

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

      /**
       * <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();

      /**
       * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable.QualifiedName.Kind kind = 3 [default = PACKAGE];</code>
       */
      boolean hasKind();
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable.QualifiedName.Kind kind = 3 [default = PACKAGE];</code>
       */
      org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName.Kind getKind();
    }
    /**
     * Protobuf type {@code org.jetbrains.kotlin.metadata.QualifiedNameTable.QualifiedName}
     */
    public static final class QualifiedName extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
        // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.QualifiedNameTable.QualifiedName)
        QualifiedNameOrBuilder {
      // Use QualifiedName.newBuilder() to construct.
      private QualifiedName(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private QualifiedName(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

      public QualifiedName getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
      private QualifiedName(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
            org.jetbrains.kotlin.protobuf.ByteString.newOutput();
        org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
            org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
                unknownFieldsOutput, 1);
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                       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.metadata.ProtoBuf.QualifiedNameTable.QualifiedName.Kind value = org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName.Kind.valueOf(rawValue);
                if (value == null) {
                  unknownFieldsCodedOutput.writeRawVarint32(tag);
                  unknownFieldsCodedOutput.writeRawVarint32(rawValue);
                } else {
                  bitField0_ |= 0x00000004;
                  kind_ = value;
                }
                break;
              }
            }
          }
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          try {
            unknownFieldsCodedOutput.flush();
          } catch (java.io.IOException e) {
          // Should not happen
          } finally {
            unknownFields = unknownFieldsOutput.toByteString();
          }
          makeExtensionsImmutable();
        }
      }
      public static org.jetbrains.kotlin.protobuf.Parser<QualifiedName> PARSER =
          new org.jetbrains.kotlin.protobuf.AbstractParser<QualifiedName>() {
        public QualifiedName parsePartialFrom(
            org.jetbrains.kotlin.protobuf.CodedInputStream input,
            org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
            throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
          return new QualifiedName(input, extensionRegistry);
        }
      };

      @java.lang.Override
      public org.jetbrains.kotlin.protobuf.Parser<QualifiedName> getParserForType() {
        return PARSER;
      }

      /**
       * Protobuf enum {@code org.jetbrains.kotlin.metadata.QualifiedNameTable.QualifiedName.Kind}
       */
      public enum Kind
          implements org.jetbrains.kotlin.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 org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<Kind>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<Kind>
            internalValueMap =
              new org.jetbrains.kotlin.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.metadata.QualifiedNameTable.QualifiedName.Kind)
      }

      private int bitField0_;
      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_;
      }

      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_;
      }

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

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

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

      public void writeTo(org.jetbrains.kotlin.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());
        }
        output.writeRawBytes(unknownFields);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32Size(1, parentQualifiedName_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32Size(2, shortName_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeEnumSize(3, kind_.getNumber());
        }
        size += unknownFields.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.metadata.ProtoBuf.QualifiedNameTable.QualifiedName parseFrom(
          org.jetbrains.kotlin.protobuf.ByteString data)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName parseFrom(
          org.jetbrains.kotlin.protobuf.ByteString data,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName parseFrom(byte[] data)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName parseFrom(
          byte[] data,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName parseFrom(
          java.io.InputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName parseDelimitedFrom(
          java.io.InputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName parseFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName parseFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.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.metadata.ProtoBuf.QualifiedNameTable.QualifiedName prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      /**
       * Protobuf type {@code org.jetbrains.kotlin.metadata.QualifiedNameTable.QualifiedName}
       */
      public static final class Builder extends
          org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
            org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName, Builder>
          implements
          // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.QualifiedNameTable.QualifiedName)
          org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedNameOrBuilder {
        // Construct using org.jetbrains.kotlin.metadata.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.metadata.ProtoBuf.QualifiedNameTable.QualifiedName.Kind.PACKAGE;
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }

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

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

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

        public org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName buildPartial() {
          org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName result = new org.jetbrains.kotlin.metadata.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.metadata.ProtoBuf.QualifiedNameTable.QualifiedName other) {
          if (other == org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName.getDefaultInstance()) return this;
          if (other.hasParentQualifiedName()) {
            setParentQualifiedName(other.getParentQualifiedName());
          }
          if (other.hasShortName()) {
            setShortName(other.getShortName());
          }
          if (other.hasKind()) {
            setKind(other.getKind());
          }
          setUnknownFields(
              getUnknownFields().concat(other.unknownFields));
          return this;
        }

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

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

        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;
        }

        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;
        }

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

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

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

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

    public static final int QUALIFIED_NAME_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName> qualifiedName_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName> getQualifiedNameList() {
      return qualifiedName_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedNameOrBuilder> 
        getQualifiedNameOrBuilderList() {
      return qualifiedName_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
     */
    public int getQualifiedNameCount() {
      return qualifiedName_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName getQualifiedName(int index) {
      return qualifiedName_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.QualifiedNameTable.QualifiedName qualified_name = 1;</code>
     */
    public org.jetbrains.kotlin.metadata.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 true;
      if (isInitialized == 0) return false;

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

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

    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 += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, qualifiedName_.get(i));
      }
      size += unknownFields.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.metadata.ProtoBuf.QualifiedNameTable parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.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.metadata.ProtoBuf.QualifiedNameTable prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.metadata.QualifiedNameTable}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.QualifiedNameTable)
        org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTableOrBuilder {
      // Construct using org.jetbrains.kotlin.metadata.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.metadata.ProtoBuf.QualifiedNameTable getDefaultInstanceForType() {
        return org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance();
      }

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable buildPartial() {
        org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable result = new org.jetbrains.kotlin.metadata.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.metadata.ProtoBuf.QualifiedNameTable other) {
        if (other == org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance()) return this;
        if (!other.qualifiedName_.isEmpty()) {
          if (qualifiedName_.isEmpty()) {
            qualifiedName_ = other.qualifiedName_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureQualifiedNameIsMutable();
            qualifiedName_.addAll(other.qualifiedName_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

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

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

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

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

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

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

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

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

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

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

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.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.metadata.QualifiedNameTable)
    }

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

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

  public interface AnnotationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.Annotation)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

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

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation.Argument argument = 2;</code>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument> 
        getArgumentList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation.Argument argument = 2;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument getArgument(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation.Argument argument = 2;</code>
     */
    int getArgumentCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.Annotation}
   */
  public static final class Annotation extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.Annotation)
      AnnotationOrBuilder {
    // Use Annotation.newBuilder() to construct.
    private Annotation(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Annotation(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Annotation getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Annotation(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     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.metadata.ProtoBuf.Annotation.Argument>();
                mutable_bitField0_ |= 0x00000002;
              }
              argument_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          argument_ = java.util.Collections.unmodifiableList(argument_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Annotation> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Annotation>() {
      public Annotation parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Annotation(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<Annotation> getParserForType() {
      return PARSER;
    }

    public interface ArgumentOrBuilder extends
        // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.Annotation.Argument)
        org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

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

      /**
       * <code>required .org.jetbrains.kotlin.metadata.Annotation.Argument.Value value = 2;</code>
       */
      boolean hasValue();
      /**
       * <code>required .org.jetbrains.kotlin.metadata.Annotation.Argument.Value value = 2;</code>
       */
      org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value getValue();
    }
    /**
     * Protobuf type {@code org.jetbrains.kotlin.metadata.Annotation.Argument}
     */
    public static final class Argument extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
        // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.Annotation.Argument)
        ArgumentOrBuilder {
      // Use Argument.newBuilder() to construct.
      private Argument(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private Argument(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

      public Argument getDefaultInstanceForType() {
        return defaultInstance;
      }

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

      @java.lang.Override
      public org.jetbrains.kotlin.protobuf.Parser<Argument> getParserForType() {
        return PARSER;
      }

      public interface ValueOrBuilder extends
          // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.Annotation.Argument.Value)
          org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

        /**
         * <code>optional .org.jetbrains.kotlin.metadata.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.metadata.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.metadata.ProtoBuf.Annotation.Argument.Value.Type getType();

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

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

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

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

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

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

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

        /**
         * <code>repeated .org.jetbrains.kotlin.metadata.Annotation.Argument.Value array_element = 9;</code>
         */
        java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value> 
            getArrayElementList();
        /**
         * <code>repeated .org.jetbrains.kotlin.metadata.Annotation.Argument.Value array_element = 9;</code>
         */
        org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value getArrayElement(int index);
        /**
         * <code>repeated .org.jetbrains.kotlin.metadata.Annotation.Argument.Value array_element = 9;</code>
         */
        int getArrayElementCount();

        /**
         * <code>optional int32 array_dimension_count = 11 [default = 0];</code>
         *
         * <pre>
         * If type = CLASS, the number of dimensions of the array of the class specified in class_id.
         * E.g. if class_id = kotlin/String, this annotation argument value denotes:
         * - String::class, if array_dimension_count = 0
         * - Array&lt;String&gt;::class, if array_dimension_count = 1
         * - Array&lt;Array&lt;String&gt;&gt;::class, if array_dimension_count = 2
         * - etc.
         * Other forms of array class literals are not supported by this format, see KT-26568
         * </pre>
         */
        boolean hasArrayDimensionCount();
        /**
         * <code>optional int32 array_dimension_count = 11 [default = 0];</code>
         *
         * <pre>
         * If type = CLASS, the number of dimensions of the array of the class specified in class_id.
         * E.g. if class_id = kotlin/String, this annotation argument value denotes:
         * - String::class, if array_dimension_count = 0
         * - Array&lt;String&gt;::class, if array_dimension_count = 1
         * - Array&lt;Array&lt;String&gt;&gt;::class, if array_dimension_count = 2
         * - etc.
         * Other forms of array class literals are not supported by this format, see KT-26568
         * </pre>
         */
        int getArrayDimensionCount();

        /**
         * <code>optional int32 flags = 10 [default = 0];</code>
         *
         * <pre>
         *isUnsigned
         * </pre>
         */
        boolean hasFlags();
        /**
         * <code>optional int32 flags = 10 [default = 0];</code>
         *
         * <pre>
         *isUnsigned
         * </pre>
         */
        int getFlags();
      }
      /**
       * Protobuf type {@code org.jetbrains.kotlin.metadata.Annotation.Argument.Value}
       */
      public static final class Value extends
          org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
          // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.Annotation.Argument.Value)
          ValueOrBuilder {
        // Use Value.newBuilder() to construct.
        private Value(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private Value(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

        public Value getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
        private Value(
            org.jetbrains.kotlin.protobuf.CodedInputStream input,
            org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
            throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
              org.jetbrains.kotlin.protobuf.ByteString.newOutput();
          org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
              org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
                  unknownFieldsOutput, 1);
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  int rawValue = input.readEnum();
                  org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value.Type value = org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value.Type.valueOf(rawValue);
                  if (value == null) {
                    unknownFieldsCodedOutput.writeRawVarint32(tag);
                    unknownFieldsCodedOutput.writeRawVarint32(rawValue);
                  } else {
                    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.metadata.ProtoBuf.Annotation.Builder subBuilder = null;
                  if (((bitField0_ & 0x00000080) == 0x00000080)) {
                    subBuilder = annotation_.toBuilder();
                  }
                  annotation_ = input.readMessage(org.jetbrains.kotlin.metadata.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.metadata.ProtoBuf.Annotation.Argument.Value>();
                    mutable_bitField0_ |= 0x00000100;
                  }
                  arrayElement_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value.PARSER, extensionRegistry));
                  break;
                }
                case 80: {
                  bitField0_ |= 0x00000200;
                  flags_ = input.readInt32();
                  break;
                }
                case 88: {
                  bitField0_ |= 0x00000100;
                  arrayDimensionCount_ = input.readInt32();
                  break;
                }
              }
            }
          } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
                e.getMessage()).setUnfinishedMessage(this);
          } finally {
            if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
              arrayElement_ = java.util.Collections.unmodifiableList(arrayElement_);
            }
            try {
              unknownFieldsCodedOutput.flush();
            } catch (java.io.IOException e) {
            // Should not happen
            } finally {
              unknownFields = unknownFieldsOutput.toByteString();
            }
            makeExtensionsImmutable();
          }
        }
        public static org.jetbrains.kotlin.protobuf.Parser<Value> PARSER =
            new org.jetbrains.kotlin.protobuf.AbstractParser<Value>() {
          public Value parsePartialFrom(
              org.jetbrains.kotlin.protobuf.CodedInputStream input,
              org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
              throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
            return new Value(input, extensionRegistry);
          }
        };

        @java.lang.Override
        public org.jetbrains.kotlin.protobuf.Parser<Value> getParserForType() {
          return PARSER;
        }

        /**
         * Protobuf enum {@code org.jetbrains.kotlin.metadata.Annotation.Argument.Value.Type}
         */
        public enum Type
            implements org.jetbrains.kotlin.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 org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<Type>
              internalGetValueMap() {
            return internalValueMap;
          }
          private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<Type>
              internalValueMap =
                new org.jetbrains.kotlin.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.metadata.Annotation.Argument.Value.Type)
        }

        private int bitField0_;
        public static final int TYPE_FIELD_NUMBER = 1;
        private org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value.Type type_;
        /**
         * <code>optional .org.jetbrains.kotlin.metadata.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.metadata.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.metadata.ProtoBuf.Annotation.Argument.Value.Type getType() {
          return type_;
        }

        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_;
        }

        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_;
        }

        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_;
        }

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

        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 of the referenced class; if type = ENUM, FQ name 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 of the referenced class; if type = ENUM, FQ name of the enum class
         * </pre>
         */
        public int getClassId() {
          return classId_;
        }

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

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

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

        public static final int ARRAY_DIMENSION_COUNT_FIELD_NUMBER = 11;
        private int arrayDimensionCount_;
        /**
         * <code>optional int32 array_dimension_count = 11 [default = 0];</code>
         *
         * <pre>
         * If type = CLASS, the number of dimensions of the array of the class specified in class_id.
         * E.g. if class_id = kotlin/String, this annotation argument value denotes:
         * - String::class, if array_dimension_count = 0
         * - Array&lt;String&gt;::class, if array_dimension_count = 1
         * - Array&lt;Array&lt;String&gt;&gt;::class, if array_dimension_count = 2
         * - etc.
         * Other forms of array class literals are not supported by this format, see KT-26568
         * </pre>
         */
        public boolean hasArrayDimensionCount() {
          return ((bitField0_ & 0x00000100) == 0x00000100);
        }
        /**
         * <code>optional int32 array_dimension_count = 11 [default = 0];</code>
         *
         * <pre>
         * If type = CLASS, the number of dimensions of the array of the class specified in class_id.
         * E.g. if class_id = kotlin/String, this annotation argument value denotes:
         * - String::class, if array_dimension_count = 0
         * - Array&lt;String&gt;::class, if array_dimension_count = 1
         * - Array&lt;Array&lt;String&gt;&gt;::class, if array_dimension_count = 2
         * - etc.
         * Other forms of array class literals are not supported by this format, see KT-26568
         * </pre>
         */
        public int getArrayDimensionCount() {
          return arrayDimensionCount_;
        }

        public static final int FLAGS_FIELD_NUMBER = 10;
        private int flags_;
        /**
         * <code>optional int32 flags = 10 [default = 0];</code>
         *
         * <pre>
         *isUnsigned
         * </pre>
         */
        public boolean hasFlags() {
          return ((bitField0_ & 0x00000200) == 0x00000200);
        }
        /**
         * <code>optional int32 flags = 10 [default = 0];</code>
         *
         * <pre>
         *isUnsigned
         * </pre>
         */
        public int getFlags() {
          return flags_;
        }

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

          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(org.jetbrains.kotlin.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));
          }
          if (((bitField0_ & 0x00000200) == 0x00000200)) {
            output.writeInt32(10, flags_);
          }
          if (((bitField0_ & 0x00000100) == 0x00000100)) {
            output.writeInt32(11, arrayDimensionCount_);
          }
          output.writeRawBytes(unknownFields);
        }

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

          size = 0;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += org.jetbrains.kotlin.protobuf.CodedOutputStream
              .computeEnumSize(1, type_.getNumber());
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += org.jetbrains.kotlin.protobuf.CodedOutputStream
              .computeSInt64Size(2, intValue_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += org.jetbrains.kotlin.protobuf.CodedOutputStream
              .computeFloatSize(3, floatValue_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += org.jetbrains.kotlin.protobuf.CodedOutputStream
              .computeDoubleSize(4, doubleValue_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            size += org.jetbrains.kotlin.protobuf.CodedOutputStream
              .computeInt32Size(5, stringValue_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            size += org.jetbrains.kotlin.protobuf.CodedOutputStream
              .computeInt32Size(6, classId_);
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            size += org.jetbrains.kotlin.protobuf.CodedOutputStream
              .computeInt32Size(7, enumValueId_);
          }
          if (((bitField0_ & 0x00000080) == 0x00000080)) {
            size += org.jetbrains.kotlin.protobuf.CodedOutputStream
              .computeMessageSize(8, annotation_);
          }
          for (int i = 0; i < arrayElement_.size(); i++) {
            size += org.jetbrains.kotlin.protobuf.CodedOutputStream
              .computeMessageSize(9, arrayElement_.get(i));
          }
          if (((bitField0_ & 0x00000200) == 0x00000200)) {
            size += org.jetbrains.kotlin.protobuf.CodedOutputStream
              .computeInt32Size(10, flags_);
          }
          if (((bitField0_ & 0x00000100) == 0x00000100)) {
            size += org.jetbrains.kotlin.protobuf.CodedOutputStream
              .computeInt32Size(11, arrayDimensionCount_);
          }
          size += unknownFields.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.metadata.ProtoBuf.Annotation.Argument.Value parseFrom(
            org.jetbrains.kotlin.protobuf.ByteString data)
            throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value parseFrom(
            org.jetbrains.kotlin.protobuf.ByteString data,
            org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
            throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value parseFrom(byte[] data)
            throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value parseFrom(
            byte[] data,
            org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
            throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value parseFrom(
            java.io.InputStream input,
            org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value parseDelimitedFrom(
            java.io.InputStream input,
            org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value parseFrom(
            org.jetbrains.kotlin.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value parseFrom(
            org.jetbrains.kotlin.protobuf.CodedInputStream input,
            org.jetbrains.kotlin.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.metadata.ProtoBuf.Annotation.Argument.Value prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        /**
         * Protobuf type {@code org.jetbrains.kotlin.metadata.Annotation.Argument.Value}
         */
        public static final class Builder extends
            org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
              org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value, Builder>
            implements
            // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.Annotation.Argument.Value)
            org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.ValueOrBuilder {
          // Construct using org.jetbrains.kotlin.metadata.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.metadata.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.metadata.ProtoBuf.Annotation.getDefaultInstance();
            bitField0_ = (bitField0_ & ~0x00000080);
            arrayElement_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000100);
            arrayDimensionCount_ = 0;
            bitField0_ = (bitField0_ & ~0x00000200);
            flags_ = 0;
            bitField0_ = (bitField0_ & ~0x00000400);
            return this;
          }

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

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

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

          public org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value buildPartial() {
            org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value result = new org.jetbrains.kotlin.metadata.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_;
            if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
              to_bitField0_ |= 0x00000100;
            }
            result.arrayDimensionCount_ = arrayDimensionCount_;
            if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
              to_bitField0_ |= 0x00000200;
            }
            result.flags_ = flags_;
            result.bitField0_ = to_bitField0_;
            return result;
          }

          public Builder mergeFrom(org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value other) {
            if (other == org.jetbrains.kotlin.metadata.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_);
              }
              
            }
            if (other.hasArrayDimensionCount()) {
              setArrayDimensionCount(other.getArrayDimensionCount());
            }
            if (other.hasFlags()) {
              setFlags(other.getFlags());
            }
            setUnknownFields(
                getUnknownFields().concat(other.unknownFields));
            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(
              org.jetbrains.kotlin.protobuf.CodedInputStream input,
              org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value.Type type_ = org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value.Type.BYTE;
          /**
           * <code>optional .org.jetbrains.kotlin.metadata.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.metadata.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.metadata.ProtoBuf.Annotation.Argument.Value.Type getType() {
            return type_;
          }
          /**
           * <code>optional .org.jetbrains.kotlin.metadata.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.metadata.ProtoBuf.Annotation.Argument.Value.Type value) {
            if (value == null) {
              throw new NullPointerException();
            }
            bitField0_ |= 0x00000001;
            type_ = value;
            
            return this;
          }
          /**
           * <code>optional .org.jetbrains.kotlin.metadata.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.metadata.ProtoBuf.Annotation.Argument.Value.Type.BYTE;
            
            return this;
          }

          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;
          }

          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;
          }

          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;
          }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            return this;
          }
          /**
           * <code>repeated .org.jetbrains.kotlin.metadata.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.metadata.Annotation.Argument.Value array_element = 9;</code>
           */
          public Builder removeArrayElement(int index) {
            ensureArrayElementIsMutable();
            arrayElement_.remove(index);

            return this;
          }

          private int arrayDimensionCount_ ;
          /**
           * <code>optional int32 array_dimension_count = 11 [default = 0];</code>
           *
           * <pre>
           * If type = CLASS, the number of dimensions of the array of the class specified in class_id.
           * E.g. if class_id = kotlin/String, this annotation argument value denotes:
           * - String::class, if array_dimension_count = 0
           * - Array&lt;String&gt;::class, if array_dimension_count = 1
           * - Array&lt;Array&lt;String&gt;&gt;::class, if array_dimension_count = 2
           * - etc.
           * Other forms of array class literals are not supported by this format, see KT-26568
           * </pre>
           */
          public boolean hasArrayDimensionCount() {
            return ((bitField0_ & 0x00000200) == 0x00000200);
          }
          /**
           * <code>optional int32 array_dimension_count = 11 [default = 0];</code>
           *
           * <pre>
           * If type = CLASS, the number of dimensions of the array of the class specified in class_id.
           * E.g. if class_id = kotlin/String, this annotation argument value denotes:
           * - String::class, if array_dimension_count = 0
           * - Array&lt;String&gt;::class, if array_dimension_count = 1
           * - Array&lt;Array&lt;String&gt;&gt;::class, if array_dimension_count = 2
           * - etc.
           * Other forms of array class literals are not supported by this format, see KT-26568
           * </pre>
           */
          public int getArrayDimensionCount() {
            return arrayDimensionCount_;
          }
          /**
           * <code>optional int32 array_dimension_count = 11 [default = 0];</code>
           *
           * <pre>
           * If type = CLASS, the number of dimensions of the array of the class specified in class_id.
           * E.g. if class_id = kotlin/String, this annotation argument value denotes:
           * - String::class, if array_dimension_count = 0
           * - Array&lt;String&gt;::class, if array_dimension_count = 1
           * - Array&lt;Array&lt;String&gt;&gt;::class, if array_dimension_count = 2
           * - etc.
           * Other forms of array class literals are not supported by this format, see KT-26568
           * </pre>
           */
          public Builder setArrayDimensionCount(int value) {
            bitField0_ |= 0x00000200;
            arrayDimensionCount_ = value;
            
            return this;
          }
          /**
           * <code>optional int32 array_dimension_count = 11 [default = 0];</code>
           *
           * <pre>
           * If type = CLASS, the number of dimensions of the array of the class specified in class_id.
           * E.g. if class_id = kotlin/String, this annotation argument value denotes:
           * - String::class, if array_dimension_count = 0
           * - Array&lt;String&gt;::class, if array_dimension_count = 1
           * - Array&lt;Array&lt;String&gt;&gt;::class, if array_dimension_count = 2
           * - etc.
           * Other forms of array class literals are not supported by this format, see KT-26568
           * </pre>
           */
          public Builder clearArrayDimensionCount() {
            bitField0_ = (bitField0_ & ~0x00000200);
            arrayDimensionCount_ = 0;
            
            return this;
          }

          private int flags_ ;
          /**
           * <code>optional int32 flags = 10 [default = 0];</code>
           *
           * <pre>
           *isUnsigned
           * </pre>
           */
          public boolean hasFlags() {
            return ((bitField0_ & 0x00000400) == 0x00000400);
          }
          /**
           * <code>optional int32 flags = 10 [default = 0];</code>
           *
           * <pre>
           *isUnsigned
           * </pre>
           */
          public int getFlags() {
            return flags_;
          }
          /**
           * <code>optional int32 flags = 10 [default = 0];</code>
           *
           * <pre>
           *isUnsigned
           * </pre>
           */
          public Builder setFlags(int value) {
            bitField0_ |= 0x00000400;
            flags_ = value;
            
            return this;
          }
          /**
           * <code>optional int32 flags = 10 [default = 0];</code>
           *
           * <pre>
           *isUnsigned
           * </pre>
           */
          public Builder clearFlags() {
            bitField0_ = (bitField0_ & ~0x00000400);
            flags_ = 0;
            
            return this;
          }

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

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

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

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

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

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

        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(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeInt32(1, nameId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(2, value_);
        }
        output.writeRawBytes(unknownFields);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32Size(1, nameId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeMessageSize(2, value_);
        }
        size += unknownFields.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.metadata.ProtoBuf.Annotation.Argument parseFrom(
          org.jetbrains.kotlin.protobuf.ByteString data)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument parseFrom(
          org.jetbrains.kotlin.protobuf.ByteString data,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument parseFrom(byte[] data)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument parseFrom(
          byte[] data,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument parseFrom(
          java.io.InputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument parseDelimitedFrom(
          java.io.InputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument parseFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument parseFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.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.metadata.ProtoBuf.Annotation.Argument prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      /**
       * Protobuf type {@code org.jetbrains.kotlin.metadata.Annotation.Argument}
       */
      public static final class Builder extends
          org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
            org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument, Builder>
          implements
          // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.Annotation.Argument)
          org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.ArgumentOrBuilder {
        // Construct using org.jetbrains.kotlin.metadata.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.metadata.ProtoBuf.Annotation.Argument.Value.getDefaultInstance();
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

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

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

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

        public org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument buildPartial() {
          org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument result = new org.jetbrains.kotlin.metadata.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.metadata.ProtoBuf.Annotation.Argument other) {
          if (other == org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.getDefaultInstance()) return this;
          if (other.hasNameId()) {
            setNameId(other.getNameId());
          }
          if (other.hasValue()) {
            mergeValue(other.getValue());
          }
          setUnknownFields(
              getUnknownFields().concat(other.unknownFields));
          return this;
        }

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

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

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

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

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

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

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

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

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

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

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

    private int bitField0_;
    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_;
    }

    public static final int ARGUMENT_FIELD_NUMBER = 2;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument> argument_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation.Argument argument = 2;</code>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument> getArgumentList() {
      return argument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation.Argument argument = 2;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.ArgumentOrBuilder> 
        getArgumentOrBuilderList() {
      return argument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation.Argument argument = 2;</code>
     */
    public int getArgumentCount() {
      return argument_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation.Argument argument = 2;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument getArgument(int index) {
      return argument_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation.Argument argument = 2;</code>
     */
    public org.jetbrains.kotlin.metadata.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 true;
      if (isInitialized == 0) return false;

      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(org.jetbrains.kotlin.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));
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, id_);
      }
      for (int i = 0; i < argument_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, argument_.get(i));
      }
      size += unknownFields.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.metadata.ProtoBuf.Annotation parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Annotation parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.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.metadata.ProtoBuf.Annotation prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.metadata.Annotation}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.metadata.ProtoBuf.Annotation, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.Annotation)
        org.jetbrains.kotlin.metadata.ProtoBuf.AnnotationOrBuilder {
      // Construct using org.jetbrains.kotlin.metadata.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.metadata.ProtoBuf.Annotation getDefaultInstanceForType() {
        return org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance();
      }

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.Annotation buildPartial() {
        org.jetbrains.kotlin.metadata.ProtoBuf.Annotation result = new org.jetbrains.kotlin.metadata.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.metadata.ProtoBuf.Annotation other) {
        if (other == org.jetbrains.kotlin.metadata.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_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        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(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.jetbrains.kotlin.metadata.ProtoBuf.Annotation parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.metadata.ProtoBuf.Annotation) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      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;
      }

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

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

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

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

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

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

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

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

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

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

        return this;
      }

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

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

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

  public interface TypeOrBuilder extends 
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.Type)
       org.jetbrains.kotlin.protobuf.GeneratedMessageLite.
            ExtendableMessageOrBuilder<Type> {

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

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

    /**
     * <code>optional int32 flexible_type_capabilities_id = 4;</code>
     *
     * <pre>
     * 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>
     * 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();

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type flexible_upper_bound = 5;</code>
     */
    boolean hasFlexibleUpperBound();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type flexible_upper_bound = 5;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Type getFlexibleUpperBound();

    /**
     * <code>optional int32 flexible_upper_bound_id = 8;</code>
     */
    boolean hasFlexibleUpperBoundId();
    /**
     * <code>optional int32 flexible_upper_bound_id = 8;</code>
     */
    int getFlexibleUpperBoundId();

    /**
     * <code>optional int32 class_name = 6;</code>
     */
    boolean hasClassName();
    /**
     * <code>optional int32 class_name = 6;</code>
     */
    int getClassName();

    /**
     * <code>optional int32 type_parameter = 7;</code>
     *
     * <pre>
     * id of the type parameter
     * </pre>
     */
    boolean hasTypeParameter();
    /**
     * <code>optional int32 type_parameter = 7;</code>
     *
     * <pre>
     * id of the type parameter
     * </pre>
     */
    int getTypeParameter();

    /**
     * <code>optional int32 type_parameter_name = 9;</code>
     *
     * <pre>
     * Name of the type parameter in the immediate owner
     * </pre>
     */
    boolean hasTypeParameterName();
    /**
     * <code>optional int32 type_parameter_name = 9;</code>
     *
     * <pre>
     * Name of the type parameter in the immediate owner
     * </pre>
     */
    int getTypeParameterName();

    /**
     * <code>optional int32 type_alias_name = 12;</code>
     *
     * <pre>
     * Note that this may be present only for abbreviated_type
     * Top level types are always fully expanded
     * </pre>
     */
    boolean hasTypeAliasName();
    /**
     * <code>optional int32 type_alias_name = 12;</code>
     *
     * <pre>
     * Note that this may be present only for abbreviated_type
     * Top level types are always fully expanded
     * </pre>
     */
    int getTypeAliasName();

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type outer_type = 10;</code>
     *
     * <pre>
     * Outer type may be present only if class_name or type_alias_name is present
     * </pre>
     */
    boolean hasOuterType();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type outer_type = 10;</code>
     *
     * <pre>
     * Outer type may be present only if class_name or type_alias_name is present
     * </pre>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Type getOuterType();

    /**
     * <code>optional int32 outer_type_id = 11;</code>
     */
    boolean hasOuterTypeId();
    /**
     * <code>optional int32 outer_type_id = 11;</code>
     */
    int getOuterTypeId();

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type abbreviated_type = 13;</code>
     */
    boolean hasAbbreviatedType();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type abbreviated_type = 13;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Type getAbbreviatedType();

    /**
     * <code>optional int32 abbreviated_type_id = 14;</code>
     */
    boolean hasAbbreviatedTypeId();
    /**
     * <code>optional int32 abbreviated_type_id = 14;</code>
     */
    int getAbbreviatedTypeId();

    /**
     * <code>optional int32 flags = 1;</code>
     *
     * <pre>
     *suspend
     * </pre>
     */
    boolean hasFlags();
    /**
     * <code>optional int32 flags = 1;</code>
     *
     * <pre>
     *suspend
     * </pre>
     */
    int getFlags();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.Type}
   */
  public static final class Type extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableMessage<
        Type> implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.Type)
      TypeOrBuilder {
    // Use Type.newBuilder() to construct.
    private Type(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableBuilder<org.jetbrains.kotlin.metadata.ProtoBuf.Type, ?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Type(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Type getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Type(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00001000;
              flags_ = input.readInt32();
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                argument_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Type.Argument>();
                mutable_bitField0_ |= 0x00000001;
              }
              argument_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Type.Argument.PARSER, extensionRegistry));
              break;
            }
            case 24: {
              bitField0_ |= 0x00000001;
              nullable_ = input.readBool();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000002;
              flexibleTypeCapabilitiesId_ = input.readInt32();
              break;
            }
            case 42: {
              org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = flexibleUpperBound_.toBuilder();
              }
              flexibleUpperBound_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Type.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(flexibleUpperBound_);
                flexibleUpperBound_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 48: {
              bitField0_ |= 0x00000010;
              className_ = input.readInt32();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000020;
              typeParameter_ = input.readInt32();
              break;
            }
            case 64: {
              bitField0_ |= 0x00000008;
              flexibleUpperBoundId_ = input.readInt32();
              break;
            }
            case 72: {
              bitField0_ |= 0x00000040;
              typeParameterName_ = input.readInt32();
              break;
            }
            case 82: {
              org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder subBuilder = null;
              if (((bitField0_ & 0x00000100) == 0x00000100)) {
                subBuilder = outerType_.toBuilder();
              }
              outerType_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Type.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(outerType_);
                outerType_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000100;
              break;
            }
            case 88: {
              bitField0_ |= 0x00000200;
              outerTypeId_ = input.readInt32();
              break;
            }
            case 96: {
              bitField0_ |= 0x00000080;
              typeAliasName_ = input.readInt32();
              break;
            }
            case 106: {
              org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder subBuilder = null;
              if (((bitField0_ & 0x00000400) == 0x00000400)) {
                subBuilder = abbreviatedType_.toBuilder();
              }
              abbreviatedType_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Type.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(abbreviatedType_);
                abbreviatedType_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000400;
              break;
            }
            case 112: {
              bitField0_ |= 0x00000800;
              abbreviatedTypeId_ = input.readInt32();
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          argument_ = java.util.Collections.unmodifiableList(argument_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Type> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Type>() {
      public Type parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Type(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<Type> getParserForType() {
      return PARSER;
    }

    public interface ArgumentOrBuilder extends
        // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.Type.Argument)
        org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

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

      /**
       * <code>optional .org.jetbrains.kotlin.metadata.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.metadata.Type type = 2;</code>
       *
       * <pre>
       * When projection is STAR, no type is written, otherwise type must be specified
       * </pre>
       */
      org.jetbrains.kotlin.metadata.ProtoBuf.Type getType();

      /**
       * <code>optional int32 type_id = 3;</code>
       */
      boolean hasTypeId();
      /**
       * <code>optional int32 type_id = 3;</code>
       */
      int getTypeId();
    }
    /**
     * Protobuf type {@code org.jetbrains.kotlin.metadata.Type.Argument}
     */
    public static final class Argument extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
        // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.Type.Argument)
        ArgumentOrBuilder {
      // Use Argument.newBuilder() to construct.
      private Argument(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private Argument(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

      public Argument getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
      private Argument(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
            org.jetbrains.kotlin.protobuf.ByteString.newOutput();
        org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
            org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
                unknownFieldsOutput, 1);
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                org.jetbrains.kotlin.metadata.ProtoBuf.Type.Argument.Projection value = org.jetbrains.kotlin.metadata.ProtoBuf.Type.Argument.Projection.valueOf(rawValue);
                if (value == null) {
                  unknownFieldsCodedOutput.writeRawVarint32(tag);
                  unknownFieldsCodedOutput.writeRawVarint32(rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  projection_ = value;
                }
                break;
              }
              case 18: {
                org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder subBuilder = null;
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  subBuilder = type_.toBuilder();
                }
                type_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Type.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(type_);
                  type_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000002;
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                typeId_ = input.readInt32();
                break;
              }
            }
          }
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          try {
            unknownFieldsCodedOutput.flush();
          } catch (java.io.IOException e) {
          // Should not happen
          } finally {
            unknownFields = unknownFieldsOutput.toByteString();
          }
          makeExtensionsImmutable();
        }
      }
      public static org.jetbrains.kotlin.protobuf.Parser<Argument> PARSER =
          new org.jetbrains.kotlin.protobuf.AbstractParser<Argument>() {
        public Argument parsePartialFrom(
            org.jetbrains.kotlin.protobuf.CodedInputStream input,
            org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
            throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
          return new Argument(input, extensionRegistry);
        }
      };

      @java.lang.Override
      public org.jetbrains.kotlin.protobuf.Parser<Argument> getParserForType() {
        return PARSER;
      }

      /**
       * Protobuf enum {@code org.jetbrains.kotlin.metadata.Type.Argument.Projection}
       */
      public enum Projection
          implements org.jetbrains.kotlin.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 org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<Projection>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<Projection>
            internalValueMap =
              new org.jetbrains.kotlin.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.metadata.Type.Argument.Projection)
      }

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

      public static final int TYPE_FIELD_NUMBER = 2;
      private org.jetbrains.kotlin.metadata.ProtoBuf.Type type_;
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.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.metadata.Type type = 2;</code>
       *
       * <pre>
       * When projection is STAR, no type is written, otherwise type must be specified
       * </pre>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Type getType() {
        return type_;
      }

      public static final int TYPE_ID_FIELD_NUMBER = 3;
      private int typeId_;
      /**
       * <code>optional int32 type_id = 3;</code>
       */
      public boolean hasTypeId() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional int32 type_id = 3;</code>
       */
      public int getTypeId() {
        return typeId_;
      }

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

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

      public void writeTo(org.jetbrains.kotlin.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_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeInt32(3, typeId_);
        }
        output.writeRawBytes(unknownFields);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeEnumSize(1, projection_.getNumber());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeMessageSize(2, type_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32Size(3, typeId_);
        }
        size += unknownFields.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.metadata.ProtoBuf.Type.Argument parseFrom(
          org.jetbrains.kotlin.protobuf.ByteString data)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.Type.Argument parseFrom(
          org.jetbrains.kotlin.protobuf.ByteString data,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.Type.Argument parseFrom(byte[] data)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.Type.Argument parseFrom(
          byte[] data,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.Type.Argument parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.Type.Argument parseFrom(
          java.io.InputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.Type.Argument parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.Type.Argument parseDelimitedFrom(
          java.io.InputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.Type.Argument parseFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static org.jetbrains.kotlin.metadata.ProtoBuf.Type.Argument parseFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.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.metadata.ProtoBuf.Type.Argument prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      /**
       * Protobuf type {@code org.jetbrains.kotlin.metadata.Type.Argument}
       */
      public static final class Builder extends
          org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
            org.jetbrains.kotlin.metadata.ProtoBuf.Type.Argument, Builder>
          implements
          // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.Type.Argument)
          org.jetbrains.kotlin.metadata.ProtoBuf.Type.ArgumentOrBuilder {
        // Construct using org.jetbrains.kotlin.metadata.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.metadata.ProtoBuf.Type.Argument.Projection.INV;
          bitField0_ = (bitField0_ & ~0x00000001);
          type_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
          bitField0_ = (bitField0_ & ~0x00000002);
          typeId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }

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

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

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

        public org.jetbrains.kotlin.metadata.ProtoBuf.Type.Argument buildPartial() {
          org.jetbrains.kotlin.metadata.ProtoBuf.Type.Argument result = new org.jetbrains.kotlin.metadata.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_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.typeId_ = typeId_;
          result.bitField0_ = to_bitField0_;
          return result;
        }

        public Builder mergeFrom(org.jetbrains.kotlin.metadata.ProtoBuf.Type.Argument other) {
          if (other == org.jetbrains.kotlin.metadata.ProtoBuf.Type.Argument.getDefaultInstance()) return this;
          if (other.hasProjection()) {
            setProjection(other.getProjection());
          }
          if (other.hasType()) {
            mergeType(other.getType());
          }
          if (other.hasTypeId()) {
            setTypeId(other.getTypeId());
          }
          setUnknownFields(
              getUnknownFields().concat(other.unknownFields));
          return this;
        }

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

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

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

        private org.jetbrains.kotlin.metadata.ProtoBuf.Type type_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
        /**
         * <code>optional .org.jetbrains.kotlin.metadata.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.metadata.Type type = 2;</code>
         *
         * <pre>
         * When projection is STAR, no type is written, otherwise type must be specified
         * </pre>
         */
        public org.jetbrains.kotlin.metadata.ProtoBuf.Type getType() {
          return type_;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.metadata.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.metadata.ProtoBuf.Type value) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;

          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.metadata.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.metadata.ProtoBuf.Type.Builder builderForValue) {
          type_ = builderForValue.build();

          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.metadata.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.metadata.ProtoBuf.Type value) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              type_ != org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance()) {
            type_ =
              org.jetbrains.kotlin.metadata.ProtoBuf.Type.newBuilder(type_).mergeFrom(value).buildPartial();
          } else {
            type_ = value;
          }

          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>optional .org.jetbrains.kotlin.metadata.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.metadata.ProtoBuf.Type.getDefaultInstance();

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

        private int typeId_ ;
        /**
         * <code>optional int32 type_id = 3;</code>
         */
        public boolean hasTypeId() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional int32 type_id = 3;</code>
         */
        public int getTypeId() {
          return typeId_;
        }
        /**
         * <code>optional int32 type_id = 3;</code>
         */
        public Builder setTypeId(int value) {
          bitField0_ |= 0x00000004;
          typeId_ = value;
          
          return this;
        }
        /**
         * <code>optional int32 type_id = 3;</code>
         */
        public Builder clearTypeId() {
          bitField0_ = (bitField0_ & ~0x00000004);
          typeId_ = 0;
          
          return this;
        }

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

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

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

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

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

    public static final int FLEXIBLE_TYPE_CAPABILITIES_ID_FIELD_NUMBER = 4;
    private int flexibleTypeCapabilitiesId_;
    /**
     * <code>optional int32 flexible_type_capabilities_id = 4;</code>
     *
     * <pre>
     * 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_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int32 flexible_type_capabilities_id = 4;</code>
     *
     * <pre>
     * 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_;
    }

    public static final int FLEXIBLE_UPPER_BOUND_FIELD_NUMBER = 5;
    private org.jetbrains.kotlin.metadata.ProtoBuf.Type flexibleUpperBound_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type flexible_upper_bound = 5;</code>
     */
    public boolean hasFlexibleUpperBound() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type flexible_upper_bound = 5;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Type getFlexibleUpperBound() {
      return flexibleUpperBound_;
    }

    public static final int FLEXIBLE_UPPER_BOUND_ID_FIELD_NUMBER = 8;
    private int flexibleUpperBoundId_;
    /**
     * <code>optional int32 flexible_upper_bound_id = 8;</code>
     */
    public boolean hasFlexibleUpperBoundId() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional int32 flexible_upper_bound_id = 8;</code>
     */
    public int getFlexibleUpperBoundId() {
      return flexibleUpperBoundId_;
    }

    public static final int CLASS_NAME_FIELD_NUMBER = 6;
    private int className_;
    /**
     * <code>optional int32 class_name = 6;</code>
     */
    public boolean hasClassName() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional int32 class_name = 6;</code>
     */
    public int getClassName() {
      return className_;
    }

    public static final int TYPE_PARAMETER_FIELD_NUMBER = 7;
    private int typeParameter_;
    /**
     * <code>optional int32 type_parameter = 7;</code>
     *
     * <pre>
     * id of the type parameter
     * </pre>
     */
    public boolean hasTypeParameter() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional int32 type_parameter = 7;</code>
     *
     * <pre>
     * id of the type parameter
     * </pre>
     */
    public int getTypeParameter() {
      return typeParameter_;
    }

    public static final int TYPE_PARAMETER_NAME_FIELD_NUMBER = 9;
    private int typeParameterName_;
    /**
     * <code>optional int32 type_parameter_name = 9;</code>
     *
     * <pre>
     * Name of the type parameter in the immediate owner
     * </pre>
     */
    public boolean hasTypeParameterName() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional int32 type_parameter_name = 9;</code>
     *
     * <pre>
     * Name of the type parameter in the immediate owner
     * </pre>
     */
    public int getTypeParameterName() {
      return typeParameterName_;
    }

    public static final int TYPE_ALIAS_NAME_FIELD_NUMBER = 12;
    private int typeAliasName_;
    /**
     * <code>optional int32 type_alias_name = 12;</code>
     *
     * <pre>
     * Note that this may be present only for abbreviated_type
     * Top level types are always fully expanded
     * </pre>
     */
    public boolean hasTypeAliasName() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>optional int32 type_alias_name = 12;</code>
     *
     * <pre>
     * Note that this may be present only for abbreviated_type
     * Top level types are always fully expanded
     * </pre>
     */
    public int getTypeAliasName() {
      return typeAliasName_;
    }

    public static final int OUTER_TYPE_FIELD_NUMBER = 10;
    private org.jetbrains.kotlin.metadata.ProtoBuf.Type outerType_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type outer_type = 10;</code>
     *
     * <pre>
     * Outer type may be present only if class_name or type_alias_name is present
     * </pre>
     */
    public boolean hasOuterType() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type outer_type = 10;</code>
     *
     * <pre>
     * Outer type may be present only if class_name or type_alias_name is present
     * </pre>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Type getOuterType() {
      return outerType_;
    }

    public static final int OUTER_TYPE_ID_FIELD_NUMBER = 11;
    private int outerTypeId_;
    /**
     * <code>optional int32 outer_type_id = 11;</code>
     */
    public boolean hasOuterTypeId() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    /**
     * <code>optional int32 outer_type_id = 11;</code>
     */
    public int getOuterTypeId() {
      return outerTypeId_;
    }

    public static final int ABBREVIATED_TYPE_FIELD_NUMBER = 13;
    private org.jetbrains.kotlin.metadata.ProtoBuf.Type abbreviatedType_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type abbreviated_type = 13;</code>
     */
    public boolean hasAbbreviatedType() {
      return ((bitField0_ & 0x00000400) == 0x00000400);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type abbreviated_type = 13;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Type getAbbreviatedType() {
      return abbreviatedType_;
    }

    public static final int ABBREVIATED_TYPE_ID_FIELD_NUMBER = 14;
    private int abbreviatedTypeId_;
    /**
     * <code>optional int32 abbreviated_type_id = 14;</code>
     */
    public boolean hasAbbreviatedTypeId() {
      return ((bitField0_ & 0x00000800) == 0x00000800);
    }
    /**
     * <code>optional int32 abbreviated_type_id = 14;</code>
     */
    public int getAbbreviatedTypeId() {
      return abbreviatedTypeId_;
    }

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

    private void initFields() {
      argument_ = java.util.Collections.emptyList();
      nullable_ = false;
      flexibleTypeCapabilitiesId_ = 0;
      flexibleUpperBound_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
      flexibleUpperBoundId_ = 0;
      className_ = 0;
      typeParameter_ = 0;
      typeParameterName_ = 0;
      typeAliasName_ = 0;
      outerType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
      outerTypeId_ = 0;
      abbreviatedType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
      abbreviatedTypeId_ = 0;
      flags_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 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 (hasOuterType()) {
        if (!getOuterType().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasAbbreviatedType()) {
        if (!getAbbreviatedType().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!extensionsAreInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite
        .ExtendableMessage<org.jetbrains.kotlin.metadata.ProtoBuf.Type>.ExtensionWriter extensionWriter =
          newExtensionWriter();
      if (((bitField0_ & 0x00001000) == 0x00001000)) {
        output.writeInt32(1, flags_);
      }
      for (int i = 0; i < argument_.size(); i++) {
        output.writeMessage(2, argument_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBool(3, nullable_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(4, flexibleTypeCapabilitiesId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(5, flexibleUpperBound_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt32(6, className_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeInt32(7, typeParameter_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt32(8, flexibleUpperBoundId_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeInt32(9, typeParameterName_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeMessage(10, outerType_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeInt32(11, outerTypeId_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeInt32(12, typeAliasName_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        output.writeMessage(13, abbreviatedType_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        output.writeInt32(14, abbreviatedTypeId_);
      }
      extensionWriter.writeUntil(200, output);
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00001000) == 0x00001000)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, flags_);
      }
      for (int i = 0; i < argument_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, argument_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(3, nullable_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(4, flexibleTypeCapabilitiesId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, flexibleUpperBound_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(6, className_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(7, typeParameter_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(8, flexibleUpperBoundId_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(9, typeParameterName_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(10, outerType_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(11, outerTypeId_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(12, typeAliasName_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(13, abbreviatedType_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(14, abbreviatedTypeId_);
      }
      size += extensionsSerializedSize();
      size += unknownFields.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.metadata.ProtoBuf.Type parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Type parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Type parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Type parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Type parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Type parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Type parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Type parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Type parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Type parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.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.metadata.ProtoBuf.Type prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        argument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        nullable_ = false;
        bitField0_ = (bitField0_ & ~0x00000002);
        flexibleTypeCapabilitiesId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        flexibleUpperBound_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        flexibleUpperBoundId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        className_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        typeParameter_ = 0;
        bitField0_ = (bitField0_ & ~0x00000040);
        typeParameterName_ = 0;
        bitField0_ = (bitField0_ & ~0x00000080);
        typeAliasName_ = 0;
        bitField0_ = (bitField0_ & ~0x00000100);
        outerType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000200);
        outerTypeId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000400);
        abbreviatedType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000800);
        abbreviatedTypeId_ = 0;
        bitField0_ = (bitField0_ & ~0x00001000);
        flags_ = 0;
        bitField0_ = (bitField0_ & ~0x00002000);
        return this;
      }

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

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

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.Type buildPartial() {
        org.jetbrains.kotlin.metadata.ProtoBuf.Type result = new org.jetbrains.kotlin.metadata.ProtoBuf.Type(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          argument_ = java.util.Collections.unmodifiableList(argument_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.argument_ = argument_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000001;
        }
        result.nullable_ = nullable_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        result.flexibleTypeCapabilitiesId_ = flexibleTypeCapabilitiesId_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        result.flexibleUpperBound_ = flexibleUpperBound_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000008;
        }
        result.flexibleUpperBoundId_ = flexibleUpperBoundId_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000010;
        }
        result.className_ = className_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000020;
        }
        result.typeParameter_ = typeParameter_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000040;
        }
        result.typeParameterName_ = typeParameterName_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000080;
        }
        result.typeAliasName_ = typeAliasName_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000100;
        }
        result.outerType_ = outerType_;
        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
          to_bitField0_ |= 0x00000200;
        }
        result.outerTypeId_ = outerTypeId_;
        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
          to_bitField0_ |= 0x00000400;
        }
        result.abbreviatedType_ = abbreviatedType_;
        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
          to_bitField0_ |= 0x00000800;
        }
        result.abbreviatedTypeId_ = abbreviatedTypeId_;
        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
          to_bitField0_ |= 0x00001000;
        }
        result.flags_ = flags_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.metadata.ProtoBuf.Type other) {
        if (other == org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance()) return this;
        if (!other.argument_.isEmpty()) {
          if (argument_.isEmpty()) {
            argument_ = other.argument_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureArgumentIsMutable();
            argument_.addAll(other.argument_);
          }
          
        }
        if (other.hasNullable()) {
          setNullable(other.getNullable());
        }
        if (other.hasFlexibleTypeCapabilitiesId()) {
          setFlexibleTypeCapabilitiesId(other.getFlexibleTypeCapabilitiesId());
        }
        if (other.hasFlexibleUpperBound()) {
          mergeFlexibleUpperBound(other.getFlexibleUpperBound());
        }
        if (other.hasFlexibleUpperBoundId()) {
          setFlexibleUpperBoundId(other.getFlexibleUpperBoundId());
        }
        if (other.hasClassName()) {
          setClassName(other.getClassName());
        }
        if (other.hasTypeParameter()) {
          setTypeParameter(other.getTypeParameter());
        }
        if (other.hasTypeParameterName()) {
          setTypeParameterName(other.getTypeParameterName());
        }
        if (other.hasTypeAliasName()) {
          setTypeAliasName(other.getTypeAliasName());
        }
        if (other.hasOuterType()) {
          mergeOuterType(other.getOuterType());
        }
        if (other.hasOuterTypeId()) {
          setOuterTypeId(other.getOuterTypeId());
        }
        if (other.hasAbbreviatedType()) {
          mergeAbbreviatedType(other.getAbbreviatedType());
        }
        if (other.hasAbbreviatedTypeId()) {
          setAbbreviatedTypeId(other.getAbbreviatedTypeId());
        }
        if (other.hasFlags()) {
          setFlags(other.getFlags());
        }
        this.mergeExtensionFields(other);
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

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

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

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

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

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

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

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

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

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

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

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

        return this;
      }

      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_;
      }
      /**
       * <code>optional bool nullable = 3 [default = false];</code>
       */
      public Builder setNullable(boolean value) {
        bitField0_ |= 0x00000002;
        nullable_ = value;
        
        return this;
      }
      /**
       * <code>optional bool nullable = 3 [default = false];</code>
       */
      public Builder clearNullable() {
        bitField0_ = (bitField0_ & ~0x00000002);
        nullable_ = false;
        
        return this;
      }

      private int flexibleTypeCapabilitiesId_ ;
      /**
       * <code>optional int32 flexible_type_capabilities_id = 4;</code>
       *
       * <pre>
       * 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>
       * 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>
       * 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_ |= 0x00000004;
        flexibleTypeCapabilitiesId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 flexible_type_capabilities_id = 4;</code>
       *
       * <pre>
       * 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_ & ~0x00000004);
        flexibleTypeCapabilitiesId_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.metadata.ProtoBuf.Type flexibleUpperBound_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type flexible_upper_bound = 5;</code>
       */
      public boolean hasFlexibleUpperBound() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type flexible_upper_bound = 5;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Type getFlexibleUpperBound() {
        return flexibleUpperBound_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type flexible_upper_bound = 5;</code>
       */
      public Builder setFlexibleUpperBound(org.jetbrains.kotlin.metadata.ProtoBuf.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        flexibleUpperBound_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type flexible_upper_bound = 5;</code>
       */
      public Builder setFlexibleUpperBound(
          org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder builderForValue) {
        flexibleUpperBound_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type flexible_upper_bound = 5;</code>
       */
      public Builder mergeFlexibleUpperBound(org.jetbrains.kotlin.metadata.ProtoBuf.Type value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            flexibleUpperBound_ != org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance()) {
          flexibleUpperBound_ =
            org.jetbrains.kotlin.metadata.ProtoBuf.Type.newBuilder(flexibleUpperBound_).mergeFrom(value).buildPartial();
        } else {
          flexibleUpperBound_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type flexible_upper_bound = 5;</code>
       */
      public Builder clearFlexibleUpperBound() {
        flexibleUpperBound_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();

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

      private int flexibleUpperBoundId_ ;
      /**
       * <code>optional int32 flexible_upper_bound_id = 8;</code>
       */
      public boolean hasFlexibleUpperBoundId() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional int32 flexible_upper_bound_id = 8;</code>
       */
      public int getFlexibleUpperBoundId() {
        return flexibleUpperBoundId_;
      }
      /**
       * <code>optional int32 flexible_upper_bound_id = 8;</code>
       */
      public Builder setFlexibleUpperBoundId(int value) {
        bitField0_ |= 0x00000010;
        flexibleUpperBoundId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 flexible_upper_bound_id = 8;</code>
       */
      public Builder clearFlexibleUpperBoundId() {
        bitField0_ = (bitField0_ & ~0x00000010);
        flexibleUpperBoundId_ = 0;
        
        return this;
      }

      private int className_ ;
      /**
       * <code>optional int32 class_name = 6;</code>
       */
      public boolean hasClassName() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional int32 class_name = 6;</code>
       */
      public int getClassName() {
        return className_;
      }
      /**
       * <code>optional int32 class_name = 6;</code>
       */
      public Builder setClassName(int value) {
        bitField0_ |= 0x00000020;
        className_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 class_name = 6;</code>
       */
      public Builder clearClassName() {
        bitField0_ = (bitField0_ & ~0x00000020);
        className_ = 0;
        
        return this;
      }

      private int typeParameter_ ;
      /**
       * <code>optional int32 type_parameter = 7;</code>
       *
       * <pre>
       * id of the type parameter
       * </pre>
       */
      public boolean hasTypeParameter() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional int32 type_parameter = 7;</code>
       *
       * <pre>
       * id of the type parameter
       * </pre>
       */
      public int getTypeParameter() {
        return typeParameter_;
      }
      /**
       * <code>optional int32 type_parameter = 7;</code>
       *
       * <pre>
       * id of the type parameter
       * </pre>
       */
      public Builder setTypeParameter(int value) {
        bitField0_ |= 0x00000040;
        typeParameter_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 type_parameter = 7;</code>
       *
       * <pre>
       * id of the type parameter
       * </pre>
       */
      public Builder clearTypeParameter() {
        bitField0_ = (bitField0_ & ~0x00000040);
        typeParameter_ = 0;
        
        return this;
      }

      private int typeParameterName_ ;
      /**
       * <code>optional int32 type_parameter_name = 9;</code>
       *
       * <pre>
       * Name of the type parameter in the immediate owner
       * </pre>
       */
      public boolean hasTypeParameterName() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional int32 type_parameter_name = 9;</code>
       *
       * <pre>
       * Name of the type parameter in the immediate owner
       * </pre>
       */
      public int getTypeParameterName() {
        return typeParameterName_;
      }
      /**
       * <code>optional int32 type_parameter_name = 9;</code>
       *
       * <pre>
       * Name of the type parameter in the immediate owner
       * </pre>
       */
      public Builder setTypeParameterName(int value) {
        bitField0_ |= 0x00000080;
        typeParameterName_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 type_parameter_name = 9;</code>
       *
       * <pre>
       * Name of the type parameter in the immediate owner
       * </pre>
       */
      public Builder clearTypeParameterName() {
        bitField0_ = (bitField0_ & ~0x00000080);
        typeParameterName_ = 0;
        
        return this;
      }

      private int typeAliasName_ ;
      /**
       * <code>optional int32 type_alias_name = 12;</code>
       *
       * <pre>
       * Note that this may be present only for abbreviated_type
       * Top level types are always fully expanded
       * </pre>
       */
      public boolean hasTypeAliasName() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>optional int32 type_alias_name = 12;</code>
       *
       * <pre>
       * Note that this may be present only for abbreviated_type
       * Top level types are always fully expanded
       * </pre>
       */
      public int getTypeAliasName() {
        return typeAliasName_;
      }
      /**
       * <code>optional int32 type_alias_name = 12;</code>
       *
       * <pre>
       * Note that this may be present only for abbreviated_type
       * Top level types are always fully expanded
       * </pre>
       */
      public Builder setTypeAliasName(int value) {
        bitField0_ |= 0x00000100;
        typeAliasName_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 type_alias_name = 12;</code>
       *
       * <pre>
       * Note that this may be present only for abbreviated_type
       * Top level types are always fully expanded
       * </pre>
       */
      public Builder clearTypeAliasName() {
        bitField0_ = (bitField0_ & ~0x00000100);
        typeAliasName_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.metadata.ProtoBuf.Type outerType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type outer_type = 10;</code>
       *
       * <pre>
       * Outer type may be present only if class_name or type_alias_name is present
       * </pre>
       */
      public boolean hasOuterType() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type outer_type = 10;</code>
       *
       * <pre>
       * Outer type may be present only if class_name or type_alias_name is present
       * </pre>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Type getOuterType() {
        return outerType_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type outer_type = 10;</code>
       *
       * <pre>
       * Outer type may be present only if class_name or type_alias_name is present
       * </pre>
       */
      public Builder setOuterType(org.jetbrains.kotlin.metadata.ProtoBuf.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        outerType_ = value;

        bitField0_ |= 0x00000200;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type outer_type = 10;</code>
       *
       * <pre>
       * Outer type may be present only if class_name or type_alias_name is present
       * </pre>
       */
      public Builder setOuterType(
          org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder builderForValue) {
        outerType_ = builderForValue.build();

        bitField0_ |= 0x00000200;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type outer_type = 10;</code>
       *
       * <pre>
       * Outer type may be present only if class_name or type_alias_name is present
       * </pre>
       */
      public Builder mergeOuterType(org.jetbrains.kotlin.metadata.ProtoBuf.Type value) {
        if (((bitField0_ & 0x00000200) == 0x00000200) &&
            outerType_ != org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance()) {
          outerType_ =
            org.jetbrains.kotlin.metadata.ProtoBuf.Type.newBuilder(outerType_).mergeFrom(value).buildPartial();
        } else {
          outerType_ = value;
        }

        bitField0_ |= 0x00000200;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type outer_type = 10;</code>
       *
       * <pre>
       * Outer type may be present only if class_name or type_alias_name is present
       * </pre>
       */
      public Builder clearOuterType() {
        outerType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();

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

      private int outerTypeId_ ;
      /**
       * <code>optional int32 outer_type_id = 11;</code>
       */
      public boolean hasOuterTypeId() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * <code>optional int32 outer_type_id = 11;</code>
       */
      public int getOuterTypeId() {
        return outerTypeId_;
      }
      /**
       * <code>optional int32 outer_type_id = 11;</code>
       */
      public Builder setOuterTypeId(int value) {
        bitField0_ |= 0x00000400;
        outerTypeId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 outer_type_id = 11;</code>
       */
      public Builder clearOuterTypeId() {
        bitField0_ = (bitField0_ & ~0x00000400);
        outerTypeId_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.metadata.ProtoBuf.Type abbreviatedType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type abbreviated_type = 13;</code>
       */
      public boolean hasAbbreviatedType() {
        return ((bitField0_ & 0x00000800) == 0x00000800);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type abbreviated_type = 13;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Type getAbbreviatedType() {
        return abbreviatedType_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type abbreviated_type = 13;</code>
       */
      public Builder setAbbreviatedType(org.jetbrains.kotlin.metadata.ProtoBuf.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        abbreviatedType_ = value;

        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type abbreviated_type = 13;</code>
       */
      public Builder setAbbreviatedType(
          org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder builderForValue) {
        abbreviatedType_ = builderForValue.build();

        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type abbreviated_type = 13;</code>
       */
      public Builder mergeAbbreviatedType(org.jetbrains.kotlin.metadata.ProtoBuf.Type value) {
        if (((bitField0_ & 0x00000800) == 0x00000800) &&
            abbreviatedType_ != org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance()) {
          abbreviatedType_ =
            org.jetbrains.kotlin.metadata.ProtoBuf.Type.newBuilder(abbreviatedType_).mergeFrom(value).buildPartial();
        } else {
          abbreviatedType_ = value;
        }

        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type abbreviated_type = 13;</code>
       */
      public Builder clearAbbreviatedType() {
        abbreviatedType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();

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

      private int abbreviatedTypeId_ ;
      /**
       * <code>optional int32 abbreviated_type_id = 14;</code>
       */
      public boolean hasAbbreviatedTypeId() {
        return ((bitField0_ & 0x00001000) == 0x00001000);
      }
      /**
       * <code>optional int32 abbreviated_type_id = 14;</code>
       */
      public int getAbbreviatedTypeId() {
        return abbreviatedTypeId_;
      }
      /**
       * <code>optional int32 abbreviated_type_id = 14;</code>
       */
      public Builder setAbbreviatedTypeId(int value) {
        bitField0_ |= 0x00001000;
        abbreviatedTypeId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 abbreviated_type_id = 14;</code>
       */
      public Builder clearAbbreviatedTypeId() {
        bitField0_ = (bitField0_ & ~0x00001000);
        abbreviatedTypeId_ = 0;
        
        return this;
      }

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

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

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

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

  public interface TypeParameterOrBuilder extends 
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.TypeParameter)
       org.jetbrains.kotlin.protobuf.GeneratedMessageLite.
            ExtendableMessageOrBuilder<TypeParameter> {

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

    /**
     * <code>required int32 name = 2;</code>
     */
    boolean hasName();
    /**
     * <code>required int32 name = 2;</code>
     */
    int getName();

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

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

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Type upper_bound = 5;</code>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Type> 
        getUpperBoundList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Type upper_bound = 5;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Type getUpperBound(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Type upper_bound = 5;</code>
     */
    int getUpperBoundCount();

    /**
     * <code>repeated int32 upper_bound_id = 6 [packed = true];</code>
     */
    java.util.List<java.lang.Integer> getUpperBoundIdList();
    /**
     * <code>repeated int32 upper_bound_id = 6 [packed = true];</code>
     */
    int getUpperBoundIdCount();
    /**
     * <code>repeated int32 upper_bound_id = 6 [packed = true];</code>
     */
    int getUpperBoundId(int index);
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.TypeParameter}
   */
  public static final class TypeParameter extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableMessage<
        TypeParameter> implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.TypeParameter)
      TypeParameterOrBuilder {
    // Use TypeParameter.newBuilder() to construct.
    private TypeParameter(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableBuilder<org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter, ?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private TypeParameter(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public TypeParameter getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private TypeParameter(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     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.metadata.ProtoBuf.TypeParameter.Variance value = org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter.Variance.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000008;
                variance_ = value;
              }
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                upperBound_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Type>();
                mutable_bitField0_ |= 0x00000010;
              }
              upperBound_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Type.PARSER, extensionRegistry));
              break;
            }
            case 48: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                upperBoundId_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000020;
              }
              upperBoundId_.add(input.readInt32());
              break;
            }
            case 50: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020) && input.getBytesUntilLimit() > 0) {
                upperBoundId_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000020;
              }
              while (input.getBytesUntilLimit() > 0) {
                upperBoundId_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          upperBound_ = java.util.Collections.unmodifiableList(upperBound_);
        }
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          upperBoundId_ = java.util.Collections.unmodifiableList(upperBoundId_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<TypeParameter> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<TypeParameter>() {
      public TypeParameter parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new TypeParameter(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<TypeParameter> getParserForType() {
      return PARSER;
    }

    /**
     * Protobuf enum {@code org.jetbrains.kotlin.metadata.TypeParameter.Variance}
     */
    public enum Variance
        implements org.jetbrains.kotlin.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 org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<Variance>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<Variance>
          internalValueMap =
            new org.jetbrains.kotlin.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.metadata.TypeParameter.Variance)
    }

    private int bitField0_;
    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_;
    }

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

    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_;
    }

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

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

    public static final int UPPER_BOUND_ID_FIELD_NUMBER = 6;
    private java.util.List<java.lang.Integer> upperBoundId_;
    /**
     * <code>repeated int32 upper_bound_id = 6 [packed = true];</code>
     */
    public java.util.List<java.lang.Integer>
        getUpperBoundIdList() {
      return upperBoundId_;
    }
    /**
     * <code>repeated int32 upper_bound_id = 6 [packed = true];</code>
     */
    public int getUpperBoundIdCount() {
      return upperBoundId_.size();
    }
    /**
     * <code>repeated int32 upper_bound_id = 6 [packed = true];</code>
     */
    public int getUpperBoundId(int index) {
      return upperBoundId_.get(index);
    }
    private int upperBoundIdMemoizedSerializedSize = -1;

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

      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;
        }
      }
      if (!extensionsAreInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite
        .ExtendableMessage<org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter>.ExtensionWriter extensionWriter =
          newExtensionWriter();
      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));
      }
      if (getUpperBoundIdList().size() > 0) {
        output.writeRawVarint32(50);
        output.writeRawVarint32(upperBoundIdMemoizedSerializedSize);
      }
      for (int i = 0; i < upperBoundId_.size(); i++) {
        output.writeInt32NoTag(upperBoundId_.get(i));
      }
      extensionWriter.writeUntil(1000, output);
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, id_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(2, name_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(3, reified_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(4, variance_.getNumber());
      }
      for (int i = 0; i < upperBound_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, upperBound_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < upperBoundId_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(upperBoundId_.get(i));
        }
        size += dataSize;
        if (!getUpperBoundIdList().isEmpty()) {
          size += 1;
          size += org.jetbrains.kotlin.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        upperBoundIdMemoizedSerializedSize = dataSize;
      }
      size += extensionsSerializedSize();
      size += unknownFields.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.metadata.ProtoBuf.TypeParameter parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.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.metadata.ProtoBuf.TypeParameter prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.metadata.TypeParameter}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableBuilder<
          org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter, Builder> implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.TypeParameter)
        org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameterOrBuilder {
      // Construct using org.jetbrains.kotlin.metadata.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.metadata.ProtoBuf.TypeParameter.Variance.INV;
        bitField0_ = (bitField0_ & ~0x00000008);
        upperBound_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        upperBoundId_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

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

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

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter buildPartial() {
        org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter result = new org.jetbrains.kotlin.metadata.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_;
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          upperBoundId_ = java.util.Collections.unmodifiableList(upperBoundId_);
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.upperBoundId_ = upperBoundId_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter other) {
        if (other == org.jetbrains.kotlin.metadata.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_);
          }
          
        }
        if (!other.upperBoundId_.isEmpty()) {
          if (upperBoundId_.isEmpty()) {
            upperBoundId_ = other.upperBoundId_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureUpperBoundIdIsMutable();
            upperBoundId_.addAll(other.upperBoundId_);
          }
          
        }
        this.mergeExtensionFields(other);
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        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;
          }
        }
        if (!extensionsAreInitialized()) {
          
          return false;
        }
        return true;
      }

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

      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;
      }

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

      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;
      }

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

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

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

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

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

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

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

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

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

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

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

        return this;
      }

      private java.util.List<java.lang.Integer> upperBoundId_ = java.util.Collections.emptyList();
      private void ensureUpperBoundIdIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          upperBoundId_ = new java.util.ArrayList<java.lang.Integer>(upperBoundId_);
          bitField0_ |= 0x00000020;
         }
      }
      /**
       * <code>repeated int32 upper_bound_id = 6 [packed = true];</code>
       */
      public java.util.List<java.lang.Integer>
          getUpperBoundIdList() {
        return java.util.Collections.unmodifiableList(upperBoundId_);
      }
      /**
       * <code>repeated int32 upper_bound_id = 6 [packed = true];</code>
       */
      public int getUpperBoundIdCount() {
        return upperBoundId_.size();
      }
      /**
       * <code>repeated int32 upper_bound_id = 6 [packed = true];</code>
       */
      public int getUpperBoundId(int index) {
        return upperBoundId_.get(index);
      }
      /**
       * <code>repeated int32 upper_bound_id = 6 [packed = true];</code>
       */
      public Builder setUpperBoundId(
          int index, int value) {
        ensureUpperBoundIdIsMutable();
        upperBoundId_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated int32 upper_bound_id = 6 [packed = true];</code>
       */
      public Builder addUpperBoundId(int value) {
        ensureUpperBoundIdIsMutable();
        upperBoundId_.add(value);
        
        return this;
      }
      /**
       * <code>repeated int32 upper_bound_id = 6 [packed = true];</code>
       */
      public Builder addAllUpperBoundId(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureUpperBoundIdIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, upperBoundId_);
        
        return this;
      }
      /**
       * <code>repeated int32 upper_bound_id = 6 [packed = true];</code>
       */
      public Builder clearUpperBoundId() {
        upperBoundId_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        
        return this;
      }

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

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

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

  public interface ClassOrBuilder extends 
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.Class)
       org.jetbrains.kotlin.protobuf.GeneratedMessageLite.
            ExtendableMessageOrBuilder<Class> {

    /**
     * <code>optional int32 flags = 1 [default = 6];</code>
     *
     * <pre>
     *hasAnnotations
     *Visibility
     *Modality
     *ClassKind
     *isInner
     *isData
     *isExternal
     *isExpect
     *isInline
     * </pre>
     */
    boolean hasFlags();
    /**
     * <code>optional int32 flags = 1 [default = 6];</code>
     *
     * <pre>
     *hasAnnotations
     *Visibility
     *Modality
     *ClassKind
     *isInner
     *isData
     *isExternal
     *isExpect
     *isInline
     * </pre>
     */
    int getFlags();

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

    /**
     * <code>optional int32 companion_object_name = 4;</code>
     */
    boolean hasCompanionObjectName();
    /**
     * <code>optional int32 companion_object_name = 4;</code>
     */
    int getCompanionObjectName();

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

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

    /**
     * <code>repeated int32 supertype_id = 2 [packed = true];</code>
     */
    java.util.List<java.lang.Integer> getSupertypeIdList();
    /**
     * <code>repeated int32 supertype_id = 2 [packed = true];</code>
     */
    int getSupertypeIdCount();
    /**
     * <code>repeated int32 supertype_id = 2 [packed = true];</code>
     */
    int getSupertypeId(int index);

    /**
     * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
     */
    java.util.List<java.lang.Integer> getNestedClassNameList();
    /**
     * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
     */
    int getNestedClassNameCount();
    /**
     * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
     */
    int getNestedClassName(int index);

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Constructor constructor = 8;</code>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Constructor> 
        getConstructorList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Constructor constructor = 8;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Constructor getConstructor(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Constructor constructor = 8;</code>
     */
    int getConstructorCount();

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 9;</code>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Function> 
        getFunctionList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 9;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Function getFunction(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 9;</code>
     */
    int getFunctionCount();

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 10;</code>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Property> 
        getPropertyList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 10;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Property getProperty(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 10;</code>
     */
    int getPropertyCount();

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 11;</code>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias> 
        getTypeAliasList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 11;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias getTypeAlias(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 11;</code>
     */
    int getTypeAliasCount();

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.EnumEntry enum_entry = 13;</code>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry> 
        getEnumEntryList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.EnumEntry enum_entry = 13;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry getEnumEntry(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.EnumEntry enum_entry = 13;</code>
     */
    int getEnumEntryCount();

    /**
     * <code>repeated int32 sealed_subclass_fq_name = 16 [packed = true];</code>
     */
    java.util.List<java.lang.Integer> getSealedSubclassFqNameList();
    /**
     * <code>repeated int32 sealed_subclass_fq_name = 16 [packed = true];</code>
     */
    int getSealedSubclassFqNameCount();
    /**
     * <code>repeated int32 sealed_subclass_fq_name = 16 [packed = true];</code>
     */
    int getSealedSubclassFqName(int index);

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
     */
    boolean hasTypeTable();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable getTypeTable();

    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    java.util.List<java.lang.Integer> getVersionRequirementList();
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    int getVersionRequirementCount();
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    int getVersionRequirement(int index);

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirementTable version_requirement_table = 32;</code>
     */
    boolean hasVersionRequirementTable();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirementTable version_requirement_table = 32;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable getVersionRequirementTable();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.Class}
   */
  public static final class Class extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableMessage<
        Class> implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.Class)
      ClassOrBuilder {
    // Use Class.newBuilder() to construct.
    private Class(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableBuilder<org.jetbrains.kotlin.metadata.ProtoBuf.Class, ?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Class(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Class getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Class(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              flags_ = input.readInt32();
              break;
            }
            case 16: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                supertypeId_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000020;
              }
              supertypeId_.add(input.readInt32());
              break;
            }
            case 18: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020) && input.getBytesUntilLimit() > 0) {
                supertypeId_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000020;
              }
              while (input.getBytesUntilLimit() > 0) {
                supertypeId_.add(input.readInt32());
              }
              input.popLimit(limit);
              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.metadata.ProtoBuf.TypeParameter>();
                mutable_bitField0_ |= 0x00000008;
              }
              typeParameter_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter.PARSER, extensionRegistry));
              break;
            }
            case 50: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                supertype_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Type>();
                mutable_bitField0_ |= 0x00000010;
              }
              supertype_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Type.PARSER, extensionRegistry));
              break;
            }
            case 56: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                nestedClassName_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000040;
              }
              nestedClassName_.add(input.readInt32());
              break;
            }
            case 58: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040) && input.getBytesUntilLimit() > 0) {
                nestedClassName_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000040;
              }
              while (input.getBytesUntilLimit() > 0) {
                nestedClassName_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 66: {
              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                constructor_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Constructor>();
                mutable_bitField0_ |= 0x00000080;
              }
              constructor_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Constructor.PARSER, extensionRegistry));
              break;
            }
            case 74: {
              if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                function_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Function>();
                mutable_bitField0_ |= 0x00000100;
              }
              function_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Function.PARSER, extensionRegistry));
              break;
            }
            case 82: {
              if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
                property_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Property>();
                mutable_bitField0_ |= 0x00000200;
              }
              property_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Property.PARSER, extensionRegistry));
              break;
            }
            case 90: {
              if (!((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
                typeAlias_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias>();
                mutable_bitField0_ |= 0x00000400;
              }
              typeAlias_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias.PARSER, extensionRegistry));
              break;
            }
            case 106: {
              if (!((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
                enumEntry_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry>();
                mutable_bitField0_ |= 0x00000800;
              }
              enumEntry_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry.PARSER, extensionRegistry));
              break;
            }
            case 128: {
              if (!((mutable_bitField0_ & 0x00001000) == 0x00001000)) {
                sealedSubclassFqName_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00001000;
              }
              sealedSubclassFqName_.add(input.readInt32());
              break;
            }
            case 130: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00001000) == 0x00001000) && input.getBytesUntilLimit() > 0) {
                sealedSubclassFqName_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00001000;
              }
              while (input.getBytesUntilLimit() > 0) {
                sealedSubclassFqName_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 242: {
              org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = typeTable_.toBuilder();
              }
              typeTable_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(typeTable_);
                typeTable_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 248: {
              if (!((mutable_bitField0_ & 0x00004000) == 0x00004000)) {
                versionRequirement_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00004000;
              }
              versionRequirement_.add(input.readInt32());
              break;
            }
            case 250: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00004000) == 0x00004000) && input.getBytesUntilLimit() > 0) {
                versionRequirement_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00004000;
              }
              while (input.getBytesUntilLimit() > 0) {
                versionRequirement_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 258: {
              org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                subBuilder = versionRequirementTable_.toBuilder();
              }
              versionRequirementTable_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(versionRequirementTable_);
                versionRequirementTable_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          supertypeId_ = java.util.Collections.unmodifiableList(supertypeId_);
        }
        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_ & 0x00000040) == 0x00000040)) {
          nestedClassName_ = java.util.Collections.unmodifiableList(nestedClassName_);
        }
        if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
          constructor_ = java.util.Collections.unmodifiableList(constructor_);
        }
        if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
          function_ = java.util.Collections.unmodifiableList(function_);
        }
        if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
          property_ = java.util.Collections.unmodifiableList(property_);
        }
        if (((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
          typeAlias_ = java.util.Collections.unmodifiableList(typeAlias_);
        }
        if (((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
          enumEntry_ = java.util.Collections.unmodifiableList(enumEntry_);
        }
        if (((mutable_bitField0_ & 0x00001000) == 0x00001000)) {
          sealedSubclassFqName_ = java.util.Collections.unmodifiableList(sealedSubclassFqName_);
        }
        if (((mutable_bitField0_ & 0x00004000) == 0x00004000)) {
          versionRequirement_ = java.util.Collections.unmodifiableList(versionRequirement_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Class> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Class>() {
      public Class parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Class(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<Class> getParserForType() {
      return PARSER;
    }

    /**
     * Protobuf enum {@code org.jetbrains.kotlin.metadata.Class.Kind}
     */
    public enum Kind
        implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
      /**
       * <code>CLASS = 0;</code>
       *
       * <pre>
       * 3 bits
       * </pre>
       */
      CLASS(0, 0),
      /**
       * <code>INTERFACE = 1;</code>
       */
      INTERFACE(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>COMPANION_OBJECT = 6;</code>
       */
      COMPANION_OBJECT(6, 6),
      ;

      /**
       * <code>CLASS = 0;</code>
       *
       * <pre>
       * 3 bits
       * </pre>
       */
      public static final int CLASS_VALUE = 0;
      /**
       * <code>INTERFACE = 1;</code>
       */
      public static final int INTERFACE_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>COMPANION_OBJECT = 6;</code>
       */
      public static final int COMPANION_OBJECT_VALUE = 6;


      public final int getNumber() { return value; }

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

      public static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<Kind>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<Kind>
          internalValueMap =
            new org.jetbrains.kotlin.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.metadata.Class.Kind)
    }

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

    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_;
    }

    public static final int COMPANION_OBJECT_NAME_FIELD_NUMBER = 4;
    private int companionObjectName_;
    /**
     * <code>optional int32 companion_object_name = 4;</code>
     */
    public boolean hasCompanionObjectName() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional int32 companion_object_name = 4;</code>
     */
    public int getCompanionObjectName() {
      return companionObjectName_;
    }

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

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

    public static final int SUPERTYPE_ID_FIELD_NUMBER = 2;
    private java.util.List<java.lang.Integer> supertypeId_;
    /**
     * <code>repeated int32 supertype_id = 2 [packed = true];</code>
     */
    public java.util.List<java.lang.Integer>
        getSupertypeIdList() {
      return supertypeId_;
    }
    /**
     * <code>repeated int32 supertype_id = 2 [packed = true];</code>
     */
    public int getSupertypeIdCount() {
      return supertypeId_.size();
    }
    /**
     * <code>repeated int32 supertype_id = 2 [packed = true];</code>
     */
    public int getSupertypeId(int index) {
      return supertypeId_.get(index);
    }
    private int supertypeIdMemoizedSerializedSize = -1;

    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>
     */
    public java.util.List<java.lang.Integer>
        getNestedClassNameList() {
      return nestedClassName_;
    }
    /**
     * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
     */
    public int getNestedClassNameCount() {
      return nestedClassName_.size();
    }
    /**
     * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
     */
    public int getNestedClassName(int index) {
      return nestedClassName_.get(index);
    }
    private int nestedClassNameMemoizedSerializedSize = -1;

    public static final int CONSTRUCTOR_FIELD_NUMBER = 8;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Constructor> constructor_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Constructor constructor = 8;</code>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Constructor> getConstructorList() {
      return constructor_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Constructor constructor = 8;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.ConstructorOrBuilder> 
        getConstructorOrBuilderList() {
      return constructor_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Constructor constructor = 8;</code>
     */
    public int getConstructorCount() {
      return constructor_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Constructor constructor = 8;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Constructor getConstructor(int index) {
      return constructor_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Constructor constructor = 8;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.ConstructorOrBuilder getConstructorOrBuilder(
        int index) {
      return constructor_.get(index);
    }

    public static final int FUNCTION_FIELD_NUMBER = 9;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Function> function_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 9;</code>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Function> getFunctionList() {
      return function_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 9;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.FunctionOrBuilder> 
        getFunctionOrBuilderList() {
      return function_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 9;</code>
     */
    public int getFunctionCount() {
      return function_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 9;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Function getFunction(int index) {
      return function_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 9;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.FunctionOrBuilder getFunctionOrBuilder(
        int index) {
      return function_.get(index);
    }

    public static final int PROPERTY_FIELD_NUMBER = 10;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Property> property_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 10;</code>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Property> getPropertyList() {
      return property_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 10;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.PropertyOrBuilder> 
        getPropertyOrBuilderList() {
      return property_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 10;</code>
     */
    public int getPropertyCount() {
      return property_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 10;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Property getProperty(int index) {
      return property_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 10;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.PropertyOrBuilder getPropertyOrBuilder(
        int index) {
      return property_.get(index);
    }

    public static final int TYPE_ALIAS_FIELD_NUMBER = 11;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias> typeAlias_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 11;</code>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias> getTypeAliasList() {
      return typeAlias_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 11;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.TypeAliasOrBuilder> 
        getTypeAliasOrBuilderList() {
      return typeAlias_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 11;</code>
     */
    public int getTypeAliasCount() {
      return typeAlias_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 11;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias getTypeAlias(int index) {
      return typeAlias_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 11;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.TypeAliasOrBuilder getTypeAliasOrBuilder(
        int index) {
      return typeAlias_.get(index);
    }

    public static final int ENUM_ENTRY_FIELD_NUMBER = 13;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry> enumEntry_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.EnumEntry enum_entry = 13;</code>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry> getEnumEntryList() {
      return enumEntry_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.EnumEntry enum_entry = 13;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntryOrBuilder> 
        getEnumEntryOrBuilderList() {
      return enumEntry_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.EnumEntry enum_entry = 13;</code>
     */
    public int getEnumEntryCount() {
      return enumEntry_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.EnumEntry enum_entry = 13;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry getEnumEntry(int index) {
      return enumEntry_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.EnumEntry enum_entry = 13;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntryOrBuilder getEnumEntryOrBuilder(
        int index) {
      return enumEntry_.get(index);
    }

    public static final int SEALED_SUBCLASS_FQ_NAME_FIELD_NUMBER = 16;
    private java.util.List<java.lang.Integer> sealedSubclassFqName_;
    /**
     * <code>repeated int32 sealed_subclass_fq_name = 16 [packed = true];</code>
     */
    public java.util.List<java.lang.Integer>
        getSealedSubclassFqNameList() {
      return sealedSubclassFqName_;
    }
    /**
     * <code>repeated int32 sealed_subclass_fq_name = 16 [packed = true];</code>
     */
    public int getSealedSubclassFqNameCount() {
      return sealedSubclassFqName_.size();
    }
    /**
     * <code>repeated int32 sealed_subclass_fq_name = 16 [packed = true];</code>
     */
    public int getSealedSubclassFqName(int index) {
      return sealedSubclassFqName_.get(index);
    }
    private int sealedSubclassFqNameMemoizedSerializedSize = -1;

    public static final int TYPE_TABLE_FIELD_NUMBER = 30;
    private org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable typeTable_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
     */
    public boolean hasTypeTable() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable getTypeTable() {
      return typeTable_;
    }

    public static final int VERSION_REQUIREMENT_FIELD_NUMBER = 31;
    private java.util.List<java.lang.Integer> versionRequirement_;
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    public java.util.List<java.lang.Integer>
        getVersionRequirementList() {
      return versionRequirement_;
    }
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    public int getVersionRequirementCount() {
      return versionRequirement_.size();
    }
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    public int getVersionRequirement(int index) {
      return versionRequirement_.get(index);
    }

    public static final int VERSION_REQUIREMENT_TABLE_FIELD_NUMBER = 32;
    private org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable versionRequirementTable_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirementTable version_requirement_table = 32;</code>
     */
    public boolean hasVersionRequirementTable() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirementTable version_requirement_table = 32;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable getVersionRequirementTable() {
      return versionRequirementTable_;
    }

    private void initFields() {
      flags_ = 6;
      fqName_ = 0;
      companionObjectName_ = 0;
      typeParameter_ = java.util.Collections.emptyList();
      supertype_ = java.util.Collections.emptyList();
      supertypeId_ = java.util.Collections.emptyList();
      nestedClassName_ = java.util.Collections.emptyList();
      constructor_ = java.util.Collections.emptyList();
      function_ = java.util.Collections.emptyList();
      property_ = java.util.Collections.emptyList();
      typeAlias_ = java.util.Collections.emptyList();
      enumEntry_ = java.util.Collections.emptyList();
      sealedSubclassFqName_ = java.util.Collections.emptyList();
      typeTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.getDefaultInstance();
      versionRequirement_ = java.util.Collections.emptyList();
      versionRequirementTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      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 < getConstructorCount(); i++) {
        if (!getConstructor(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getFunctionCount(); i++) {
        if (!getFunction(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getPropertyCount(); i++) {
        if (!getProperty(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getTypeAliasCount(); i++) {
        if (!getTypeAlias(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getEnumEntryCount(); i++) {
        if (!getEnumEntry(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasTypeTable()) {
        if (!getTypeTable().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!extensionsAreInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite
        .ExtendableMessage<org.jetbrains.kotlin.metadata.ProtoBuf.Class>.ExtensionWriter extensionWriter =
          newExtensionWriter();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, flags_);
      }
      if (getSupertypeIdList().size() > 0) {
        output.writeRawVarint32(18);
        output.writeRawVarint32(supertypeIdMemoizedSerializedSize);
      }
      for (int i = 0; i < supertypeId_.size(); i++) {
        output.writeInt32NoTag(supertypeId_.get(i));
      }
      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 < constructor_.size(); i++) {
        output.writeMessage(8, constructor_.get(i));
      }
      for (int i = 0; i < function_.size(); i++) {
        output.writeMessage(9, function_.get(i));
      }
      for (int i = 0; i < property_.size(); i++) {
        output.writeMessage(10, property_.get(i));
      }
      for (int i = 0; i < typeAlias_.size(); i++) {
        output.writeMessage(11, typeAlias_.get(i));
      }
      for (int i = 0; i < enumEntry_.size(); i++) {
        output.writeMessage(13, enumEntry_.get(i));
      }
      if (getSealedSubclassFqNameList().size() > 0) {
        output.writeRawVarint32(130);
        output.writeRawVarint32(sealedSubclassFqNameMemoizedSerializedSize);
      }
      for (int i = 0; i < sealedSubclassFqName_.size(); i++) {
        output.writeInt32NoTag(sealedSubclassFqName_.get(i));
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(30, typeTable_);
      }
      for (int i = 0; i < versionRequirement_.size(); i++) {
        output.writeInt32(31, versionRequirement_.get(i));
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(32, versionRequirementTable_);
      }
      extensionWriter.writeUntil(19000, output);
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, flags_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < supertypeId_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(supertypeId_.get(i));
        }
        size += dataSize;
        if (!getSupertypeIdList().isEmpty()) {
          size += 1;
          size += org.jetbrains.kotlin.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        supertypeIdMemoizedSerializedSize = dataSize;
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(3, fqName_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(4, companionObjectName_);
      }
      for (int i = 0; i < typeParameter_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, typeParameter_.get(i));
      }
      for (int i = 0; i < supertype_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(6, supertype_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < nestedClassName_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(nestedClassName_.get(i));
        }
        size += dataSize;
        if (!getNestedClassNameList().isEmpty()) {
          size += 1;
          size += org.jetbrains.kotlin.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        nestedClassNameMemoizedSerializedSize = dataSize;
      }
      for (int i = 0; i < constructor_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(8, constructor_.get(i));
      }
      for (int i = 0; i < function_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(9, function_.get(i));
      }
      for (int i = 0; i < property_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(10, property_.get(i));
      }
      for (int i = 0; i < typeAlias_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(11, typeAlias_.get(i));
      }
      for (int i = 0; i < enumEntry_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(13, enumEntry_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < sealedSubclassFqName_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(sealedSubclassFqName_.get(i));
        }
        size += dataSize;
        if (!getSealedSubclassFqNameList().isEmpty()) {
          size += 2;
          size += org.jetbrains.kotlin.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        sealedSubclassFqNameMemoizedSerializedSize = dataSize;
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(30, typeTable_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < versionRequirement_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(versionRequirement_.get(i));
        }
        size += dataSize;
        size += 2 * getVersionRequirementList().size();
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(32, versionRequirementTable_);
      }
      size += extensionsSerializedSize();
      size += unknownFields.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.metadata.ProtoBuf.Class parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Class parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Class parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Class parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Class parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Class parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Class parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Class parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Class parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Class parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.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.metadata.ProtoBuf.Class prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        flags_ = 6;
        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);
        supertypeId_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        nestedClassName_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        constructor_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);
        function_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000100);
        property_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000200);
        typeAlias_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000400);
        enumEntry_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000800);
        sealedSubclassFqName_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00001000);
        typeTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00002000);
        versionRequirement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00004000);
        versionRequirementTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00008000);
        return this;
      }

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

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

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.Class buildPartial() {
        org.jetbrains.kotlin.metadata.ProtoBuf.Class result = new org.jetbrains.kotlin.metadata.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)) {
          supertypeId_ = java.util.Collections.unmodifiableList(supertypeId_);
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.supertypeId_ = supertypeId_;
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          nestedClassName_ = java.util.Collections.unmodifiableList(nestedClassName_);
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.nestedClassName_ = nestedClassName_;
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          constructor_ = java.util.Collections.unmodifiableList(constructor_);
          bitField0_ = (bitField0_ & ~0x00000080);
        }
        result.constructor_ = constructor_;
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          function_ = java.util.Collections.unmodifiableList(function_);
          bitField0_ = (bitField0_ & ~0x00000100);
        }
        result.function_ = function_;
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          property_ = java.util.Collections.unmodifiableList(property_);
          bitField0_ = (bitField0_ & ~0x00000200);
        }
        result.property_ = property_;
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          typeAlias_ = java.util.Collections.unmodifiableList(typeAlias_);
          bitField0_ = (bitField0_ & ~0x00000400);
        }
        result.typeAlias_ = typeAlias_;
        if (((bitField0_ & 0x00000800) == 0x00000800)) {
          enumEntry_ = java.util.Collections.unmodifiableList(enumEntry_);
          bitField0_ = (bitField0_ & ~0x00000800);
        }
        result.enumEntry_ = enumEntry_;
        if (((bitField0_ & 0x00001000) == 0x00001000)) {
          sealedSubclassFqName_ = java.util.Collections.unmodifiableList(sealedSubclassFqName_);
          bitField0_ = (bitField0_ & ~0x00001000);
        }
        result.sealedSubclassFqName_ = sealedSubclassFqName_;
        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
          to_bitField0_ |= 0x00000008;
        }
        result.typeTable_ = typeTable_;
        if (((bitField0_ & 0x00004000) == 0x00004000)) {
          versionRequirement_ = java.util.Collections.unmodifiableList(versionRequirement_);
          bitField0_ = (bitField0_ & ~0x00004000);
        }
        result.versionRequirement_ = versionRequirement_;
        if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
          to_bitField0_ |= 0x00000010;
        }
        result.versionRequirementTable_ = versionRequirementTable_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.metadata.ProtoBuf.Class other) {
        if (other == org.jetbrains.kotlin.metadata.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.supertypeId_.isEmpty()) {
          if (supertypeId_.isEmpty()) {
            supertypeId_ = other.supertypeId_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureSupertypeIdIsMutable();
            supertypeId_.addAll(other.supertypeId_);
          }
          
        }
        if (!other.nestedClassName_.isEmpty()) {
          if (nestedClassName_.isEmpty()) {
            nestedClassName_ = other.nestedClassName_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureNestedClassNameIsMutable();
            nestedClassName_.addAll(other.nestedClassName_);
          }
          
        }
        if (!other.constructor_.isEmpty()) {
          if (constructor_.isEmpty()) {
            constructor_ = other.constructor_;
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            ensureConstructorIsMutable();
            constructor_.addAll(other.constructor_);
          }
          
        }
        if (!other.function_.isEmpty()) {
          if (function_.isEmpty()) {
            function_ = other.function_;
            bitField0_ = (bitField0_ & ~0x00000100);
          } else {
            ensureFunctionIsMutable();
            function_.addAll(other.function_);
          }
          
        }
        if (!other.property_.isEmpty()) {
          if (property_.isEmpty()) {
            property_ = other.property_;
            bitField0_ = (bitField0_ & ~0x00000200);
          } else {
            ensurePropertyIsMutable();
            property_.addAll(other.property_);
          }
          
        }
        if (!other.typeAlias_.isEmpty()) {
          if (typeAlias_.isEmpty()) {
            typeAlias_ = other.typeAlias_;
            bitField0_ = (bitField0_ & ~0x00000400);
          } else {
            ensureTypeAliasIsMutable();
            typeAlias_.addAll(other.typeAlias_);
          }
          
        }
        if (!other.enumEntry_.isEmpty()) {
          if (enumEntry_.isEmpty()) {
            enumEntry_ = other.enumEntry_;
            bitField0_ = (bitField0_ & ~0x00000800);
          } else {
            ensureEnumEntryIsMutable();
            enumEntry_.addAll(other.enumEntry_);
          }
          
        }
        if (!other.sealedSubclassFqName_.isEmpty()) {
          if (sealedSubclassFqName_.isEmpty()) {
            sealedSubclassFqName_ = other.sealedSubclassFqName_;
            bitField0_ = (bitField0_ & ~0x00001000);
          } else {
            ensureSealedSubclassFqNameIsMutable();
            sealedSubclassFqName_.addAll(other.sealedSubclassFqName_);
          }
          
        }
        if (other.hasTypeTable()) {
          mergeTypeTable(other.getTypeTable());
        }
        if (!other.versionRequirement_.isEmpty()) {
          if (versionRequirement_.isEmpty()) {
            versionRequirement_ = other.versionRequirement_;
            bitField0_ = (bitField0_ & ~0x00004000);
          } else {
            ensureVersionRequirementIsMutable();
            versionRequirement_.addAll(other.versionRequirement_);
          }
          
        }
        if (other.hasVersionRequirementTable()) {
          mergeVersionRequirementTable(other.getVersionRequirementTable());
        }
        this.mergeExtensionFields(other);
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        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 < getConstructorCount(); i++) {
          if (!getConstructor(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getFunctionCount(); i++) {
          if (!getFunction(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getPropertyCount(); i++) {
          if (!getProperty(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getTypeAliasCount(); i++) {
          if (!getTypeAlias(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getEnumEntryCount(); i++) {
          if (!getEnumEntry(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasTypeTable()) {
          if (!getTypeTable().isInitialized()) {
            
            return false;
          }
        }
        if (!extensionsAreInitialized()) {
          
          return false;
        }
        return true;
      }

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

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

      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;
      }

      private int companionObjectName_ ;
      /**
       * <code>optional int32 companion_object_name = 4;</code>
       */
      public boolean hasCompanionObjectName() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional int32 companion_object_name = 4;</code>
       */
      public int getCompanionObjectName() {
        return companionObjectName_;
      }
      /**
       * <code>optional int32 companion_object_name = 4;</code>
       */
      public Builder setCompanionObjectName(int value) {
        bitField0_ |= 0x00000004;
        companionObjectName_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 companion_object_name = 4;</code>
       */
      public Builder clearCompanionObjectName() {
        bitField0_ = (bitField0_ & ~0x00000004);
        companionObjectName_ = 0;
        
        return this;
      }

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

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

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

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

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

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

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

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

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

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

        return this;
      }

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

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

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

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

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

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

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

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

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

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

        return this;
      }

      private java.util.List<java.lang.Integer> supertypeId_ = java.util.Collections.emptyList();
      private void ensureSupertypeIdIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          supertypeId_ = new java.util.ArrayList<java.lang.Integer>(supertypeId_);
          bitField0_ |= 0x00000020;
         }
      }
      /**
       * <code>repeated int32 supertype_id = 2 [packed = true];</code>
       */
      public java.util.List<java.lang.Integer>
          getSupertypeIdList() {
        return java.util.Collections.unmodifiableList(supertypeId_);
      }
      /**
       * <code>repeated int32 supertype_id = 2 [packed = true];</code>
       */
      public int getSupertypeIdCount() {
        return supertypeId_.size();
      }
      /**
       * <code>repeated int32 supertype_id = 2 [packed = true];</code>
       */
      public int getSupertypeId(int index) {
        return supertypeId_.get(index);
      }
      /**
       * <code>repeated int32 supertype_id = 2 [packed = true];</code>
       */
      public Builder setSupertypeId(
          int index, int value) {
        ensureSupertypeIdIsMutable();
        supertypeId_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated int32 supertype_id = 2 [packed = true];</code>
       */
      public Builder addSupertypeId(int value) {
        ensureSupertypeIdIsMutable();
        supertypeId_.add(value);
        
        return this;
      }
      /**
       * <code>repeated int32 supertype_id = 2 [packed = true];</code>
       */
      public Builder addAllSupertypeId(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureSupertypeIdIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, supertypeId_);
        
        return this;
      }
      /**
       * <code>repeated int32 supertype_id = 2 [packed = true];</code>
       */
      public Builder clearSupertypeId() {
        supertypeId_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        
        return this;
      }

      private java.util.List<java.lang.Integer> nestedClassName_ = java.util.Collections.emptyList();
      private void ensureNestedClassNameIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          nestedClassName_ = new java.util.ArrayList<java.lang.Integer>(nestedClassName_);
          bitField0_ |= 0x00000040;
         }
      }
      /**
       * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
       */
      public java.util.List<java.lang.Integer>
          getNestedClassNameList() {
        return java.util.Collections.unmodifiableList(nestedClassName_);
      }
      /**
       * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
       */
      public int getNestedClassNameCount() {
        return nestedClassName_.size();
      }
      /**
       * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
       */
      public int getNestedClassName(int index) {
        return nestedClassName_.get(index);
      }
      /**
       * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
       */
      public Builder setNestedClassName(
          int index, int value) {
        ensureNestedClassNameIsMutable();
        nestedClassName_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
       */
      public Builder addNestedClassName(int value) {
        ensureNestedClassNameIsMutable();
        nestedClassName_.add(value);
        
        return this;
      }
      /**
       * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
       */
      public Builder addAllNestedClassName(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureNestedClassNameIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, nestedClassName_);
        
        return this;
      }
      /**
       * <code>repeated int32 nested_class_name = 7 [packed = true];</code>
       */
      public Builder clearNestedClassName() {
        nestedClassName_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        
        return this;
      }

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Constructor> constructor_ =
        java.util.Collections.emptyList();
      private void ensureConstructorIsMutable() {
        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
          constructor_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Constructor>(constructor_);
          bitField0_ |= 0x00000080;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Constructor constructor = 8;</code>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Constructor> getConstructorList() {
        return java.util.Collections.unmodifiableList(constructor_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Constructor constructor = 8;</code>
       */
      public int getConstructorCount() {
        return constructor_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Constructor constructor = 8;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Constructor getConstructor(int index) {
        return constructor_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Constructor constructor = 8;</code>
       */
      public Builder setConstructor(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Constructor value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureConstructorIsMutable();
        constructor_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Constructor constructor = 8;</code>
       */
      public Builder setConstructor(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Constructor.Builder builderForValue) {
        ensureConstructorIsMutable();
        constructor_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Constructor constructor = 8;</code>
       */
      public Builder addConstructor(org.jetbrains.kotlin.metadata.ProtoBuf.Constructor value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureConstructorIsMutable();
        constructor_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Constructor constructor = 8;</code>
       */
      public Builder addConstructor(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Constructor value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureConstructorIsMutable();
        constructor_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Constructor constructor = 8;</code>
       */
      public Builder addConstructor(
          org.jetbrains.kotlin.metadata.ProtoBuf.Constructor.Builder builderForValue) {
        ensureConstructorIsMutable();
        constructor_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Constructor constructor = 8;</code>
       */
      public Builder addConstructor(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Constructor.Builder builderForValue) {
        ensureConstructorIsMutable();
        constructor_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Constructor constructor = 8;</code>
       */
      public Builder addAllConstructor(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.ProtoBuf.Constructor> values) {
        ensureConstructorIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, constructor_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Constructor constructor = 8;</code>
       */
      public Builder clearConstructor() {
        constructor_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Constructor constructor = 8;</code>
       */
      public Builder removeConstructor(int index) {
        ensureConstructorIsMutable();
        constructor_.remove(index);

        return this;
      }

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Function> function_ =
        java.util.Collections.emptyList();
      private void ensureFunctionIsMutable() {
        if (!((bitField0_ & 0x00000100) == 0x00000100)) {
          function_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Function>(function_);
          bitField0_ |= 0x00000100;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 9;</code>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Function> getFunctionList() {
        return java.util.Collections.unmodifiableList(function_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 9;</code>
       */
      public int getFunctionCount() {
        return function_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 9;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Function getFunction(int index) {
        return function_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 9;</code>
       */
      public Builder setFunction(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Function value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFunctionIsMutable();
        function_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 9;</code>
       */
      public Builder setFunction(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Function.Builder builderForValue) {
        ensureFunctionIsMutable();
        function_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 9;</code>
       */
      public Builder addFunction(org.jetbrains.kotlin.metadata.ProtoBuf.Function value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFunctionIsMutable();
        function_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 9;</code>
       */
      public Builder addFunction(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Function value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFunctionIsMutable();
        function_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 9;</code>
       */
      public Builder addFunction(
          org.jetbrains.kotlin.metadata.ProtoBuf.Function.Builder builderForValue) {
        ensureFunctionIsMutable();
        function_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 9;</code>
       */
      public Builder addFunction(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Function.Builder builderForValue) {
        ensureFunctionIsMutable();
        function_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 9;</code>
       */
      public Builder addAllFunction(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.ProtoBuf.Function> values) {
        ensureFunctionIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, function_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 9;</code>
       */
      public Builder clearFunction() {
        function_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000100);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 9;</code>
       */
      public Builder removeFunction(int index) {
        ensureFunctionIsMutable();
        function_.remove(index);

        return this;
      }

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Property> property_ =
        java.util.Collections.emptyList();
      private void ensurePropertyIsMutable() {
        if (!((bitField0_ & 0x00000200) == 0x00000200)) {
          property_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Property>(property_);
          bitField0_ |= 0x00000200;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 10;</code>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Property> getPropertyList() {
        return java.util.Collections.unmodifiableList(property_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 10;</code>
       */
      public int getPropertyCount() {
        return property_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 10;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Property getProperty(int index) {
        return property_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 10;</code>
       */
      public Builder setProperty(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Property value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensurePropertyIsMutable();
        property_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 10;</code>
       */
      public Builder setProperty(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Property.Builder builderForValue) {
        ensurePropertyIsMutable();
        property_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 10;</code>
       */
      public Builder addProperty(org.jetbrains.kotlin.metadata.ProtoBuf.Property value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensurePropertyIsMutable();
        property_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 10;</code>
       */
      public Builder addProperty(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Property value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensurePropertyIsMutable();
        property_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 10;</code>
       */
      public Builder addProperty(
          org.jetbrains.kotlin.metadata.ProtoBuf.Property.Builder builderForValue) {
        ensurePropertyIsMutable();
        property_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 10;</code>
       */
      public Builder addProperty(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Property.Builder builderForValue) {
        ensurePropertyIsMutable();
        property_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 10;</code>
       */
      public Builder addAllProperty(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.ProtoBuf.Property> values) {
        ensurePropertyIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, property_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 10;</code>
       */
      public Builder clearProperty() {
        property_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000200);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 10;</code>
       */
      public Builder removeProperty(int index) {
        ensurePropertyIsMutable();
        property_.remove(index);

        return this;
      }

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias> typeAlias_ =
        java.util.Collections.emptyList();
      private void ensureTypeAliasIsMutable() {
        if (!((bitField0_ & 0x00000400) == 0x00000400)) {
          typeAlias_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias>(typeAlias_);
          bitField0_ |= 0x00000400;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 11;</code>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias> getTypeAliasList() {
        return java.util.Collections.unmodifiableList(typeAlias_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 11;</code>
       */
      public int getTypeAliasCount() {
        return typeAlias_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 11;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias getTypeAlias(int index) {
        return typeAlias_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 11;</code>
       */
      public Builder setTypeAlias(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeAliasIsMutable();
        typeAlias_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 11;</code>
       */
      public Builder setTypeAlias(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias.Builder builderForValue) {
        ensureTypeAliasIsMutable();
        typeAlias_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 11;</code>
       */
      public Builder addTypeAlias(org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeAliasIsMutable();
        typeAlias_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 11;</code>
       */
      public Builder addTypeAlias(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeAliasIsMutable();
        typeAlias_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 11;</code>
       */
      public Builder addTypeAlias(
          org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias.Builder builderForValue) {
        ensureTypeAliasIsMutable();
        typeAlias_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 11;</code>
       */
      public Builder addTypeAlias(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias.Builder builderForValue) {
        ensureTypeAliasIsMutable();
        typeAlias_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 11;</code>
       */
      public Builder addAllTypeAlias(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias> values) {
        ensureTypeAliasIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, typeAlias_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 11;</code>
       */
      public Builder clearTypeAlias() {
        typeAlias_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000400);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 11;</code>
       */
      public Builder removeTypeAlias(int index) {
        ensureTypeAliasIsMutable();
        typeAlias_.remove(index);

        return this;
      }

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry> enumEntry_ =
        java.util.Collections.emptyList();
      private void ensureEnumEntryIsMutable() {
        if (!((bitField0_ & 0x00000800) == 0x00000800)) {
          enumEntry_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry>(enumEntry_);
          bitField0_ |= 0x00000800;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.EnumEntry enum_entry = 13;</code>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry> getEnumEntryList() {
        return java.util.Collections.unmodifiableList(enumEntry_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.EnumEntry enum_entry = 13;</code>
       */
      public int getEnumEntryCount() {
        return enumEntry_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.EnumEntry enum_entry = 13;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry getEnumEntry(int index) {
        return enumEntry_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.EnumEntry enum_entry = 13;</code>
       */
      public Builder setEnumEntry(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureEnumEntryIsMutable();
        enumEntry_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.EnumEntry enum_entry = 13;</code>
       */
      public Builder setEnumEntry(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry.Builder builderForValue) {
        ensureEnumEntryIsMutable();
        enumEntry_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.EnumEntry enum_entry = 13;</code>
       */
      public Builder addEnumEntry(org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureEnumEntryIsMutable();
        enumEntry_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.EnumEntry enum_entry = 13;</code>
       */
      public Builder addEnumEntry(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureEnumEntryIsMutable();
        enumEntry_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.EnumEntry enum_entry = 13;</code>
       */
      public Builder addEnumEntry(
          org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry.Builder builderForValue) {
        ensureEnumEntryIsMutable();
        enumEntry_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.EnumEntry enum_entry = 13;</code>
       */
      public Builder addEnumEntry(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry.Builder builderForValue) {
        ensureEnumEntryIsMutable();
        enumEntry_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.EnumEntry enum_entry = 13;</code>
       */
      public Builder addAllEnumEntry(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry> values) {
        ensureEnumEntryIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, enumEntry_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.EnumEntry enum_entry = 13;</code>
       */
      public Builder clearEnumEntry() {
        enumEntry_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000800);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.EnumEntry enum_entry = 13;</code>
       */
      public Builder removeEnumEntry(int index) {
        ensureEnumEntryIsMutable();
        enumEntry_.remove(index);

        return this;
      }

      private java.util.List<java.lang.Integer> sealedSubclassFqName_ = java.util.Collections.emptyList();
      private void ensureSealedSubclassFqNameIsMutable() {
        if (!((bitField0_ & 0x00001000) == 0x00001000)) {
          sealedSubclassFqName_ = new java.util.ArrayList<java.lang.Integer>(sealedSubclassFqName_);
          bitField0_ |= 0x00001000;
         }
      }
      /**
       * <code>repeated int32 sealed_subclass_fq_name = 16 [packed = true];</code>
       */
      public java.util.List<java.lang.Integer>
          getSealedSubclassFqNameList() {
        return java.util.Collections.unmodifiableList(sealedSubclassFqName_);
      }
      /**
       * <code>repeated int32 sealed_subclass_fq_name = 16 [packed = true];</code>
       */
      public int getSealedSubclassFqNameCount() {
        return sealedSubclassFqName_.size();
      }
      /**
       * <code>repeated int32 sealed_subclass_fq_name = 16 [packed = true];</code>
       */
      public int getSealedSubclassFqName(int index) {
        return sealedSubclassFqName_.get(index);
      }
      /**
       * <code>repeated int32 sealed_subclass_fq_name = 16 [packed = true];</code>
       */
      public Builder setSealedSubclassFqName(
          int index, int value) {
        ensureSealedSubclassFqNameIsMutable();
        sealedSubclassFqName_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated int32 sealed_subclass_fq_name = 16 [packed = true];</code>
       */
      public Builder addSealedSubclassFqName(int value) {
        ensureSealedSubclassFqNameIsMutable();
        sealedSubclassFqName_.add(value);
        
        return this;
      }
      /**
       * <code>repeated int32 sealed_subclass_fq_name = 16 [packed = true];</code>
       */
      public Builder addAllSealedSubclassFqName(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureSealedSubclassFqNameIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, sealedSubclassFqName_);
        
        return this;
      }
      /**
       * <code>repeated int32 sealed_subclass_fq_name = 16 [packed = true];</code>
       */
      public Builder clearSealedSubclassFqName() {
        sealedSubclassFqName_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00001000);
        
        return this;
      }

      private org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable typeTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
       */
      public boolean hasTypeTable() {
        return ((bitField0_ & 0x00002000) == 0x00002000);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable getTypeTable() {
        return typeTable_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
       */
      public Builder setTypeTable(org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        typeTable_ = value;

        bitField0_ |= 0x00002000;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
       */
      public Builder setTypeTable(
          org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.Builder builderForValue) {
        typeTable_ = builderForValue.build();

        bitField0_ |= 0x00002000;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
       */
      public Builder mergeTypeTable(org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable value) {
        if (((bitField0_ & 0x00002000) == 0x00002000) &&
            typeTable_ != org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.getDefaultInstance()) {
          typeTable_ =
            org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.newBuilder(typeTable_).mergeFrom(value).buildPartial();
        } else {
          typeTable_ = value;
        }

        bitField0_ |= 0x00002000;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
       */
      public Builder clearTypeTable() {
        typeTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.getDefaultInstance();

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

      private java.util.List<java.lang.Integer> versionRequirement_ = java.util.Collections.emptyList();
      private void ensureVersionRequirementIsMutable() {
        if (!((bitField0_ & 0x00004000) == 0x00004000)) {
          versionRequirement_ = new java.util.ArrayList<java.lang.Integer>(versionRequirement_);
          bitField0_ |= 0x00004000;
         }
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public java.util.List<java.lang.Integer>
          getVersionRequirementList() {
        return java.util.Collections.unmodifiableList(versionRequirement_);
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public int getVersionRequirementCount() {
        return versionRequirement_.size();
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public int getVersionRequirement(int index) {
        return versionRequirement_.get(index);
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public Builder setVersionRequirement(
          int index, int value) {
        ensureVersionRequirementIsMutable();
        versionRequirement_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public Builder addVersionRequirement(int value) {
        ensureVersionRequirementIsMutable();
        versionRequirement_.add(value);
        
        return this;
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public Builder addAllVersionRequirement(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureVersionRequirementIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, versionRequirement_);
        
        return this;
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public Builder clearVersionRequirement() {
        versionRequirement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00004000);
        
        return this;
      }

      private org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable versionRequirementTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirementTable version_requirement_table = 32;</code>
       */
      public boolean hasVersionRequirementTable() {
        return ((bitField0_ & 0x00008000) == 0x00008000);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirementTable version_requirement_table = 32;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable getVersionRequirementTable() {
        return versionRequirementTable_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirementTable version_requirement_table = 32;</code>
       */
      public Builder setVersionRequirementTable(org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        versionRequirementTable_ = value;

        bitField0_ |= 0x00008000;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirementTable version_requirement_table = 32;</code>
       */
      public Builder setVersionRequirementTable(
          org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.Builder builderForValue) {
        versionRequirementTable_ = builderForValue.build();

        bitField0_ |= 0x00008000;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirementTable version_requirement_table = 32;</code>
       */
      public Builder mergeVersionRequirementTable(org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable value) {
        if (((bitField0_ & 0x00008000) == 0x00008000) &&
            versionRequirementTable_ != org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.getDefaultInstance()) {
          versionRequirementTable_ =
            org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.newBuilder(versionRequirementTable_).mergeFrom(value).buildPartial();
        } else {
          versionRequirementTable_ = value;
        }

        bitField0_ |= 0x00008000;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirementTable version_requirement_table = 32;</code>
       */
      public Builder clearVersionRequirementTable() {
        versionRequirementTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.getDefaultInstance();

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

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

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

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

  public interface PackageOrBuilder extends 
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.Package)
       org.jetbrains.kotlin.protobuf.GeneratedMessageLite.
            ExtendableMessageOrBuilder<Package> {

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 3;</code>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Function> 
        getFunctionList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 3;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Function getFunction(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 3;</code>
     */
    int getFunctionCount();

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 4;</code>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Property> 
        getPropertyList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 4;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Property getProperty(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 4;</code>
     */
    int getPropertyCount();

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 5;</code>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias> 
        getTypeAliasList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 5;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias getTypeAlias(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 5;</code>
     */
    int getTypeAliasCount();

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
     */
    boolean hasTypeTable();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable getTypeTable();

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirementTable version_requirement_table = 32;</code>
     */
    boolean hasVersionRequirementTable();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirementTable version_requirement_table = 32;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable getVersionRequirementTable();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.Package}
   */
  public static final class Package extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableMessage<
        Package> implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.Package)
      PackageOrBuilder {
    // Use Package.newBuilder() to construct.
    private Package(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableBuilder<org.jetbrains.kotlin.metadata.ProtoBuf.Package, ?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Package(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Package getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Package(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                function_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Function>();
                mutable_bitField0_ |= 0x00000001;
              }
              function_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Function.PARSER, extensionRegistry));
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                property_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Property>();
                mutable_bitField0_ |= 0x00000002;
              }
              property_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Property.PARSER, extensionRegistry));
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                typeAlias_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias>();
                mutable_bitField0_ |= 0x00000004;
              }
              typeAlias_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias.PARSER, extensionRegistry));
              break;
            }
            case 242: {
              org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = typeTable_.toBuilder();
              }
              typeTable_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(typeTable_);
                typeTable_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 258: {
              org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = versionRequirementTable_.toBuilder();
              }
              versionRequirementTable_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(versionRequirementTable_);
                versionRequirementTable_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          function_ = java.util.Collections.unmodifiableList(function_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          property_ = java.util.Collections.unmodifiableList(property_);
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          typeAlias_ = java.util.Collections.unmodifiableList(typeAlias_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Package> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Package>() {
      public Package parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Package(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<Package> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int FUNCTION_FIELD_NUMBER = 3;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Function> function_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 3;</code>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Function> getFunctionList() {
      return function_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 3;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.FunctionOrBuilder> 
        getFunctionOrBuilderList() {
      return function_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 3;</code>
     */
    public int getFunctionCount() {
      return function_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 3;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Function getFunction(int index) {
      return function_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 3;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.FunctionOrBuilder getFunctionOrBuilder(
        int index) {
      return function_.get(index);
    }

    public static final int PROPERTY_FIELD_NUMBER = 4;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Property> property_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 4;</code>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Property> getPropertyList() {
      return property_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 4;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.PropertyOrBuilder> 
        getPropertyOrBuilderList() {
      return property_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 4;</code>
     */
    public int getPropertyCount() {
      return property_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 4;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Property getProperty(int index) {
      return property_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 4;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.PropertyOrBuilder getPropertyOrBuilder(
        int index) {
      return property_.get(index);
    }

    public static final int TYPE_ALIAS_FIELD_NUMBER = 5;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias> typeAlias_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 5;</code>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias> getTypeAliasList() {
      return typeAlias_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 5;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.TypeAliasOrBuilder> 
        getTypeAliasOrBuilderList() {
      return typeAlias_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 5;</code>
     */
    public int getTypeAliasCount() {
      return typeAlias_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 5;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias getTypeAlias(int index) {
      return typeAlias_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 5;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.TypeAliasOrBuilder getTypeAliasOrBuilder(
        int index) {
      return typeAlias_.get(index);
    }

    public static final int TYPE_TABLE_FIELD_NUMBER = 30;
    private org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable typeTable_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
     */
    public boolean hasTypeTable() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable getTypeTable() {
      return typeTable_;
    }

    public static final int VERSION_REQUIREMENT_TABLE_FIELD_NUMBER = 32;
    private org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable versionRequirementTable_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirementTable version_requirement_table = 32;</code>
     */
    public boolean hasVersionRequirementTable() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirementTable version_requirement_table = 32;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable getVersionRequirementTable() {
      return versionRequirementTable_;
    }

    private void initFields() {
      function_ = java.util.Collections.emptyList();
      property_ = java.util.Collections.emptyList();
      typeAlias_ = java.util.Collections.emptyList();
      typeTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.getDefaultInstance();
      versionRequirementTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getFunctionCount(); i++) {
        if (!getFunction(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getPropertyCount(); i++) {
        if (!getProperty(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getTypeAliasCount(); i++) {
        if (!getTypeAlias(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasTypeTable()) {
        if (!getTypeTable().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!extensionsAreInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite
        .ExtendableMessage<org.jetbrains.kotlin.metadata.ProtoBuf.Package>.ExtensionWriter extensionWriter =
          newExtensionWriter();
      for (int i = 0; i < function_.size(); i++) {
        output.writeMessage(3, function_.get(i));
      }
      for (int i = 0; i < property_.size(); i++) {
        output.writeMessage(4, property_.get(i));
      }
      for (int i = 0; i < typeAlias_.size(); i++) {
        output.writeMessage(5, typeAlias_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(30, typeTable_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(32, versionRequirementTable_);
      }
      extensionWriter.writeUntil(200, output);
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      for (int i = 0; i < function_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, function_.get(i));
      }
      for (int i = 0; i < property_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, property_.get(i));
      }
      for (int i = 0; i < typeAlias_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, typeAlias_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(30, typeTable_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(32, versionRequirementTable_);
      }
      size += extensionsSerializedSize();
      size += unknownFields.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.metadata.ProtoBuf.Package parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Package parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Package parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Package parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Package parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Package parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Package parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Package parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Package parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Package parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.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.metadata.ProtoBuf.Package prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        function_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        property_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        typeAlias_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        typeTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        versionRequirementTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

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

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

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.Package buildPartial() {
        org.jetbrains.kotlin.metadata.ProtoBuf.Package result = new org.jetbrains.kotlin.metadata.ProtoBuf.Package(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          function_ = java.util.Collections.unmodifiableList(function_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.function_ = function_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          property_ = java.util.Collections.unmodifiableList(property_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.property_ = property_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          typeAlias_ = java.util.Collections.unmodifiableList(typeAlias_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.typeAlias_ = typeAlias_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000001;
        }
        result.typeTable_ = typeTable_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000002;
        }
        result.versionRequirementTable_ = versionRequirementTable_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.metadata.ProtoBuf.Package other) {
        if (other == org.jetbrains.kotlin.metadata.ProtoBuf.Package.getDefaultInstance()) return this;
        if (!other.function_.isEmpty()) {
          if (function_.isEmpty()) {
            function_ = other.function_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureFunctionIsMutable();
            function_.addAll(other.function_);
          }
          
        }
        if (!other.property_.isEmpty()) {
          if (property_.isEmpty()) {
            property_ = other.property_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensurePropertyIsMutable();
            property_.addAll(other.property_);
          }
          
        }
        if (!other.typeAlias_.isEmpty()) {
          if (typeAlias_.isEmpty()) {
            typeAlias_ = other.typeAlias_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureTypeAliasIsMutable();
            typeAlias_.addAll(other.typeAlias_);
          }
          
        }
        if (other.hasTypeTable()) {
          mergeTypeTable(other.getTypeTable());
        }
        if (other.hasVersionRequirementTable()) {
          mergeVersionRequirementTable(other.getVersionRequirementTable());
        }
        this.mergeExtensionFields(other);
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getFunctionCount(); i++) {
          if (!getFunction(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getPropertyCount(); i++) {
          if (!getProperty(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getTypeAliasCount(); i++) {
          if (!getTypeAlias(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasTypeTable()) {
          if (!getTypeTable().isInitialized()) {
            
            return false;
          }
        }
        if (!extensionsAreInitialized()) {
          
          return false;
        }
        return true;
      }

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

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Function> function_ =
        java.util.Collections.emptyList();
      private void ensureFunctionIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          function_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Function>(function_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 3;</code>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Function> getFunctionList() {
        return java.util.Collections.unmodifiableList(function_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 3;</code>
       */
      public int getFunctionCount() {
        return function_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 3;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Function getFunction(int index) {
        return function_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 3;</code>
       */
      public Builder setFunction(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Function value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFunctionIsMutable();
        function_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 3;</code>
       */
      public Builder setFunction(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Function.Builder builderForValue) {
        ensureFunctionIsMutable();
        function_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 3;</code>
       */
      public Builder addFunction(org.jetbrains.kotlin.metadata.ProtoBuf.Function value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFunctionIsMutable();
        function_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 3;</code>
       */
      public Builder addFunction(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Function value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFunctionIsMutable();
        function_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 3;</code>
       */
      public Builder addFunction(
          org.jetbrains.kotlin.metadata.ProtoBuf.Function.Builder builderForValue) {
        ensureFunctionIsMutable();
        function_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 3;</code>
       */
      public Builder addFunction(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Function.Builder builderForValue) {
        ensureFunctionIsMutable();
        function_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 3;</code>
       */
      public Builder addAllFunction(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.ProtoBuf.Function> values) {
        ensureFunctionIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, function_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 3;</code>
       */
      public Builder clearFunction() {
        function_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Function function = 3;</code>
       */
      public Builder removeFunction(int index) {
        ensureFunctionIsMutable();
        function_.remove(index);

        return this;
      }

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Property> property_ =
        java.util.Collections.emptyList();
      private void ensurePropertyIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          property_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Property>(property_);
          bitField0_ |= 0x00000002;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 4;</code>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Property> getPropertyList() {
        return java.util.Collections.unmodifiableList(property_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 4;</code>
       */
      public int getPropertyCount() {
        return property_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 4;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Property getProperty(int index) {
        return property_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 4;</code>
       */
      public Builder setProperty(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Property value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensurePropertyIsMutable();
        property_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 4;</code>
       */
      public Builder setProperty(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Property.Builder builderForValue) {
        ensurePropertyIsMutable();
        property_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 4;</code>
       */
      public Builder addProperty(org.jetbrains.kotlin.metadata.ProtoBuf.Property value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensurePropertyIsMutable();
        property_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 4;</code>
       */
      public Builder addProperty(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Property value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensurePropertyIsMutable();
        property_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 4;</code>
       */
      public Builder addProperty(
          org.jetbrains.kotlin.metadata.ProtoBuf.Property.Builder builderForValue) {
        ensurePropertyIsMutable();
        property_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 4;</code>
       */
      public Builder addProperty(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Property.Builder builderForValue) {
        ensurePropertyIsMutable();
        property_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 4;</code>
       */
      public Builder addAllProperty(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.ProtoBuf.Property> values) {
        ensurePropertyIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, property_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 4;</code>
       */
      public Builder clearProperty() {
        property_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Property property = 4;</code>
       */
      public Builder removeProperty(int index) {
        ensurePropertyIsMutable();
        property_.remove(index);

        return this;
      }

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias> typeAlias_ =
        java.util.Collections.emptyList();
      private void ensureTypeAliasIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          typeAlias_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias>(typeAlias_);
          bitField0_ |= 0x00000004;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 5;</code>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias> getTypeAliasList() {
        return java.util.Collections.unmodifiableList(typeAlias_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 5;</code>
       */
      public int getTypeAliasCount() {
        return typeAlias_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 5;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias getTypeAlias(int index) {
        return typeAlias_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 5;</code>
       */
      public Builder setTypeAlias(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeAliasIsMutable();
        typeAlias_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 5;</code>
       */
      public Builder setTypeAlias(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias.Builder builderForValue) {
        ensureTypeAliasIsMutable();
        typeAlias_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 5;</code>
       */
      public Builder addTypeAlias(org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeAliasIsMutable();
        typeAlias_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 5;</code>
       */
      public Builder addTypeAlias(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeAliasIsMutable();
        typeAlias_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 5;</code>
       */
      public Builder addTypeAlias(
          org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias.Builder builderForValue) {
        ensureTypeAliasIsMutable();
        typeAlias_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 5;</code>
       */
      public Builder addTypeAlias(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias.Builder builderForValue) {
        ensureTypeAliasIsMutable();
        typeAlias_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 5;</code>
       */
      public Builder addAllTypeAlias(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias> values) {
        ensureTypeAliasIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, typeAlias_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 5;</code>
       */
      public Builder clearTypeAlias() {
        typeAlias_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.TypeAlias type_alias = 5;</code>
       */
      public Builder removeTypeAlias(int index) {
        ensureTypeAliasIsMutable();
        typeAlias_.remove(index);

        return this;
      }

      private org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable typeTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
       */
      public boolean hasTypeTable() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable getTypeTable() {
        return typeTable_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
       */
      public Builder setTypeTable(org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        typeTable_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
       */
      public Builder setTypeTable(
          org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.Builder builderForValue) {
        typeTable_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
       */
      public Builder mergeTypeTable(org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            typeTable_ != org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.getDefaultInstance()) {
          typeTable_ =
            org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.newBuilder(typeTable_).mergeFrom(value).buildPartial();
        } else {
          typeTable_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
       */
      public Builder clearTypeTable() {
        typeTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.getDefaultInstance();

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

      private org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable versionRequirementTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirementTable version_requirement_table = 32;</code>
       */
      public boolean hasVersionRequirementTable() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirementTable version_requirement_table = 32;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable getVersionRequirementTable() {
        return versionRequirementTable_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirementTable version_requirement_table = 32;</code>
       */
      public Builder setVersionRequirementTable(org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        versionRequirementTable_ = value;

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirementTable version_requirement_table = 32;</code>
       */
      public Builder setVersionRequirementTable(
          org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.Builder builderForValue) {
        versionRequirementTable_ = builderForValue.build();

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirementTable version_requirement_table = 32;</code>
       */
      public Builder mergeVersionRequirementTable(org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable value) {
        if (((bitField0_ & 0x00000010) == 0x00000010) &&
            versionRequirementTable_ != org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.getDefaultInstance()) {
          versionRequirementTable_ =
            org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.newBuilder(versionRequirementTable_).mergeFrom(value).buildPartial();
        } else {
          versionRequirementTable_ = value;
        }

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirementTable version_requirement_table = 32;</code>
       */
      public Builder clearVersionRequirementTable() {
        versionRequirementTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.getDefaultInstance();

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

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

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

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

  public interface TypeTableOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.TypeTable)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Type type = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Type> 
        getTypeList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Type type = 1;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Type getType(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Type type = 1;</code>
     */
    int getTypeCount();

    /**
     * <code>optional int32 first_nullable = 2 [default = -1];</code>
     *
     * <pre>
     * Index starting from which all types are nullable, or nothing if all types in this table are non-null.
     * Note that the 'nullable' field of Type messages is ignored and shouldn't be written because it wastes too much space
     * </pre>
     */
    boolean hasFirstNullable();
    /**
     * <code>optional int32 first_nullable = 2 [default = -1];</code>
     *
     * <pre>
     * Index starting from which all types are nullable, or nothing if all types in this table are non-null.
     * Note that the 'nullable' field of Type messages is ignored and shouldn't be written because it wastes too much space
     * </pre>
     */
    int getFirstNullable();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.TypeTable}
   */
  public static final class TypeTable extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.TypeTable)
      TypeTableOrBuilder {
    // Use TypeTable.newBuilder() to construct.
    private TypeTable(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private TypeTable(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public TypeTable getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private TypeTable(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                type_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Type>();
                mutable_bitField0_ |= 0x00000001;
              }
              type_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Type.PARSER, extensionRegistry));
              break;
            }
            case 16: {
              bitField0_ |= 0x00000001;
              firstNullable_ = input.readInt32();
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          type_ = java.util.Collections.unmodifiableList(type_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<TypeTable> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<TypeTable>() {
      public TypeTable parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new TypeTable(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<TypeTable> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int TYPE_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Type> type_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Type type = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Type> getTypeList() {
      return type_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Type type = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.TypeOrBuilder> 
        getTypeOrBuilderList() {
      return type_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Type type = 1;</code>
     */
    public int getTypeCount() {
      return type_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Type type = 1;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Type getType(int index) {
      return type_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Type type = 1;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.TypeOrBuilder getTypeOrBuilder(
        int index) {
      return type_.get(index);
    }

    public static final int FIRST_NULLABLE_FIELD_NUMBER = 2;
    private int firstNullable_;
    /**
     * <code>optional int32 first_nullable = 2 [default = -1];</code>
     *
     * <pre>
     * Index starting from which all types are nullable, or nothing if all types in this table are non-null.
     * Note that the 'nullable' field of Type messages is ignored and shouldn't be written because it wastes too much space
     * </pre>
     */
    public boolean hasFirstNullable() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int32 first_nullable = 2 [default = -1];</code>
     *
     * <pre>
     * Index starting from which all types are nullable, or nothing if all types in this table are non-null.
     * Note that the 'nullable' field of Type messages is ignored and shouldn't be written because it wastes too much space
     * </pre>
     */
    public int getFirstNullable() {
      return firstNullable_;
    }

    private void initFields() {
      type_ = java.util.Collections.emptyList();
      firstNullable_ = -1;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < type_.size(); i++) {
        output.writeMessage(1, type_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(2, firstNullable_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      for (int i = 0; i < type_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, type_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(2, firstNullable_);
      }
      size += unknownFields.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.metadata.ProtoBuf.TypeTable parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.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.metadata.ProtoBuf.TypeTable prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.metadata.TypeTable}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.TypeTable)
        org.jetbrains.kotlin.metadata.ProtoBuf.TypeTableOrBuilder {
      // Construct using org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        type_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        firstNullable_ = -1;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable getDefaultInstanceForType() {
        return org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.getDefaultInstance();
      }

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

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

      public Builder mergeFrom(org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable other) {
        if (other == org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.getDefaultInstance()) return this;
        if (!other.type_.isEmpty()) {
          if (type_.isEmpty()) {
            type_ = other.type_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureTypeIsMutable();
            type_.addAll(other.type_);
          }
          
        }
        if (other.hasFirstNullable()) {
          setFirstNullable(other.getFirstNullable());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

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

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Type> type_ =
        java.util.Collections.emptyList();
      private void ensureTypeIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          type_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Type>(type_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Type type = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Type> getTypeList() {
        return java.util.Collections.unmodifiableList(type_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Type type = 1;</code>
       */
      public int getTypeCount() {
        return type_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Type type = 1;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Type getType(int index) {
        return type_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Type type = 1;</code>
       */
      public Builder setType(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeIsMutable();
        type_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Type type = 1;</code>
       */
      public Builder setType(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder builderForValue) {
        ensureTypeIsMutable();
        type_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Type type = 1;</code>
       */
      public Builder addType(org.jetbrains.kotlin.metadata.ProtoBuf.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeIsMutable();
        type_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Type type = 1;</code>
       */
      public Builder addType(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeIsMutable();
        type_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Type type = 1;</code>
       */
      public Builder addType(
          org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder builderForValue) {
        ensureTypeIsMutable();
        type_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Type type = 1;</code>
       */
      public Builder addType(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder builderForValue) {
        ensureTypeIsMutable();
        type_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Type type = 1;</code>
       */
      public Builder addAllType(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.ProtoBuf.Type> values) {
        ensureTypeIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, type_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Type type = 1;</code>
       */
      public Builder clearType() {
        type_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Type type = 1;</code>
       */
      public Builder removeType(int index) {
        ensureTypeIsMutable();
        type_.remove(index);

        return this;
      }

      private int firstNullable_ = -1;
      /**
       * <code>optional int32 first_nullable = 2 [default = -1];</code>
       *
       * <pre>
       * Index starting from which all types are nullable, or nothing if all types in this table are non-null.
       * Note that the 'nullable' field of Type messages is ignored and shouldn't be written because it wastes too much space
       * </pre>
       */
      public boolean hasFirstNullable() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int32 first_nullable = 2 [default = -1];</code>
       *
       * <pre>
       * Index starting from which all types are nullable, or nothing if all types in this table are non-null.
       * Note that the 'nullable' field of Type messages is ignored and shouldn't be written because it wastes too much space
       * </pre>
       */
      public int getFirstNullable() {
        return firstNullable_;
      }
      /**
       * <code>optional int32 first_nullable = 2 [default = -1];</code>
       *
       * <pre>
       * Index starting from which all types are nullable, or nothing if all types in this table are non-null.
       * Note that the 'nullable' field of Type messages is ignored and shouldn't be written because it wastes too much space
       * </pre>
       */
      public Builder setFirstNullable(int value) {
        bitField0_ |= 0x00000002;
        firstNullable_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 first_nullable = 2 [default = -1];</code>
       *
       * <pre>
       * Index starting from which all types are nullable, or nothing if all types in this table are non-null.
       * Note that the 'nullable' field of Type messages is ignored and shouldn't be written because it wastes too much space
       * </pre>
       */
      public Builder clearFirstNullable() {
        bitField0_ = (bitField0_ & ~0x00000002);
        firstNullable_ = -1;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.metadata.TypeTable)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.metadata.TypeTable)
  }

  public interface ConstructorOrBuilder extends 
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.Constructor)
       org.jetbrains.kotlin.protobuf.GeneratedMessageLite.
            ExtendableMessageOrBuilder<Constructor> {

    /**
     * <code>optional int32 flags = 1 [default = 6];</code>
     *
     * <pre>
     *hasAnnotations
     *Visibility
     *isSecondary
     * </pre>
     */
    boolean hasFlags();
    /**
     * <code>optional int32 flags = 1 [default = 6];</code>
     *
     * <pre>
     *hasAnnotations
     *Visibility
     *isSecondary
     * </pre>
     */
    int getFlags();

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 2;</code>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter> 
        getValueParameterList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 2;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter getValueParameter(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 2;</code>
     */
    int getValueParameterCount();

    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    java.util.List<java.lang.Integer> getVersionRequirementList();
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    int getVersionRequirementCount();
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    int getVersionRequirement(int index);
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.Constructor}
   */
  public static final class Constructor extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableMessage<
        Constructor> implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.Constructor)
      ConstructorOrBuilder {
    // Use Constructor.newBuilder() to construct.
    private Constructor(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableBuilder<org.jetbrains.kotlin.metadata.ProtoBuf.Constructor, ?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Constructor(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Constructor getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Constructor(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              flags_ = input.readInt32();
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                valueParameter_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter>();
                mutable_bitField0_ |= 0x00000002;
              }
              valueParameter_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.PARSER, extensionRegistry));
              break;
            }
            case 248: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                versionRequirement_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              versionRequirement_.add(input.readInt32());
              break;
            }
            case 250: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                versionRequirement_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              while (input.getBytesUntilLimit() > 0) {
                versionRequirement_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          valueParameter_ = java.util.Collections.unmodifiableList(valueParameter_);
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          versionRequirement_ = java.util.Collections.unmodifiableList(versionRequirement_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Constructor> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Constructor>() {
      public Constructor parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Constructor(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<Constructor> getParserForType() {
      return PARSER;
    }

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

    public static final int VALUE_PARAMETER_FIELD_NUMBER = 2;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter> valueParameter_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 2;</code>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter> getValueParameterList() {
      return valueParameter_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 2;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameterOrBuilder> 
        getValueParameterOrBuilderList() {
      return valueParameter_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 2;</code>
     */
    public int getValueParameterCount() {
      return valueParameter_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 2;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter getValueParameter(int index) {
      return valueParameter_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 2;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameterOrBuilder getValueParameterOrBuilder(
        int index) {
      return valueParameter_.get(index);
    }

    public static final int VERSION_REQUIREMENT_FIELD_NUMBER = 31;
    private java.util.List<java.lang.Integer> versionRequirement_;
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    public java.util.List<java.lang.Integer>
        getVersionRequirementList() {
      return versionRequirement_;
    }
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    public int getVersionRequirementCount() {
      return versionRequirement_.size();
    }
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    public int getVersionRequirement(int index) {
      return versionRequirement_.get(index);
    }

    private void initFields() {
      flags_ = 6;
      valueParameter_ = java.util.Collections.emptyList();
      versionRequirement_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite
        .ExtendableMessage<org.jetbrains.kotlin.metadata.ProtoBuf.Constructor>.ExtensionWriter extensionWriter =
          newExtensionWriter();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, flags_);
      }
      for (int i = 0; i < valueParameter_.size(); i++) {
        output.writeMessage(2, valueParameter_.get(i));
      }
      for (int i = 0; i < versionRequirement_.size(); i++) {
        output.writeInt32(31, versionRequirement_.get(i));
      }
      extensionWriter.writeUntil(19000, output);
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, flags_);
      }
      for (int i = 0; i < valueParameter_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, valueParameter_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < versionRequirement_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(versionRequirement_.get(i));
        }
        size += dataSize;
        size += 2 * getVersionRequirementList().size();
      }
      size += extensionsSerializedSize();
      size += unknownFields.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.metadata.ProtoBuf.Constructor parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Constructor parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Constructor parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Constructor parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Constructor parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Constructor parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Constructor parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Constructor parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Constructor parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Constructor parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.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.metadata.ProtoBuf.Constructor prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.metadata.Constructor}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableBuilder<
          org.jetbrains.kotlin.metadata.ProtoBuf.Constructor, Builder> implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.Constructor)
        org.jetbrains.kotlin.metadata.ProtoBuf.ConstructorOrBuilder {
      // Construct using org.jetbrains.kotlin.metadata.ProtoBuf.Constructor.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        flags_ = 6;
        bitField0_ = (bitField0_ & ~0x00000001);
        valueParameter_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        versionRequirement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

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

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.Constructor buildPartial() {
        org.jetbrains.kotlin.metadata.ProtoBuf.Constructor result = new org.jetbrains.kotlin.metadata.ProtoBuf.Constructor(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.flags_ = flags_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          valueParameter_ = java.util.Collections.unmodifiableList(valueParameter_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.valueParameter_ = valueParameter_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          versionRequirement_ = java.util.Collections.unmodifiableList(versionRequirement_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.versionRequirement_ = versionRequirement_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.metadata.ProtoBuf.Constructor other) {
        if (other == org.jetbrains.kotlin.metadata.ProtoBuf.Constructor.getDefaultInstance()) return this;
        if (other.hasFlags()) {
          setFlags(other.getFlags());
        }
        if (!other.valueParameter_.isEmpty()) {
          if (valueParameter_.isEmpty()) {
            valueParameter_ = other.valueParameter_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureValueParameterIsMutable();
            valueParameter_.addAll(other.valueParameter_);
          }
          
        }
        if (!other.versionRequirement_.isEmpty()) {
          if (versionRequirement_.isEmpty()) {
            versionRequirement_ = other.versionRequirement_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureVersionRequirementIsMutable();
            versionRequirement_.addAll(other.versionRequirement_);
          }
          
        }
        this.mergeExtensionFields(other);
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

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

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

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter> valueParameter_ =
        java.util.Collections.emptyList();
      private void ensureValueParameterIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          valueParameter_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter>(valueParameter_);
          bitField0_ |= 0x00000002;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 2;</code>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter> getValueParameterList() {
        return java.util.Collections.unmodifiableList(valueParameter_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 2;</code>
       */
      public int getValueParameterCount() {
        return valueParameter_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 2;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter getValueParameter(int index) {
        return valueParameter_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 2;</code>
       */
      public Builder setValueParameter(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureValueParameterIsMutable();
        valueParameter_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 2;</code>
       */
      public Builder setValueParameter(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.Builder builderForValue) {
        ensureValueParameterIsMutable();
        valueParameter_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 2;</code>
       */
      public Builder addValueParameter(org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureValueParameterIsMutable();
        valueParameter_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 2;</code>
       */
      public Builder addValueParameter(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureValueParameterIsMutable();
        valueParameter_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 2;</code>
       */
      public Builder addValueParameter(
          org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.Builder builderForValue) {
        ensureValueParameterIsMutable();
        valueParameter_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 2;</code>
       */
      public Builder addValueParameter(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.Builder builderForValue) {
        ensureValueParameterIsMutable();
        valueParameter_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 2;</code>
       */
      public Builder addAllValueParameter(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter> values) {
        ensureValueParameterIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, valueParameter_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 2;</code>
       */
      public Builder clearValueParameter() {
        valueParameter_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 2;</code>
       */
      public Builder removeValueParameter(int index) {
        ensureValueParameterIsMutable();
        valueParameter_.remove(index);

        return this;
      }

      private java.util.List<java.lang.Integer> versionRequirement_ = java.util.Collections.emptyList();
      private void ensureVersionRequirementIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          versionRequirement_ = new java.util.ArrayList<java.lang.Integer>(versionRequirement_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public java.util.List<java.lang.Integer>
          getVersionRequirementList() {
        return java.util.Collections.unmodifiableList(versionRequirement_);
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public int getVersionRequirementCount() {
        return versionRequirement_.size();
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public int getVersionRequirement(int index) {
        return versionRequirement_.get(index);
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public Builder setVersionRequirement(
          int index, int value) {
        ensureVersionRequirementIsMutable();
        versionRequirement_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public Builder addVersionRequirement(int value) {
        ensureVersionRequirementIsMutable();
        versionRequirement_.add(value);
        
        return this;
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public Builder addAllVersionRequirement(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureVersionRequirementIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, versionRequirement_);
        
        return this;
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public Builder clearVersionRequirement() {
        versionRequirement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        
        return this;
      }

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

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

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

  public interface FunctionOrBuilder extends 
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.Function)
       org.jetbrains.kotlin.protobuf.GeneratedMessageLite.
            ExtendableMessageOrBuilder<Function> {

    /**
     * <code>optional int32 flags = 9 [default = 6];</code>
     *
     * <pre>
     *hasAnnotations
     *Visibility
     *Modality
     *MemberKind
     *isOperator
     *isInfix
     *isInline
     *isTailrec
     *isExternal
     *isSuspend
     *isExpect
     * </pre>
     */
    boolean hasFlags();
    /**
     * <code>optional int32 flags = 9 [default = 6];</code>
     *
     * <pre>
     *hasAnnotations
     *Visibility
     *Modality
     *MemberKind
     *isOperator
     *isInfix
     *isInline
     *isTailrec
     *isExternal
     *isSuspend
     *isExpect
     * </pre>
     */
    int getFlags();

    /**
     * <code>optional int32 old_flags = 1 [default = 6];</code>
     */
    boolean hasOldFlags();
    /**
     * <code>optional int32 old_flags = 1 [default = 6];</code>
     */
    int getOldFlags();

    /**
     * <code>required int32 name = 2;</code>
     */
    boolean hasName();
    /**
     * <code>required int32 name = 2;</code>
     */
    int getName();

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type return_type = 3;</code>
     */
    boolean hasReturnType();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type return_type = 3;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Type getReturnType();

    /**
     * <code>optional int32 return_type_id = 7;</code>
     */
    boolean hasReturnTypeId();
    /**
     * <code>optional int32 return_type_id = 7;</code>
     */
    int getReturnTypeId();

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

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

    /**
     * <code>optional int32 receiver_type_id = 8;</code>
     */
    boolean hasReceiverTypeId();
    /**
     * <code>optional int32 receiver_type_id = 8;</code>
     */
    int getReceiverTypeId();

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 6;</code>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter> 
        getValueParameterList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 6;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter getValueParameter(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 6;</code>
     */
    int getValueParameterCount();

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
     */
    boolean hasTypeTable();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable getTypeTable();

    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    java.util.List<java.lang.Integer> getVersionRequirementList();
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    int getVersionRequirementCount();
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    int getVersionRequirement(int index);

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Contract contract = 32;</code>
     */
    boolean hasContract();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Contract contract = 32;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Contract getContract();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.Function}
   */
  public static final class Function extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableMessage<
        Function> implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.Function)
      FunctionOrBuilder {
    // Use Function.newBuilder() to construct.
    private Function(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableBuilder<org.jetbrains.kotlin.metadata.ProtoBuf.Function, ?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Function(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Function getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Function(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000002;
              oldFlags_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000004;
              name_ = input.readInt32();
              break;
            }
            case 26: {
              org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = returnType_.toBuilder();
              }
              returnType_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Type.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(returnType_);
                returnType_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                typeParameter_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter>();
                mutable_bitField0_ |= 0x00000020;
              }
              typeParameter_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter.PARSER, extensionRegistry));
              break;
            }
            case 42: {
              org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder subBuilder = null;
              if (((bitField0_ & 0x00000020) == 0x00000020)) {
                subBuilder = receiverType_.toBuilder();
              }
              receiverType_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Type.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(receiverType_);
                receiverType_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000020;
              break;
            }
            case 50: {
              if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                valueParameter_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter>();
                mutable_bitField0_ |= 0x00000100;
              }
              valueParameter_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.PARSER, extensionRegistry));
              break;
            }
            case 56: {
              bitField0_ |= 0x00000010;
              returnTypeId_ = input.readInt32();
              break;
            }
            case 64: {
              bitField0_ |= 0x00000040;
              receiverTypeId_ = input.readInt32();
              break;
            }
            case 72: {
              bitField0_ |= 0x00000001;
              flags_ = input.readInt32();
              break;
            }
            case 242: {
              org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.Builder subBuilder = null;
              if (((bitField0_ & 0x00000080) == 0x00000080)) {
                subBuilder = typeTable_.toBuilder();
              }
              typeTable_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(typeTable_);
                typeTable_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000080;
              break;
            }
            case 248: {
              if (!((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
                versionRequirement_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000400;
              }
              versionRequirement_.add(input.readInt32());
              break;
            }
            case 250: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000400) == 0x00000400) && input.getBytesUntilLimit() > 0) {
                versionRequirement_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000400;
              }
              while (input.getBytesUntilLimit() > 0) {
                versionRequirement_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 258: {
              org.jetbrains.kotlin.metadata.ProtoBuf.Contract.Builder subBuilder = null;
              if (((bitField0_ & 0x00000100) == 0x00000100)) {
                subBuilder = contract_.toBuilder();
              }
              contract_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Contract.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(contract_);
                contract_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000100;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          typeParameter_ = java.util.Collections.unmodifiableList(typeParameter_);
        }
        if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
          valueParameter_ = java.util.Collections.unmodifiableList(valueParameter_);
        }
        if (((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
          versionRequirement_ = java.util.Collections.unmodifiableList(versionRequirement_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Function> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Function>() {
      public Function parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Function(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<Function> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int FLAGS_FIELD_NUMBER = 9;
    private int flags_;
    /**
     * <code>optional int32 flags = 9 [default = 6];</code>
     *
     * <pre>
     *hasAnnotations
     *Visibility
     *Modality
     *MemberKind
     *isOperator
     *isInfix
     *isInline
     *isTailrec
     *isExternal
     *isSuspend
     *isExpect
     * </pre>
     */
    public boolean hasFlags() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int32 flags = 9 [default = 6];</code>
     *
     * <pre>
     *hasAnnotations
     *Visibility
     *Modality
     *MemberKind
     *isOperator
     *isInfix
     *isInline
     *isTailrec
     *isExternal
     *isSuspend
     *isExpect
     * </pre>
     */
    public int getFlags() {
      return flags_;
    }

    public static final int OLD_FLAGS_FIELD_NUMBER = 1;
    private int oldFlags_;
    /**
     * <code>optional int32 old_flags = 1 [default = 6];</code>
     */
    public boolean hasOldFlags() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int32 old_flags = 1 [default = 6];</code>
     */
    public int getOldFlags() {
      return oldFlags_;
    }

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

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

    public static final int RETURN_TYPE_ID_FIELD_NUMBER = 7;
    private int returnTypeId_;
    /**
     * <code>optional int32 return_type_id = 7;</code>
     */
    public boolean hasReturnTypeId() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional int32 return_type_id = 7;</code>
     */
    public int getReturnTypeId() {
      return returnTypeId_;
    }

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

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

    public static final int RECEIVER_TYPE_ID_FIELD_NUMBER = 8;
    private int receiverTypeId_;
    /**
     * <code>optional int32 receiver_type_id = 8;</code>
     */
    public boolean hasReceiverTypeId() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional int32 receiver_type_id = 8;</code>
     */
    public int getReceiverTypeId() {
      return receiverTypeId_;
    }

    public static final int VALUE_PARAMETER_FIELD_NUMBER = 6;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter> valueParameter_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 6;</code>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter> getValueParameterList() {
      return valueParameter_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 6;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameterOrBuilder> 
        getValueParameterOrBuilderList() {
      return valueParameter_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 6;</code>
     */
    public int getValueParameterCount() {
      return valueParameter_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 6;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter getValueParameter(int index) {
      return valueParameter_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 6;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameterOrBuilder getValueParameterOrBuilder(
        int index) {
      return valueParameter_.get(index);
    }

    public static final int TYPE_TABLE_FIELD_NUMBER = 30;
    private org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable typeTable_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
     */
    public boolean hasTypeTable() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable getTypeTable() {
      return typeTable_;
    }

    public static final int VERSION_REQUIREMENT_FIELD_NUMBER = 31;
    private java.util.List<java.lang.Integer> versionRequirement_;
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    public java.util.List<java.lang.Integer>
        getVersionRequirementList() {
      return versionRequirement_;
    }
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    public int getVersionRequirementCount() {
      return versionRequirement_.size();
    }
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    public int getVersionRequirement(int index) {
      return versionRequirement_.get(index);
    }

    public static final int CONTRACT_FIELD_NUMBER = 32;
    private org.jetbrains.kotlin.metadata.ProtoBuf.Contract contract_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Contract contract = 32;</code>
     */
    public boolean hasContract() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Contract contract = 32;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Contract getContract() {
      return contract_;
    }

    private void initFields() {
      flags_ = 6;
      oldFlags_ = 6;
      name_ = 0;
      returnType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
      returnTypeId_ = 0;
      typeParameter_ = java.util.Collections.emptyList();
      receiverType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
      receiverTypeId_ = 0;
      valueParameter_ = java.util.Collections.emptyList();
      typeTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.getDefaultInstance();
      versionRequirement_ = java.util.Collections.emptyList();
      contract_ = org.jetbrains.kotlin.metadata.ProtoBuf.Contract.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasReturnType()) {
        if (!getReturnType().isInitialized()) {
          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 (hasTypeTable()) {
        if (!getTypeTable().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasContract()) {
        if (!getContract().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!extensionsAreInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite
        .ExtendableMessage<org.jetbrains.kotlin.metadata.ProtoBuf.Function>.ExtensionWriter extensionWriter =
          newExtensionWriter();
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(1, oldFlags_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(2, name_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(3, returnType_);
      }
      for (int i = 0; i < typeParameter_.size(); i++) {
        output.writeMessage(4, typeParameter_.get(i));
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeMessage(5, receiverType_);
      }
      for (int i = 0; i < valueParameter_.size(); i++) {
        output.writeMessage(6, valueParameter_.get(i));
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt32(7, returnTypeId_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeInt32(8, receiverTypeId_);
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(9, flags_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeMessage(30, typeTable_);
      }
      for (int i = 0; i < versionRequirement_.size(); i++) {
        output.writeInt32(31, versionRequirement_.get(i));
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeMessage(32, contract_);
      }
      extensionWriter.writeUntil(19000, output);
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, oldFlags_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(2, name_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, returnType_);
      }
      for (int i = 0; i < typeParameter_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, typeParameter_.get(i));
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, receiverType_);
      }
      for (int i = 0; i < valueParameter_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(6, valueParameter_.get(i));
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(7, returnTypeId_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(8, receiverTypeId_);
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(9, flags_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(30, typeTable_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < versionRequirement_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(versionRequirement_.get(i));
        }
        size += dataSize;
        size += 2 * getVersionRequirementList().size();
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(32, contract_);
      }
      size += extensionsSerializedSize();
      size += unknownFields.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.metadata.ProtoBuf.Function parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Function parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Function parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Function parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Function parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Function parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Function parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Function parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Function parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Function parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.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.metadata.ProtoBuf.Function prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.metadata.Function}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableBuilder<
          org.jetbrains.kotlin.metadata.ProtoBuf.Function, Builder> implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.Function)
        org.jetbrains.kotlin.metadata.ProtoBuf.FunctionOrBuilder {
      // Construct using org.jetbrains.kotlin.metadata.ProtoBuf.Function.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        flags_ = 6;
        bitField0_ = (bitField0_ & ~0x00000001);
        oldFlags_ = 6;
        bitField0_ = (bitField0_ & ~0x00000002);
        name_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        returnType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        returnTypeId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        typeParameter_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        receiverType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000040);
        receiverTypeId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000080);
        valueParameter_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000100);
        typeTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000200);
        versionRequirement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000400);
        contract_ = org.jetbrains.kotlin.metadata.ProtoBuf.Contract.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000800);
        return this;
      }

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.Function getDefaultInstanceForType() {
        return org.jetbrains.kotlin.metadata.ProtoBuf.Function.getDefaultInstance();
      }

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.Function buildPartial() {
        org.jetbrains.kotlin.metadata.ProtoBuf.Function result = new org.jetbrains.kotlin.metadata.ProtoBuf.Function(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.oldFlags_ = oldFlags_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.returnType_ = returnType_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.returnTypeId_ = returnTypeId_;
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          typeParameter_ = java.util.Collections.unmodifiableList(typeParameter_);
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.typeParameter_ = typeParameter_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000020;
        }
        result.receiverType_ = receiverType_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000040;
        }
        result.receiverTypeId_ = receiverTypeId_;
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          valueParameter_ = java.util.Collections.unmodifiableList(valueParameter_);
          bitField0_ = (bitField0_ & ~0x00000100);
        }
        result.valueParameter_ = valueParameter_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000080;
        }
        result.typeTable_ = typeTable_;
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          versionRequirement_ = java.util.Collections.unmodifiableList(versionRequirement_);
          bitField0_ = (bitField0_ & ~0x00000400);
        }
        result.versionRequirement_ = versionRequirement_;
        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
          to_bitField0_ |= 0x00000100;
        }
        result.contract_ = contract_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.metadata.ProtoBuf.Function other) {
        if (other == org.jetbrains.kotlin.metadata.ProtoBuf.Function.getDefaultInstance()) return this;
        if (other.hasFlags()) {
          setFlags(other.getFlags());
        }
        if (other.hasOldFlags()) {
          setOldFlags(other.getOldFlags());
        }
        if (other.hasName()) {
          setName(other.getName());
        }
        if (other.hasReturnType()) {
          mergeReturnType(other.getReturnType());
        }
        if (other.hasReturnTypeId()) {
          setReturnTypeId(other.getReturnTypeId());
        }
        if (!other.typeParameter_.isEmpty()) {
          if (typeParameter_.isEmpty()) {
            typeParameter_ = other.typeParameter_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureTypeParameterIsMutable();
            typeParameter_.addAll(other.typeParameter_);
          }
          
        }
        if (other.hasReceiverType()) {
          mergeReceiverType(other.getReceiverType());
        }
        if (other.hasReceiverTypeId()) {
          setReceiverTypeId(other.getReceiverTypeId());
        }
        if (!other.valueParameter_.isEmpty()) {
          if (valueParameter_.isEmpty()) {
            valueParameter_ = other.valueParameter_;
            bitField0_ = (bitField0_ & ~0x00000100);
          } else {
            ensureValueParameterIsMutable();
            valueParameter_.addAll(other.valueParameter_);
          }
          
        }
        if (other.hasTypeTable()) {
          mergeTypeTable(other.getTypeTable());
        }
        if (!other.versionRequirement_.isEmpty()) {
          if (versionRequirement_.isEmpty()) {
            versionRequirement_ = other.versionRequirement_;
            bitField0_ = (bitField0_ & ~0x00000400);
          } else {
            ensureVersionRequirementIsMutable();
            versionRequirement_.addAll(other.versionRequirement_);
          }
          
        }
        if (other.hasContract()) {
          mergeContract(other.getContract());
        }
        this.mergeExtensionFields(other);
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasName()) {
          
          return false;
        }
        if (hasReturnType()) {
          if (!getReturnType().isInitialized()) {
            
            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 (hasTypeTable()) {
          if (!getTypeTable().isInitialized()) {
            
            return false;
          }
        }
        if (hasContract()) {
          if (!getContract().isInitialized()) {
            
            return false;
          }
        }
        if (!extensionsAreInitialized()) {
          
          return false;
        }
        return true;
      }

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

      private int flags_ = 6;
      /**
       * <code>optional int32 flags = 9 [default = 6];</code>
       *
       * <pre>
       *hasAnnotations
       *Visibility
       *Modality
       *MemberKind
       *isOperator
       *isInfix
       *isInline
       *isTailrec
       *isExternal
       *isSuspend
       *isExpect
       * </pre>
       */
      public boolean hasFlags() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int32 flags = 9 [default = 6];</code>
       *
       * <pre>
       *hasAnnotations
       *Visibility
       *Modality
       *MemberKind
       *isOperator
       *isInfix
       *isInline
       *isTailrec
       *isExternal
       *isSuspend
       *isExpect
       * </pre>
       */
      public int getFlags() {
        return flags_;
      }
      /**
       * <code>optional int32 flags = 9 [default = 6];</code>
       *
       * <pre>
       *hasAnnotations
       *Visibility
       *Modality
       *MemberKind
       *isOperator
       *isInfix
       *isInline
       *isTailrec
       *isExternal
       *isSuspend
       *isExpect
       * </pre>
       */
      public Builder setFlags(int value) {
        bitField0_ |= 0x00000001;
        flags_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 flags = 9 [default = 6];</code>
       *
       * <pre>
       *hasAnnotations
       *Visibility
       *Modality
       *MemberKind
       *isOperator
       *isInfix
       *isInline
       *isTailrec
       *isExternal
       *isSuspend
       *isExpect
       * </pre>
       */
      public Builder clearFlags() {
        bitField0_ = (bitField0_ & ~0x00000001);
        flags_ = 6;
        
        return this;
      }

      private int oldFlags_ = 6;
      /**
       * <code>optional int32 old_flags = 1 [default = 6];</code>
       */
      public boolean hasOldFlags() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int32 old_flags = 1 [default = 6];</code>
       */
      public int getOldFlags() {
        return oldFlags_;
      }
      /**
       * <code>optional int32 old_flags = 1 [default = 6];</code>
       */
      public Builder setOldFlags(int value) {
        bitField0_ |= 0x00000002;
        oldFlags_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 old_flags = 1 [default = 6];</code>
       */
      public Builder clearOldFlags() {
        bitField0_ = (bitField0_ & ~0x00000002);
        oldFlags_ = 6;
        
        return this;
      }

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

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

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type return_type = 3;</code>
       */
      public Builder setReturnType(
          org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder builderForValue) {
        returnType_ = builderForValue.build();

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

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type return_type = 3;</code>
       */
      public Builder clearReturnType() {
        returnType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();

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

      private int returnTypeId_ ;
      /**
       * <code>optional int32 return_type_id = 7;</code>
       */
      public boolean hasReturnTypeId() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional int32 return_type_id = 7;</code>
       */
      public int getReturnTypeId() {
        return returnTypeId_;
      }
      /**
       * <code>optional int32 return_type_id = 7;</code>
       */
      public Builder setReturnTypeId(int value) {
        bitField0_ |= 0x00000010;
        returnTypeId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 return_type_id = 7;</code>
       */
      public Builder clearReturnTypeId() {
        bitField0_ = (bitField0_ & ~0x00000010);
        returnTypeId_ = 0;
        
        return this;
      }

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter> typeParameter_ =
        java.util.Collections.emptyList();
      private void ensureTypeParameterIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          typeParameter_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter>(typeParameter_);
          bitField0_ |= 0x00000020;
         }
      }

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

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

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

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

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

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

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

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

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

        return this;
      }

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

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

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

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

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

      private int receiverTypeId_ ;
      /**
       * <code>optional int32 receiver_type_id = 8;</code>
       */
      public boolean hasReceiverTypeId() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional int32 receiver_type_id = 8;</code>
       */
      public int getReceiverTypeId() {
        return receiverTypeId_;
      }
      /**
       * <code>optional int32 receiver_type_id = 8;</code>
       */
      public Builder setReceiverTypeId(int value) {
        bitField0_ |= 0x00000080;
        receiverTypeId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 receiver_type_id = 8;</code>
       */
      public Builder clearReceiverTypeId() {
        bitField0_ = (bitField0_ & ~0x00000080);
        receiverTypeId_ = 0;
        
        return this;
      }

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter> valueParameter_ =
        java.util.Collections.emptyList();
      private void ensureValueParameterIsMutable() {
        if (!((bitField0_ & 0x00000100) == 0x00000100)) {
          valueParameter_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter>(valueParameter_);
          bitField0_ |= 0x00000100;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 6;</code>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter> getValueParameterList() {
        return java.util.Collections.unmodifiableList(valueParameter_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 6;</code>
       */
      public int getValueParameterCount() {
        return valueParameter_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 6;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter getValueParameter(int index) {
        return valueParameter_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 6;</code>
       */
      public Builder setValueParameter(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureValueParameterIsMutable();
        valueParameter_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 6;</code>
       */
      public Builder setValueParameter(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.Builder builderForValue) {
        ensureValueParameterIsMutable();
        valueParameter_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 6;</code>
       */
      public Builder addValueParameter(org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureValueParameterIsMutable();
        valueParameter_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 6;</code>
       */
      public Builder addValueParameter(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureValueParameterIsMutable();
        valueParameter_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 6;</code>
       */
      public Builder addValueParameter(
          org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.Builder builderForValue) {
        ensureValueParameterIsMutable();
        valueParameter_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 6;</code>
       */
      public Builder addValueParameter(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.Builder builderForValue) {
        ensureValueParameterIsMutable();
        valueParameter_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 6;</code>
       */
      public Builder addAllValueParameter(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter> values) {
        ensureValueParameterIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, valueParameter_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 6;</code>
       */
      public Builder clearValueParameter() {
        valueParameter_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000100);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.ValueParameter value_parameter = 6;</code>
       */
      public Builder removeValueParameter(int index) {
        ensureValueParameterIsMutable();
        valueParameter_.remove(index);

        return this;
      }

      private org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable typeTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
       */
      public boolean hasTypeTable() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable getTypeTable() {
        return typeTable_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
       */
      public Builder setTypeTable(org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        typeTable_ = value;

        bitField0_ |= 0x00000200;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
       */
      public Builder setTypeTable(
          org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.Builder builderForValue) {
        typeTable_ = builderForValue.build();

        bitField0_ |= 0x00000200;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
       */
      public Builder mergeTypeTable(org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable value) {
        if (((bitField0_ & 0x00000200) == 0x00000200) &&
            typeTable_ != org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.getDefaultInstance()) {
          typeTable_ =
            org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.newBuilder(typeTable_).mergeFrom(value).buildPartial();
        } else {
          typeTable_ = value;
        }

        bitField0_ |= 0x00000200;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.TypeTable type_table = 30;</code>
       */
      public Builder clearTypeTable() {
        typeTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.TypeTable.getDefaultInstance();

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

      private java.util.List<java.lang.Integer> versionRequirement_ = java.util.Collections.emptyList();
      private void ensureVersionRequirementIsMutable() {
        if (!((bitField0_ & 0x00000400) == 0x00000400)) {
          versionRequirement_ = new java.util.ArrayList<java.lang.Integer>(versionRequirement_);
          bitField0_ |= 0x00000400;
         }
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public java.util.List<java.lang.Integer>
          getVersionRequirementList() {
        return java.util.Collections.unmodifiableList(versionRequirement_);
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public int getVersionRequirementCount() {
        return versionRequirement_.size();
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public int getVersionRequirement(int index) {
        return versionRequirement_.get(index);
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public Builder setVersionRequirement(
          int index, int value) {
        ensureVersionRequirementIsMutable();
        versionRequirement_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public Builder addVersionRequirement(int value) {
        ensureVersionRequirementIsMutable();
        versionRequirement_.add(value);
        
        return this;
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public Builder addAllVersionRequirement(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureVersionRequirementIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, versionRequirement_);
        
        return this;
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public Builder clearVersionRequirement() {
        versionRequirement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000400);
        
        return this;
      }

      private org.jetbrains.kotlin.metadata.ProtoBuf.Contract contract_ = org.jetbrains.kotlin.metadata.ProtoBuf.Contract.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Contract contract = 32;</code>
       */
      public boolean hasContract() {
        return ((bitField0_ & 0x00000800) == 0x00000800);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Contract contract = 32;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Contract getContract() {
        return contract_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Contract contract = 32;</code>
       */
      public Builder setContract(org.jetbrains.kotlin.metadata.ProtoBuf.Contract value) {
        if (value == null) {
          throw new NullPointerException();
        }
        contract_ = value;

        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Contract contract = 32;</code>
       */
      public Builder setContract(
          org.jetbrains.kotlin.metadata.ProtoBuf.Contract.Builder builderForValue) {
        contract_ = builderForValue.build();

        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Contract contract = 32;</code>
       */
      public Builder mergeContract(org.jetbrains.kotlin.metadata.ProtoBuf.Contract value) {
        if (((bitField0_ & 0x00000800) == 0x00000800) &&
            contract_ != org.jetbrains.kotlin.metadata.ProtoBuf.Contract.getDefaultInstance()) {
          contract_ =
            org.jetbrains.kotlin.metadata.ProtoBuf.Contract.newBuilder(contract_).mergeFrom(value).buildPartial();
        } else {
          contract_ = value;
        }

        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Contract contract = 32;</code>
       */
      public Builder clearContract() {
        contract_ = org.jetbrains.kotlin.metadata.ProtoBuf.Contract.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.metadata.Function)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.metadata.Function)
  }

  public interface PropertyOrBuilder extends 
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.Property)
       org.jetbrains.kotlin.protobuf.GeneratedMessageLite.
            ExtendableMessageOrBuilder<Property> {

    /**
     * <code>optional int32 flags = 11 [default = 518];</code>
     *
     * <pre>
     *hasAnnotations
     *Visibility
     *Modality
     *MemberKind
     *isVar
     *hasGetter
     *hasSetter
     *isConst
     *isLateinit
     *hasConstant
     *isExternal
     *isDelegated
     *isExpect
     * </pre>
     */
    boolean hasFlags();
    /**
     * <code>optional int32 flags = 11 [default = 518];</code>
     *
     * <pre>
     *hasAnnotations
     *Visibility
     *Modality
     *MemberKind
     *isVar
     *hasGetter
     *hasSetter
     *isConst
     *isLateinit
     *hasConstant
     *isExternal
     *isDelegated
     *isExpect
     * </pre>
     */
    int getFlags();

    /**
     * <code>optional int32 old_flags = 1 [default = 2054];</code>
     */
    boolean hasOldFlags();
    /**
     * <code>optional int32 old_flags = 1 [default = 2054];</code>
     */
    int getOldFlags();

    /**
     * <code>required int32 name = 2;</code>
     */
    boolean hasName();
    /**
     * <code>required int32 name = 2;</code>
     */
    int getName();

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type return_type = 3;</code>
     */
    boolean hasReturnType();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type return_type = 3;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Type getReturnType();

    /**
     * <code>optional int32 return_type_id = 9;</code>
     */
    boolean hasReturnTypeId();
    /**
     * <code>optional int32 return_type_id = 9;</code>
     */
    int getReturnTypeId();

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

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

    /**
     * <code>optional int32 receiver_type_id = 10;</code>
     */
    boolean hasReceiverTypeId();
    /**
     * <code>optional int32 receiver_type_id = 10;</code>
     */
    int getReceiverTypeId();

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.ValueParameter setter_value_parameter = 6;</code>
     */
    boolean hasSetterValueParameter();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.ValueParameter setter_value_parameter = 6;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter getSetterValueParameter();

    /**
     * <code>optional int32 getter_flags = 7;</code>
     *
     * <pre>
     *hasAnnotations
     *Visibility
     *Modality
     *isNotDefault
     *isExternal
     *isInline
     *If getter_flags or setter_flags are absent, their value should be computed as follows:
     *- hasAnnotations, Visibility, Modality have the same value as in the property flags
     *- all other flags are false
     * </pre>
     */
    boolean hasGetterFlags();
    /**
     * <code>optional int32 getter_flags = 7;</code>
     *
     * <pre>
     *hasAnnotations
     *Visibility
     *Modality
     *isNotDefault
     *isExternal
     *isInline
     *If getter_flags or setter_flags are absent, their value should be computed as follows:
     *- hasAnnotations, Visibility, Modality have the same value as in the property flags
     *- all other flags are false
     * </pre>
     */
    int getGetterFlags();

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

    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    java.util.List<java.lang.Integer> getVersionRequirementList();
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    int getVersionRequirementCount();
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    int getVersionRequirement(int index);
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.Property}
   */
  public static final class Property extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableMessage<
        Property> implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.Property)
      PropertyOrBuilder {
    // Use Property.newBuilder() to construct.
    private Property(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableBuilder<org.jetbrains.kotlin.metadata.ProtoBuf.Property, ?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Property(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Property getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Property(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000002;
              oldFlags_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000004;
              name_ = input.readInt32();
              break;
            }
            case 26: {
              org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = returnType_.toBuilder();
              }
              returnType_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Type.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(returnType_);
                returnType_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                typeParameter_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter>();
                mutable_bitField0_ |= 0x00000020;
              }
              typeParameter_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter.PARSER, extensionRegistry));
              break;
            }
            case 42: {
              org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder subBuilder = null;
              if (((bitField0_ & 0x00000020) == 0x00000020)) {
                subBuilder = receiverType_.toBuilder();
              }
              receiverType_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Type.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(receiverType_);
                receiverType_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000020;
              break;
            }
            case 50: {
              org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.Builder subBuilder = null;
              if (((bitField0_ & 0x00000080) == 0x00000080)) {
                subBuilder = setterValueParameter_.toBuilder();
              }
              setterValueParameter_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(setterValueParameter_);
                setterValueParameter_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000080;
              break;
            }
            case 56: {
              bitField0_ |= 0x00000100;
              getterFlags_ = input.readInt32();
              break;
            }
            case 64: {
              bitField0_ |= 0x00000200;
              setterFlags_ = input.readInt32();
              break;
            }
            case 72: {
              bitField0_ |= 0x00000010;
              returnTypeId_ = input.readInt32();
              break;
            }
            case 80: {
              bitField0_ |= 0x00000040;
              receiverTypeId_ = input.readInt32();
              break;
            }
            case 88: {
              bitField0_ |= 0x00000001;
              flags_ = input.readInt32();
              break;
            }
            case 248: {
              if (!((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
                versionRequirement_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000800;
              }
              versionRequirement_.add(input.readInt32());
              break;
            }
            case 250: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000800) == 0x00000800) && input.getBytesUntilLimit() > 0) {
                versionRequirement_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000800;
              }
              while (input.getBytesUntilLimit() > 0) {
                versionRequirement_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          typeParameter_ = java.util.Collections.unmodifiableList(typeParameter_);
        }
        if (((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
          versionRequirement_ = java.util.Collections.unmodifiableList(versionRequirement_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Property> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Property>() {
      public Property parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Property(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<Property> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int FLAGS_FIELD_NUMBER = 11;
    private int flags_;
    /**
     * <code>optional int32 flags = 11 [default = 518];</code>
     *
     * <pre>
     *hasAnnotations
     *Visibility
     *Modality
     *MemberKind
     *isVar
     *hasGetter
     *hasSetter
     *isConst
     *isLateinit
     *hasConstant
     *isExternal
     *isDelegated
     *isExpect
     * </pre>
     */
    public boolean hasFlags() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int32 flags = 11 [default = 518];</code>
     *
     * <pre>
     *hasAnnotations
     *Visibility
     *Modality
     *MemberKind
     *isVar
     *hasGetter
     *hasSetter
     *isConst
     *isLateinit
     *hasConstant
     *isExternal
     *isDelegated
     *isExpect
     * </pre>
     */
    public int getFlags() {
      return flags_;
    }

    public static final int OLD_FLAGS_FIELD_NUMBER = 1;
    private int oldFlags_;
    /**
     * <code>optional int32 old_flags = 1 [default = 2054];</code>
     */
    public boolean hasOldFlags() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int32 old_flags = 1 [default = 2054];</code>
     */
    public int getOldFlags() {
      return oldFlags_;
    }

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

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

    public static final int RETURN_TYPE_ID_FIELD_NUMBER = 9;
    private int returnTypeId_;
    /**
     * <code>optional int32 return_type_id = 9;</code>
     */
    public boolean hasReturnTypeId() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional int32 return_type_id = 9;</code>
     */
    public int getReturnTypeId() {
      return returnTypeId_;
    }

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

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

    public static final int RECEIVER_TYPE_ID_FIELD_NUMBER = 10;
    private int receiverTypeId_;
    /**
     * <code>optional int32 receiver_type_id = 10;</code>
     */
    public boolean hasReceiverTypeId() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional int32 receiver_type_id = 10;</code>
     */
    public int getReceiverTypeId() {
      return receiverTypeId_;
    }

    public static final int SETTER_VALUE_PARAMETER_FIELD_NUMBER = 6;
    private org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter setterValueParameter_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.ValueParameter setter_value_parameter = 6;</code>
     */
    public boolean hasSetterValueParameter() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.ValueParameter setter_value_parameter = 6;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter getSetterValueParameter() {
      return setterValueParameter_;
    }

    public static final int GETTER_FLAGS_FIELD_NUMBER = 7;
    private int getterFlags_;
    /**
     * <code>optional int32 getter_flags = 7;</code>
     *
     * <pre>
     *hasAnnotations
     *Visibility
     *Modality
     *isNotDefault
     *isExternal
     *isInline
     *If getter_flags or setter_flags are absent, their value should be computed as follows:
     *- hasAnnotations, Visibility, Modality have the same value as in the property flags
     *- all other flags are false
     * </pre>
     */
    public boolean hasGetterFlags() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * <code>optional int32 getter_flags = 7;</code>
     *
     * <pre>
     *hasAnnotations
     *Visibility
     *Modality
     *isNotDefault
     *isExternal
     *isInline
     *If getter_flags or setter_flags are absent, their value should be computed as follows:
     *- hasAnnotations, Visibility, Modality have the same value as in the property flags
     *- all other flags are false
     * </pre>
     */
    public int getGetterFlags() {
      return getterFlags_;
    }

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

    public static final int VERSION_REQUIREMENT_FIELD_NUMBER = 31;
    private java.util.List<java.lang.Integer> versionRequirement_;
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    public java.util.List<java.lang.Integer>
        getVersionRequirementList() {
      return versionRequirement_;
    }
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    public int getVersionRequirementCount() {
      return versionRequirement_.size();
    }
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    public int getVersionRequirement(int index) {
      return versionRequirement_.get(index);
    }

    private void initFields() {
      flags_ = 518;
      oldFlags_ = 2054;
      name_ = 0;
      returnType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
      returnTypeId_ = 0;
      typeParameter_ = java.util.Collections.emptyList();
      receiverType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
      receiverTypeId_ = 0;
      setterValueParameter_ = org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.getDefaultInstance();
      getterFlags_ = 0;
      setterFlags_ = 0;
      versionRequirement_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasReturnType()) {
        if (!getReturnType().isInitialized()) {
          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;
        }
      }
      if (hasSetterValueParameter()) {
        if (!getSetterValueParameter().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!extensionsAreInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite
        .ExtendableMessage<org.jetbrains.kotlin.metadata.ProtoBuf.Property>.ExtensionWriter extensionWriter =
          newExtensionWriter();
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(1, oldFlags_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(2, name_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(3, returnType_);
      }
      for (int i = 0; i < typeParameter_.size(); i++) {
        output.writeMessage(4, typeParameter_.get(i));
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeMessage(5, receiverType_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeMessage(6, setterValueParameter_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeInt32(7, getterFlags_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeInt32(8, setterFlags_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt32(9, returnTypeId_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeInt32(10, receiverTypeId_);
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(11, flags_);
      }
      for (int i = 0; i < versionRequirement_.size(); i++) {
        output.writeInt32(31, versionRequirement_.get(i));
      }
      extensionWriter.writeUntil(19000, output);
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, oldFlags_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(2, name_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, returnType_);
      }
      for (int i = 0; i < typeParameter_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, typeParameter_.get(i));
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, receiverType_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(6, setterValueParameter_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(7, getterFlags_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(8, setterFlags_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(9, returnTypeId_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(10, receiverTypeId_);
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(11, flags_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < versionRequirement_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(versionRequirement_.get(i));
        }
        size += dataSize;
        size += 2 * getVersionRequirementList().size();
      }
      size += extensionsSerializedSize();
      size += unknownFields.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.metadata.ProtoBuf.Property parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Property parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Property parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Property parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Property parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Property parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Property parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Property parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Property parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Property parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.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.metadata.ProtoBuf.Property prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.metadata.Property}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableBuilder<
          org.jetbrains.kotlin.metadata.ProtoBuf.Property, Builder> implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.Property)
        org.jetbrains.kotlin.metadata.ProtoBuf.PropertyOrBuilder {
      // Construct using org.jetbrains.kotlin.metadata.ProtoBuf.Property.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        flags_ = 518;
        bitField0_ = (bitField0_ & ~0x00000001);
        oldFlags_ = 2054;
        bitField0_ = (bitField0_ & ~0x00000002);
        name_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        returnType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        returnTypeId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        typeParameter_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        receiverType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000040);
        receiverTypeId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000080);
        setterValueParameter_ = org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000100);
        getterFlags_ = 0;
        bitField0_ = (bitField0_ & ~0x00000200);
        setterFlags_ = 0;
        bitField0_ = (bitField0_ & ~0x00000400);
        versionRequirement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000800);
        return this;
      }

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.Property getDefaultInstanceForType() {
        return org.jetbrains.kotlin.metadata.ProtoBuf.Property.getDefaultInstance();
      }

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.Property buildPartial() {
        org.jetbrains.kotlin.metadata.ProtoBuf.Property result = new org.jetbrains.kotlin.metadata.ProtoBuf.Property(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.oldFlags_ = oldFlags_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.returnType_ = returnType_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.returnTypeId_ = returnTypeId_;
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          typeParameter_ = java.util.Collections.unmodifiableList(typeParameter_);
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.typeParameter_ = typeParameter_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000020;
        }
        result.receiverType_ = receiverType_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000040;
        }
        result.receiverTypeId_ = receiverTypeId_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000080;
        }
        result.setterValueParameter_ = setterValueParameter_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000100;
        }
        result.getterFlags_ = getterFlags_;
        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
          to_bitField0_ |= 0x00000200;
        }
        result.setterFlags_ = setterFlags_;
        if (((bitField0_ & 0x00000800) == 0x00000800)) {
          versionRequirement_ = java.util.Collections.unmodifiableList(versionRequirement_);
          bitField0_ = (bitField0_ & ~0x00000800);
        }
        result.versionRequirement_ = versionRequirement_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.metadata.ProtoBuf.Property other) {
        if (other == org.jetbrains.kotlin.metadata.ProtoBuf.Property.getDefaultInstance()) return this;
        if (other.hasFlags()) {
          setFlags(other.getFlags());
        }
        if (other.hasOldFlags()) {
          setOldFlags(other.getOldFlags());
        }
        if (other.hasName()) {
          setName(other.getName());
        }
        if (other.hasReturnType()) {
          mergeReturnType(other.getReturnType());
        }
        if (other.hasReturnTypeId()) {
          setReturnTypeId(other.getReturnTypeId());
        }
        if (!other.typeParameter_.isEmpty()) {
          if (typeParameter_.isEmpty()) {
            typeParameter_ = other.typeParameter_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureTypeParameterIsMutable();
            typeParameter_.addAll(other.typeParameter_);
          }
          
        }
        if (other.hasReceiverType()) {
          mergeReceiverType(other.getReceiverType());
        }
        if (other.hasReceiverTypeId()) {
          setReceiverTypeId(other.getReceiverTypeId());
        }
        if (other.hasSetterValueParameter()) {
          mergeSetterValueParameter(other.getSetterValueParameter());
        }
        if (other.hasGetterFlags()) {
          setGetterFlags(other.getGetterFlags());
        }
        if (other.hasSetterFlags()) {
          setSetterFlags(other.getSetterFlags());
        }
        if (!other.versionRequirement_.isEmpty()) {
          if (versionRequirement_.isEmpty()) {
            versionRequirement_ = other.versionRequirement_;
            bitField0_ = (bitField0_ & ~0x00000800);
          } else {
            ensureVersionRequirementIsMutable();
            versionRequirement_.addAll(other.versionRequirement_);
          }
          
        }
        this.mergeExtensionFields(other);
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

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

      private int flags_ = 518;
      /**
       * <code>optional int32 flags = 11 [default = 518];</code>
       *
       * <pre>
       *hasAnnotations
       *Visibility
       *Modality
       *MemberKind
       *isVar
       *hasGetter
       *hasSetter
       *isConst
       *isLateinit
       *hasConstant
       *isExternal
       *isDelegated
       *isExpect
       * </pre>
       */
      public boolean hasFlags() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int32 flags = 11 [default = 518];</code>
       *
       * <pre>
       *hasAnnotations
       *Visibility
       *Modality
       *MemberKind
       *isVar
       *hasGetter
       *hasSetter
       *isConst
       *isLateinit
       *hasConstant
       *isExternal
       *isDelegated
       *isExpect
       * </pre>
       */
      public int getFlags() {
        return flags_;
      }
      /**
       * <code>optional int32 flags = 11 [default = 518];</code>
       *
       * <pre>
       *hasAnnotations
       *Visibility
       *Modality
       *MemberKind
       *isVar
       *hasGetter
       *hasSetter
       *isConst
       *isLateinit
       *hasConstant
       *isExternal
       *isDelegated
       *isExpect
       * </pre>
       */
      public Builder setFlags(int value) {
        bitField0_ |= 0x00000001;
        flags_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 flags = 11 [default = 518];</code>
       *
       * <pre>
       *hasAnnotations
       *Visibility
       *Modality
       *MemberKind
       *isVar
       *hasGetter
       *hasSetter
       *isConst
       *isLateinit
       *hasConstant
       *isExternal
       *isDelegated
       *isExpect
       * </pre>
       */
      public Builder clearFlags() {
        bitField0_ = (bitField0_ & ~0x00000001);
        flags_ = 518;
        
        return this;
      }

      private int oldFlags_ = 2054;
      /**
       * <code>optional int32 old_flags = 1 [default = 2054];</code>
       */
      public boolean hasOldFlags() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int32 old_flags = 1 [default = 2054];</code>
       */
      public int getOldFlags() {
        return oldFlags_;
      }
      /**
       * <code>optional int32 old_flags = 1 [default = 2054];</code>
       */
      public Builder setOldFlags(int value) {
        bitField0_ |= 0x00000002;
        oldFlags_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 old_flags = 1 [default = 2054];</code>
       */
      public Builder clearOldFlags() {
        bitField0_ = (bitField0_ & ~0x00000002);
        oldFlags_ = 2054;
        
        return this;
      }

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

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

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type return_type = 3;</code>
       */
      public Builder setReturnType(
          org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder builderForValue) {
        returnType_ = builderForValue.build();

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

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type return_type = 3;</code>
       */
      public Builder clearReturnType() {
        returnType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();

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

      private int returnTypeId_ ;
      /**
       * <code>optional int32 return_type_id = 9;</code>
       */
      public boolean hasReturnTypeId() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional int32 return_type_id = 9;</code>
       */
      public int getReturnTypeId() {
        return returnTypeId_;
      }
      /**
       * <code>optional int32 return_type_id = 9;</code>
       */
      public Builder setReturnTypeId(int value) {
        bitField0_ |= 0x00000010;
        returnTypeId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 return_type_id = 9;</code>
       */
      public Builder clearReturnTypeId() {
        bitField0_ = (bitField0_ & ~0x00000010);
        returnTypeId_ = 0;
        
        return this;
      }

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter> typeParameter_ =
        java.util.Collections.emptyList();
      private void ensureTypeParameterIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          typeParameter_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter>(typeParameter_);
          bitField0_ |= 0x00000020;
         }
      }

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

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

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

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

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

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

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

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

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

        return this;
      }

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

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

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

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

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

      private int receiverTypeId_ ;
      /**
       * <code>optional int32 receiver_type_id = 10;</code>
       */
      public boolean hasReceiverTypeId() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional int32 receiver_type_id = 10;</code>
       */
      public int getReceiverTypeId() {
        return receiverTypeId_;
      }
      /**
       * <code>optional int32 receiver_type_id = 10;</code>
       */
      public Builder setReceiverTypeId(int value) {
        bitField0_ |= 0x00000080;
        receiverTypeId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 receiver_type_id = 10;</code>
       */
      public Builder clearReceiverTypeId() {
        bitField0_ = (bitField0_ & ~0x00000080);
        receiverTypeId_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter setterValueParameter_ = org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.ValueParameter setter_value_parameter = 6;</code>
       */
      public boolean hasSetterValueParameter() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.ValueParameter setter_value_parameter = 6;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter getSetterValueParameter() {
        return setterValueParameter_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.ValueParameter setter_value_parameter = 6;</code>
       */
      public Builder setSetterValueParameter(org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        setterValueParameter_ = value;

        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.ValueParameter setter_value_parameter = 6;</code>
       */
      public Builder setSetterValueParameter(
          org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.Builder builderForValue) {
        setterValueParameter_ = builderForValue.build();

        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.ValueParameter setter_value_parameter = 6;</code>
       */
      public Builder mergeSetterValueParameter(org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter value) {
        if (((bitField0_ & 0x00000100) == 0x00000100) &&
            setterValueParameter_ != org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.getDefaultInstance()) {
          setterValueParameter_ =
            org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.newBuilder(setterValueParameter_).mergeFrom(value).buildPartial();
        } else {
          setterValueParameter_ = value;
        }

        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.ValueParameter setter_value_parameter = 6;</code>
       */
      public Builder clearSetterValueParameter() {
        setterValueParameter_ = org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.getDefaultInstance();

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

      private int getterFlags_ ;
      /**
       * <code>optional int32 getter_flags = 7;</code>
       *
       * <pre>
       *hasAnnotations
       *Visibility
       *Modality
       *isNotDefault
       *isExternal
       *isInline
       *If getter_flags or setter_flags are absent, their value should be computed as follows:
       *- hasAnnotations, Visibility, Modality have the same value as in the property flags
       *- all other flags are false
       * </pre>
       */
      public boolean hasGetterFlags() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <code>optional int32 getter_flags = 7;</code>
       *
       * <pre>
       *hasAnnotations
       *Visibility
       *Modality
       *isNotDefault
       *isExternal
       *isInline
       *If getter_flags or setter_flags are absent, their value should be computed as follows:
       *- hasAnnotations, Visibility, Modality have the same value as in the property flags
       *- all other flags are false
       * </pre>
       */
      public int getGetterFlags() {
        return getterFlags_;
      }
      /**
       * <code>optional int32 getter_flags = 7;</code>
       *
       * <pre>
       *hasAnnotations
       *Visibility
       *Modality
       *isNotDefault
       *isExternal
       *isInline
       *If getter_flags or setter_flags are absent, their value should be computed as follows:
       *- hasAnnotations, Visibility, Modality have the same value as in the property flags
       *- all other flags are false
       * </pre>
       */
      public Builder setGetterFlags(int value) {
        bitField0_ |= 0x00000200;
        getterFlags_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 getter_flags = 7;</code>
       *
       * <pre>
       *hasAnnotations
       *Visibility
       *Modality
       *isNotDefault
       *isExternal
       *isInline
       *If getter_flags or setter_flags are absent, their value should be computed as follows:
       *- hasAnnotations, Visibility, Modality have the same value as in the property flags
       *- all other flags are false
       * </pre>
       */
      public Builder clearGetterFlags() {
        bitField0_ = (bitField0_ & ~0x00000200);
        getterFlags_ = 0;
        
        return this;
      }

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

      private java.util.List<java.lang.Integer> versionRequirement_ = java.util.Collections.emptyList();
      private void ensureVersionRequirementIsMutable() {
        if (!((bitField0_ & 0x00000800) == 0x00000800)) {
          versionRequirement_ = new java.util.ArrayList<java.lang.Integer>(versionRequirement_);
          bitField0_ |= 0x00000800;
         }
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public java.util.List<java.lang.Integer>
          getVersionRequirementList() {
        return java.util.Collections.unmodifiableList(versionRequirement_);
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public int getVersionRequirementCount() {
        return versionRequirement_.size();
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public int getVersionRequirement(int index) {
        return versionRequirement_.get(index);
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public Builder setVersionRequirement(
          int index, int value) {
        ensureVersionRequirementIsMutable();
        versionRequirement_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public Builder addVersionRequirement(int value) {
        ensureVersionRequirementIsMutable();
        versionRequirement_.add(value);
        
        return this;
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public Builder addAllVersionRequirement(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureVersionRequirementIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, versionRequirement_);
        
        return this;
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public Builder clearVersionRequirement() {
        versionRequirement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000800);
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.metadata.Property)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.metadata.Property)
  }

  public interface ValueParameterOrBuilder extends 
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.ValueParameter)
       org.jetbrains.kotlin.protobuf.GeneratedMessageLite.
            ExtendableMessageOrBuilder<ValueParameter> {

    /**
     * <code>optional int32 flags = 1 [default = 0];</code>
     *
     * <pre>
     *hasAnnotations
     *declaresDefault
     *isCrossinline
     *isNoinline
     * </pre>
     */
    boolean hasFlags();
    /**
     * <code>optional int32 flags = 1 [default = 0];</code>
     *
     * <pre>
     *hasAnnotations
     *declaresDefault
     *isCrossinline
     *isNoinline
     * </pre>
     */
    int getFlags();

    /**
     * <code>required int32 name = 2;</code>
     */
    boolean hasName();
    /**
     * <code>required int32 name = 2;</code>
     */
    int getName();

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

    /**
     * <code>optional int32 type_id = 5;</code>
     */
    boolean hasTypeId();
    /**
     * <code>optional int32 type_id = 5;</code>
     */
    int getTypeId();

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type vararg_element_type = 4;</code>
     */
    boolean hasVarargElementType();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type vararg_element_type = 4;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Type getVarargElementType();

    /**
     * <code>optional int32 vararg_element_type_id = 6;</code>
     */
    boolean hasVarargElementTypeId();
    /**
     * <code>optional int32 vararg_element_type_id = 6;</code>
     */
    int getVarargElementTypeId();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.ValueParameter}
   */
  public static final class ValueParameter extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableMessage<
        ValueParameter> implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.ValueParameter)
      ValueParameterOrBuilder {
    // Use ValueParameter.newBuilder() to construct.
    private ValueParameter(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableBuilder<org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter, ?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ValueParameter(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public ValueParameter getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private ValueParameter(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     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.metadata.ProtoBuf.Type.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = type_.toBuilder();
              }
              type_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Type.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(type_);
                type_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 34: {
              org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                subBuilder = varargElementType_.toBuilder();
              }
              varargElementType_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Type.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(varargElementType_);
                varargElementType_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
            case 40: {
              bitField0_ |= 0x00000008;
              typeId_ = input.readInt32();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              varargElementTypeId_ = input.readInt32();
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<ValueParameter> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<ValueParameter>() {
      public ValueParameter parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new ValueParameter(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<ValueParameter> getParserForType() {
      return PARSER;
    }

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

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

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

    public static final int TYPE_ID_FIELD_NUMBER = 5;
    private int typeId_;
    /**
     * <code>optional int32 type_id = 5;</code>
     */
    public boolean hasTypeId() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional int32 type_id = 5;</code>
     */
    public int getTypeId() {
      return typeId_;
    }

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

    public static final int VARARG_ELEMENT_TYPE_ID_FIELD_NUMBER = 6;
    private int varargElementTypeId_;
    /**
     * <code>optional int32 vararg_element_type_id = 6;</code>
     */
    public boolean hasVarargElementTypeId() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional int32 vararg_element_type_id = 6;</code>
     */
    public int getVarargElementTypeId() {
      return varargElementTypeId_;
    }

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

      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasType()) {
        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(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite
        .ExtendableMessage<org.jetbrains.kotlin.metadata.ProtoBuf.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_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(4, varargElementType_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt32(5, typeId_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeInt32(6, varargElementTypeId_);
      }
      extensionWriter.writeUntil(200, output);
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, flags_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(2, name_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, type_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, varargElementType_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(5, typeId_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(6, varargElementTypeId_);
      }
      size += extensionsSerializedSize();
      size += unknownFields.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.metadata.ProtoBuf.ValueParameter parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.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.metadata.ProtoBuf.ValueParameter prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.metadata.ValueParameter}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableBuilder<
          org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter, Builder> implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.ValueParameter)
        org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameterOrBuilder {
      // Construct using org.jetbrains.kotlin.metadata.ProtoBuf.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.metadata.ProtoBuf.Type.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        typeId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        varargElementType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000010);
        varargElementTypeId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

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

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

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter buildPartial() {
        org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter result = new org.jetbrains.kotlin.metadata.ProtoBuf.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.typeId_ = typeId_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.varargElementType_ = varargElementType_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.varargElementTypeId_ = varargElementTypeId_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter other) {
        if (other == org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.getDefaultInstance()) return this;
        if (other.hasFlags()) {
          setFlags(other.getFlags());
        }
        if (other.hasName()) {
          setName(other.getName());
        }
        if (other.hasType()) {
          mergeType(other.getType());
        }
        if (other.hasTypeId()) {
          setTypeId(other.getTypeId());
        }
        if (other.hasVarargElementType()) {
          mergeVarargElementType(other.getVarargElementType());
        }
        if (other.hasVarargElementTypeId()) {
          setVarargElementTypeId(other.getVarargElementTypeId());
        }
        this.mergeExtensionFields(other);
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

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

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

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

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

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

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

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

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

      private int typeId_ ;
      /**
       * <code>optional int32 type_id = 5;</code>
       */
      public boolean hasTypeId() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional int32 type_id = 5;</code>
       */
      public int getTypeId() {
        return typeId_;
      }
      /**
       * <code>optional int32 type_id = 5;</code>
       */
      public Builder setTypeId(int value) {
        bitField0_ |= 0x00000008;
        typeId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 type_id = 5;</code>
       */
      public Builder clearTypeId() {
        bitField0_ = (bitField0_ & ~0x00000008);
        typeId_ = 0;
        
        return this;
      }

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

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

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

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

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

      private int varargElementTypeId_ ;
      /**
       * <code>optional int32 vararg_element_type_id = 6;</code>
       */
      public boolean hasVarargElementTypeId() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional int32 vararg_element_type_id = 6;</code>
       */
      public int getVarargElementTypeId() {
        return varargElementTypeId_;
      }
      /**
       * <code>optional int32 vararg_element_type_id = 6;</code>
       */
      public Builder setVarargElementTypeId(int value) {
        bitField0_ |= 0x00000020;
        varargElementTypeId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 vararg_element_type_id = 6;</code>
       */
      public Builder clearVarargElementTypeId() {
        bitField0_ = (bitField0_ & ~0x00000020);
        varargElementTypeId_ = 0;
        
        return this;
      }

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

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

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

  public interface TypeAliasOrBuilder extends 
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.TypeAlias)
       org.jetbrains.kotlin.protobuf.GeneratedMessageLite.
            ExtendableMessageOrBuilder<TypeAlias> {

    /**
     * <code>optional int32 flags = 1 [default = 6];</code>
     *
     * <pre>
     *hasAnnotations
     *Visibility
     * </pre>
     */
    boolean hasFlags();
    /**
     * <code>optional int32 flags = 1 [default = 6];</code>
     *
     * <pre>
     *hasAnnotations
     *Visibility
     * </pre>
     */
    int getFlags();

    /**
     * <code>required int32 name = 2;</code>
     */
    boolean hasName();
    /**
     * <code>required int32 name = 2;</code>
     */
    int getName();

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

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type underlying_type = 4;</code>
     */
    boolean hasUnderlyingType();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type underlying_type = 4;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Type getUnderlyingType();

    /**
     * <code>optional int32 underlying_type_id = 5;</code>
     */
    boolean hasUnderlyingTypeId();
    /**
     * <code>optional int32 underlying_type_id = 5;</code>
     */
    int getUnderlyingTypeId();

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type expanded_type = 6;</code>
     */
    boolean hasExpandedType();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type expanded_type = 6;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Type getExpandedType();

    /**
     * <code>optional int32 expanded_type_id = 7;</code>
     */
    boolean hasExpandedTypeId();
    /**
     * <code>optional int32 expanded_type_id = 7;</code>
     */
    int getExpandedTypeId();

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 8;</code>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Annotation> 
        getAnnotationList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 8;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Annotation getAnnotation(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 8;</code>
     */
    int getAnnotationCount();

    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    java.util.List<java.lang.Integer> getVersionRequirementList();
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    int getVersionRequirementCount();
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    int getVersionRequirement(int index);
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.TypeAlias}
   */
  public static final class TypeAlias extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableMessage<
        TypeAlias> implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.TypeAlias)
      TypeAliasOrBuilder {
    // Use TypeAlias.newBuilder() to construct.
    private TypeAlias(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableBuilder<org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias, ?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private TypeAlias(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public TypeAlias getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private TypeAlias(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              flags_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              name_ = input.readInt32();
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                typeParameter_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter>();
                mutable_bitField0_ |= 0x00000004;
              }
              typeParameter_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter.PARSER, extensionRegistry));
              break;
            }
            case 34: {
              org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = underlyingType_.toBuilder();
              }
              underlyingType_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Type.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(underlyingType_);
                underlyingType_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 40: {
              bitField0_ |= 0x00000008;
              underlyingTypeId_ = input.readInt32();
              break;
            }
            case 50: {
              org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                subBuilder = expandedType_.toBuilder();
              }
              expandedType_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Type.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(expandedType_);
                expandedType_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
            case 56: {
              bitField0_ |= 0x00000020;
              expandedTypeId_ = input.readInt32();
              break;
            }
            case 66: {
              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                annotation_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Annotation>();
                mutable_bitField0_ |= 0x00000080;
              }
              annotation_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.PARSER, extensionRegistry));
              break;
            }
            case 248: {
              if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                versionRequirement_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000100;
              }
              versionRequirement_.add(input.readInt32());
              break;
            }
            case 250: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000100) == 0x00000100) && input.getBytesUntilLimit() > 0) {
                versionRequirement_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000100;
              }
              while (input.getBytesUntilLimit() > 0) {
                versionRequirement_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          typeParameter_ = java.util.Collections.unmodifiableList(typeParameter_);
        }
        if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
          annotation_ = java.util.Collections.unmodifiableList(annotation_);
        }
        if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
          versionRequirement_ = java.util.Collections.unmodifiableList(versionRequirement_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<TypeAlias> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<TypeAlias>() {
      public TypeAlias parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new TypeAlias(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<TypeAlias> getParserForType() {
      return PARSER;
    }

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

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

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

    public static final int UNDERLYING_TYPE_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.metadata.ProtoBuf.Type underlyingType_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type underlying_type = 4;</code>
     */
    public boolean hasUnderlyingType() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type underlying_type = 4;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Type getUnderlyingType() {
      return underlyingType_;
    }

    public static final int UNDERLYING_TYPE_ID_FIELD_NUMBER = 5;
    private int underlyingTypeId_;
    /**
     * <code>optional int32 underlying_type_id = 5;</code>
     */
    public boolean hasUnderlyingTypeId() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional int32 underlying_type_id = 5;</code>
     */
    public int getUnderlyingTypeId() {
      return underlyingTypeId_;
    }

    public static final int EXPANDED_TYPE_FIELD_NUMBER = 6;
    private org.jetbrains.kotlin.metadata.ProtoBuf.Type expandedType_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type expanded_type = 6;</code>
     */
    public boolean hasExpandedType() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type expanded_type = 6;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Type getExpandedType() {
      return expandedType_;
    }

    public static final int EXPANDED_TYPE_ID_FIELD_NUMBER = 7;
    private int expandedTypeId_;
    /**
     * <code>optional int32 expanded_type_id = 7;</code>
     */
    public boolean hasExpandedTypeId() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional int32 expanded_type_id = 7;</code>
     */
    public int getExpandedTypeId() {
      return expandedTypeId_;
    }

    public static final int ANNOTATION_FIELD_NUMBER = 8;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Annotation> annotation_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 8;</code>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Annotation> getAnnotationList() {
      return annotation_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 8;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.AnnotationOrBuilder> 
        getAnnotationOrBuilderList() {
      return annotation_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 8;</code>
     */
    public int getAnnotationCount() {
      return annotation_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 8;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Annotation getAnnotation(int index) {
      return annotation_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 8;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.AnnotationOrBuilder getAnnotationOrBuilder(
        int index) {
      return annotation_.get(index);
    }

    public static final int VERSION_REQUIREMENT_FIELD_NUMBER = 31;
    private java.util.List<java.lang.Integer> versionRequirement_;
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    public java.util.List<java.lang.Integer>
        getVersionRequirementList() {
      return versionRequirement_;
    }
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    public int getVersionRequirementCount() {
      return versionRequirement_.size();
    }
    /**
     * <code>repeated int32 version_requirement = 31;</code>
     *
     * <pre>
     * Index into the VersionRequirementTable
     * </pre>
     */
    public int getVersionRequirement(int index) {
      return versionRequirement_.get(index);
    }

    private void initFields() {
      flags_ = 6;
      name_ = 0;
      typeParameter_ = java.util.Collections.emptyList();
      underlyingType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
      underlyingTypeId_ = 0;
      expandedType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
      expandedTypeId_ = 0;
      annotation_ = java.util.Collections.emptyList();
      versionRequirement_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getTypeParameterCount(); i++) {
        if (!getTypeParameter(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasUnderlyingType()) {
        if (!getUnderlyingType().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasExpandedType()) {
        if (!getExpandedType().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getAnnotationCount(); i++) {
        if (!getAnnotation(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!extensionsAreInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite
        .ExtendableMessage<org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias>.ExtensionWriter extensionWriter =
          newExtensionWriter();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, flags_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, name_);
      }
      for (int i = 0; i < typeParameter_.size(); i++) {
        output.writeMessage(3, typeParameter_.get(i));
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(4, underlyingType_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt32(5, underlyingTypeId_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(6, expandedType_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeInt32(7, expandedTypeId_);
      }
      for (int i = 0; i < annotation_.size(); i++) {
        output.writeMessage(8, annotation_.get(i));
      }
      for (int i = 0; i < versionRequirement_.size(); i++) {
        output.writeInt32(31, versionRequirement_.get(i));
      }
      extensionWriter.writeUntil(200, output);
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, flags_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(2, name_);
      }
      for (int i = 0; i < typeParameter_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, typeParameter_.get(i));
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, underlyingType_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(5, underlyingTypeId_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(6, expandedType_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(7, expandedTypeId_);
      }
      for (int i = 0; i < annotation_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(8, annotation_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < versionRequirement_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(versionRequirement_.get(i));
        }
        size += dataSize;
        size += 2 * getVersionRequirementList().size();
      }
      size += extensionsSerializedSize();
      size += unknownFields.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.metadata.ProtoBuf.TypeAlias parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.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.metadata.ProtoBuf.TypeAlias prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.metadata.TypeAlias}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableBuilder<
          org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias, Builder> implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.TypeAlias)
        org.jetbrains.kotlin.metadata.ProtoBuf.TypeAliasOrBuilder {
      // Construct using org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        flags_ = 6;
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        typeParameter_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        underlyingType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        underlyingTypeId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        expandedType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000020);
        expandedTypeId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000040);
        annotation_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);
        versionRequirement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000100);
        return this;
      }

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias getDefaultInstanceForType() {
        return org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias.getDefaultInstance();
      }

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias buildPartial() {
        org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias result = new org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias(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 (((bitField0_ & 0x00000004) == 0x00000004)) {
          typeParameter_ = java.util.Collections.unmodifiableList(typeParameter_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.typeParameter_ = typeParameter_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        result.underlyingType_ = underlyingType_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000008;
        }
        result.underlyingTypeId_ = underlyingTypeId_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000010;
        }
        result.expandedType_ = expandedType_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000020;
        }
        result.expandedTypeId_ = expandedTypeId_;
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          annotation_ = java.util.Collections.unmodifiableList(annotation_);
          bitField0_ = (bitField0_ & ~0x00000080);
        }
        result.annotation_ = annotation_;
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          versionRequirement_ = java.util.Collections.unmodifiableList(versionRequirement_);
          bitField0_ = (bitField0_ & ~0x00000100);
        }
        result.versionRequirement_ = versionRequirement_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias other) {
        if (other == org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias.getDefaultInstance()) return this;
        if (other.hasFlags()) {
          setFlags(other.getFlags());
        }
        if (other.hasName()) {
          setName(other.getName());
        }
        if (!other.typeParameter_.isEmpty()) {
          if (typeParameter_.isEmpty()) {
            typeParameter_ = other.typeParameter_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureTypeParameterIsMutable();
            typeParameter_.addAll(other.typeParameter_);
          }
          
        }
        if (other.hasUnderlyingType()) {
          mergeUnderlyingType(other.getUnderlyingType());
        }
        if (other.hasUnderlyingTypeId()) {
          setUnderlyingTypeId(other.getUnderlyingTypeId());
        }
        if (other.hasExpandedType()) {
          mergeExpandedType(other.getExpandedType());
        }
        if (other.hasExpandedTypeId()) {
          setExpandedTypeId(other.getExpandedTypeId());
        }
        if (!other.annotation_.isEmpty()) {
          if (annotation_.isEmpty()) {
            annotation_ = other.annotation_;
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            ensureAnnotationIsMutable();
            annotation_.addAll(other.annotation_);
          }
          
        }
        if (!other.versionRequirement_.isEmpty()) {
          if (versionRequirement_.isEmpty()) {
            versionRequirement_ = other.versionRequirement_;
            bitField0_ = (bitField0_ & ~0x00000100);
          } else {
            ensureVersionRequirementIsMutable();
            versionRequirement_.addAll(other.versionRequirement_);
          }
          
        }
        this.mergeExtensionFields(other);
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasName()) {
          
          return false;
        }
        for (int i = 0; i < getTypeParameterCount(); i++) {
          if (!getTypeParameter(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasUnderlyingType()) {
          if (!getUnderlyingType().isInitialized()) {
            
            return false;
          }
        }
        if (hasExpandedType()) {
          if (!getExpandedType().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getAnnotationCount(); i++) {
          if (!getAnnotation(i).isInitialized()) {
            
            return false;
          }
        }
        if (!extensionsAreInitialized()) {
          
          return false;
        }
        return true;
      }

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

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

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

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter> typeParameter_ =
        java.util.Collections.emptyList();
      private void ensureTypeParameterIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          typeParameter_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter>(typeParameter_);
          bitField0_ |= 0x00000004;
         }
      }

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

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

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

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

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

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

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

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

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

        return this;
      }

      private org.jetbrains.kotlin.metadata.ProtoBuf.Type underlyingType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type underlying_type = 4;</code>
       */
      public boolean hasUnderlyingType() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type underlying_type = 4;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Type getUnderlyingType() {
        return underlyingType_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type underlying_type = 4;</code>
       */
      public Builder setUnderlyingType(org.jetbrains.kotlin.metadata.ProtoBuf.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        underlyingType_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type underlying_type = 4;</code>
       */
      public Builder setUnderlyingType(
          org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder builderForValue) {
        underlyingType_ = builderForValue.build();

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

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type underlying_type = 4;</code>
       */
      public Builder clearUnderlyingType() {
        underlyingType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();

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

      private int underlyingTypeId_ ;
      /**
       * <code>optional int32 underlying_type_id = 5;</code>
       */
      public boolean hasUnderlyingTypeId() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional int32 underlying_type_id = 5;</code>
       */
      public int getUnderlyingTypeId() {
        return underlyingTypeId_;
      }
      /**
       * <code>optional int32 underlying_type_id = 5;</code>
       */
      public Builder setUnderlyingTypeId(int value) {
        bitField0_ |= 0x00000010;
        underlyingTypeId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 underlying_type_id = 5;</code>
       */
      public Builder clearUnderlyingTypeId() {
        bitField0_ = (bitField0_ & ~0x00000010);
        underlyingTypeId_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.metadata.ProtoBuf.Type expandedType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type expanded_type = 6;</code>
       */
      public boolean hasExpandedType() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type expanded_type = 6;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Type getExpandedType() {
        return expandedType_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type expanded_type = 6;</code>
       */
      public Builder setExpandedType(org.jetbrains.kotlin.metadata.ProtoBuf.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expandedType_ = value;

        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type expanded_type = 6;</code>
       */
      public Builder setExpandedType(
          org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder builderForValue) {
        expandedType_ = builderForValue.build();

        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type expanded_type = 6;</code>
       */
      public Builder mergeExpandedType(org.jetbrains.kotlin.metadata.ProtoBuf.Type value) {
        if (((bitField0_ & 0x00000020) == 0x00000020) &&
            expandedType_ != org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance()) {
          expandedType_ =
            org.jetbrains.kotlin.metadata.ProtoBuf.Type.newBuilder(expandedType_).mergeFrom(value).buildPartial();
        } else {
          expandedType_ = value;
        }

        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type expanded_type = 6;</code>
       */
      public Builder clearExpandedType() {
        expandedType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();

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

      private int expandedTypeId_ ;
      /**
       * <code>optional int32 expanded_type_id = 7;</code>
       */
      public boolean hasExpandedTypeId() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional int32 expanded_type_id = 7;</code>
       */
      public int getExpandedTypeId() {
        return expandedTypeId_;
      }
      /**
       * <code>optional int32 expanded_type_id = 7;</code>
       */
      public Builder setExpandedTypeId(int value) {
        bitField0_ |= 0x00000040;
        expandedTypeId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 expanded_type_id = 7;</code>
       */
      public Builder clearExpandedTypeId() {
        bitField0_ = (bitField0_ & ~0x00000040);
        expandedTypeId_ = 0;
        
        return this;
      }

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Annotation> annotation_ =
        java.util.Collections.emptyList();
      private void ensureAnnotationIsMutable() {
        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
          annotation_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Annotation>(annotation_);
          bitField0_ |= 0x00000080;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 8;</code>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Annotation> getAnnotationList() {
        return java.util.Collections.unmodifiableList(annotation_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 8;</code>
       */
      public int getAnnotationCount() {
        return annotation_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 8;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Annotation getAnnotation(int index) {
        return annotation_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 8;</code>
       */
      public Builder setAnnotation(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Annotation value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureAnnotationIsMutable();
        annotation_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 8;</code>
       */
      public Builder setAnnotation(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Builder builderForValue) {
        ensureAnnotationIsMutable();
        annotation_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 8;</code>
       */
      public Builder addAnnotation(org.jetbrains.kotlin.metadata.ProtoBuf.Annotation value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureAnnotationIsMutable();
        annotation_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 8;</code>
       */
      public Builder addAnnotation(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Annotation value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureAnnotationIsMutable();
        annotation_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 8;</code>
       */
      public Builder addAnnotation(
          org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Builder builderForValue) {
        ensureAnnotationIsMutable();
        annotation_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 8;</code>
       */
      public Builder addAnnotation(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Builder builderForValue) {
        ensureAnnotationIsMutable();
        annotation_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 8;</code>
       */
      public Builder addAllAnnotation(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.ProtoBuf.Annotation> values) {
        ensureAnnotationIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, annotation_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 8;</code>
       */
      public Builder clearAnnotation() {
        annotation_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 8;</code>
       */
      public Builder removeAnnotation(int index) {
        ensureAnnotationIsMutable();
        annotation_.remove(index);

        return this;
      }

      private java.util.List<java.lang.Integer> versionRequirement_ = java.util.Collections.emptyList();
      private void ensureVersionRequirementIsMutable() {
        if (!((bitField0_ & 0x00000100) == 0x00000100)) {
          versionRequirement_ = new java.util.ArrayList<java.lang.Integer>(versionRequirement_);
          bitField0_ |= 0x00000100;
         }
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public java.util.List<java.lang.Integer>
          getVersionRequirementList() {
        return java.util.Collections.unmodifiableList(versionRequirement_);
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public int getVersionRequirementCount() {
        return versionRequirement_.size();
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public int getVersionRequirement(int index) {
        return versionRequirement_.get(index);
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public Builder setVersionRequirement(
          int index, int value) {
        ensureVersionRequirementIsMutable();
        versionRequirement_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public Builder addVersionRequirement(int value) {
        ensureVersionRequirementIsMutable();
        versionRequirement_.add(value);
        
        return this;
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public Builder addAllVersionRequirement(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureVersionRequirementIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, versionRequirement_);
        
        return this;
      }
      /**
       * <code>repeated int32 version_requirement = 31;</code>
       *
       * <pre>
       * Index into the VersionRequirementTable
       * </pre>
       */
      public Builder clearVersionRequirement() {
        versionRequirement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000100);
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.metadata.TypeAlias)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.metadata.TypeAlias)
  }

  public interface EnumEntryOrBuilder extends 
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.EnumEntry)
       org.jetbrains.kotlin.protobuf.GeneratedMessageLite.
            ExtendableMessageOrBuilder<EnumEntry> {

    /**
     * <code>optional int32 name = 1;</code>
     */
    boolean hasName();
    /**
     * <code>optional int32 name = 1;</code>
     */
    int getName();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.EnumEntry}
   */
  public static final class EnumEntry extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableMessage<
        EnumEntry> implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.EnumEntry)
      EnumEntryOrBuilder {
    // Use EnumEntry.newBuilder() to construct.
    private EnumEntry(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableBuilder<org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry, ?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private EnumEntry(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public EnumEntry getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private EnumEntry(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              name_ = input.readInt32();
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<EnumEntry> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<EnumEntry>() {
      public EnumEntry parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new EnumEntry(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<EnumEntry> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private int name_;
    /**
     * <code>optional int32 name = 1;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int32 name = 1;</code>
     */
    public int getName() {
      return name_;
    }

    private void initFields() {
      name_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite
        .ExtendableMessage<org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry>.ExtensionWriter extensionWriter =
          newExtensionWriter();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, name_);
      }
      extensionWriter.writeUntil(200, output);
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, name_);
      }
      size += extensionsSerializedSize();
      size += unknownFields.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.metadata.ProtoBuf.EnumEntry parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.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.metadata.ProtoBuf.EnumEntry prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.metadata.EnumEntry}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableBuilder<
          org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry, Builder> implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.EnumEntry)
        org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntryOrBuilder {
      // Construct using org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        name_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry getDefaultInstanceForType() {
        return org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry.getDefaultInstance();
      }

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry buildPartial() {
        org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry result = new org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry other) {
        if (other == org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry.getDefaultInstance()) return this;
        if (other.hasName()) {
          setName(other.getName());
        }
        this.mergeExtensionFields(other);
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

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

      private int name_ ;
      /**
       * <code>optional int32 name = 1;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int32 name = 1;</code>
       */
      public int getName() {
        return name_;
      }
      /**
       * <code>optional int32 name = 1;</code>
       */
      public Builder setName(int value) {
        bitField0_ |= 0x00000001;
        name_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 name = 1;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = 0;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.metadata.EnumEntry)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.metadata.EnumEntry)
  }

  public interface VersionRequirementOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.VersionRequirement)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional int32 version = 1;</code>
     *
     * <pre>
     * Kotlin version, since which this declaration is accessible, in the following format (encoded version is "major.minor.patch"):
     * (patch &lt;&lt; 7) + (minor &lt;&lt; 3) + major
     * Compilers with version less than this value should report a diagnostic if this declaration is selected as the resolution result
     * </pre>
     */
    boolean hasVersion();
    /**
     * <code>optional int32 version = 1;</code>
     *
     * <pre>
     * Kotlin version, since which this declaration is accessible, in the following format (encoded version is "major.minor.patch"):
     * (patch &lt;&lt; 7) + (minor &lt;&lt; 3) + major
     * Compilers with version less than this value should report a diagnostic if this declaration is selected as the resolution result
     * </pre>
     */
    int getVersion();

    /**
     * <code>optional int32 version_full = 2;</code>
     *
     * <pre>
     * Version in base 256, in case we run out of space to store the version in the optimized form. Has priority over 'version'.
     * (patch &lt;&lt; 16) + (minor &lt;&lt; 8) + major
     * </pre>
     */
    boolean hasVersionFull();
    /**
     * <code>optional int32 version_full = 2;</code>
     *
     * <pre>
     * Version in base 256, in case we run out of space to store the version in the optimized form. Has priority over 'version'.
     * (patch &lt;&lt; 16) + (minor &lt;&lt; 8) + major
     * </pre>
     */
    int getVersionFull();

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirement.Level level = 3 [default = ERROR];</code>
     *
     * <pre>
     * Level of the reported diagnostic
     * </pre>
     */
    boolean hasLevel();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirement.Level level = 3 [default = ERROR];</code>
     *
     * <pre>
     * Level of the reported diagnostic
     * </pre>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.Level getLevel();

    /**
     * <code>optional int32 error_code = 4;</code>
     *
     * <pre>
     * Error code, to be looked up on the website
     * </pre>
     */
    boolean hasErrorCode();
    /**
     * <code>optional int32 error_code = 4;</code>
     *
     * <pre>
     * Error code, to be looked up on the website
     * </pre>
     */
    int getErrorCode();

    /**
     * <code>optional int32 message = 5;</code>
     *
     * <pre>
     * Diagnostic message
     * </pre>
     */
    boolean hasMessage();
    /**
     * <code>optional int32 message = 5;</code>
     *
     * <pre>
     * Diagnostic message
     * </pre>
     */
    int getMessage();

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirement.VersionKind version_kind = 6 [default = LANGUAGE_VERSION];</code>
     *
     * <pre>
     * Which version is this requirement for. For example, if version_kind = API_VERSION, this declaration requires the API version
     * (the "-api-version" argument value when compiling the call site) to be of at least the specified value
     * </pre>
     */
    boolean hasVersionKind();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirement.VersionKind version_kind = 6 [default = LANGUAGE_VERSION];</code>
     *
     * <pre>
     * Which version is this requirement for. For example, if version_kind = API_VERSION, this declaration requires the API version
     * (the "-api-version" argument value when compiling the call site) to be of at least the specified value
     * </pre>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.VersionKind getVersionKind();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.VersionRequirement}
   */
  public static final class VersionRequirement extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.VersionRequirement)
      VersionRequirementOrBuilder {
    // Use VersionRequirement.newBuilder() to construct.
    private VersionRequirement(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private VersionRequirement(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public VersionRequirement getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private VersionRequirement(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              version_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              versionFull_ = input.readInt32();
              break;
            }
            case 24: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.Level value = org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.Level.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000004;
                level_ = value;
              }
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              errorCode_ = input.readInt32();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              message_ = input.readInt32();
              break;
            }
            case 48: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.VersionKind value = org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.VersionKind.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000020;
                versionKind_ = value;
              }
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<VersionRequirement> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<VersionRequirement>() {
      public VersionRequirement parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new VersionRequirement(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<VersionRequirement> getParserForType() {
      return PARSER;
    }

    /**
     * Protobuf enum {@code org.jetbrains.kotlin.metadata.VersionRequirement.Level}
     */
    public enum Level
        implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
      /**
       * <code>WARNING = 0;</code>
       */
      WARNING(0, 0),
      /**
       * <code>ERROR = 1;</code>
       */
      ERROR(1, 1),
      /**
       * <code>HIDDEN = 2;</code>
       */
      HIDDEN(2, 2),
      ;

      /**
       * <code>WARNING = 0;</code>
       */
      public static final int WARNING_VALUE = 0;
      /**
       * <code>ERROR = 1;</code>
       */
      public static final int ERROR_VALUE = 1;
      /**
       * <code>HIDDEN = 2;</code>
       */
      public static final int HIDDEN_VALUE = 2;


      public final int getNumber() { return value; }

      public static Level valueOf(int value) {
        switch (value) {
          case 0: return WARNING;
          case 1: return ERROR;
          case 2: return HIDDEN;
          default: return null;
        }
      }

      public static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<Level>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<Level>
          internalValueMap =
            new org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<Level>() {
              public Level findValueByNumber(int number) {
                return Level.valueOf(number);
              }
            };

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.metadata.VersionRequirement.Level)
    }

    /**
     * Protobuf enum {@code org.jetbrains.kotlin.metadata.VersionRequirement.VersionKind}
     */
    public enum VersionKind
        implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
      /**
       * <code>LANGUAGE_VERSION = 0;</code>
       */
      LANGUAGE_VERSION(0, 0),
      /**
       * <code>COMPILER_VERSION = 1;</code>
       */
      COMPILER_VERSION(1, 1),
      /**
       * <code>API_VERSION = 2;</code>
       */
      API_VERSION(2, 2),
      ;

      /**
       * <code>LANGUAGE_VERSION = 0;</code>
       */
      public static final int LANGUAGE_VERSION_VALUE = 0;
      /**
       * <code>COMPILER_VERSION = 1;</code>
       */
      public static final int COMPILER_VERSION_VALUE = 1;
      /**
       * <code>API_VERSION = 2;</code>
       */
      public static final int API_VERSION_VALUE = 2;


      public final int getNumber() { return value; }

      public static VersionKind valueOf(int value) {
        switch (value) {
          case 0: return LANGUAGE_VERSION;
          case 1: return COMPILER_VERSION;
          case 2: return API_VERSION;
          default: return null;
        }
      }

      public static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<VersionKind>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<VersionKind>
          internalValueMap =
            new org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<VersionKind>() {
              public VersionKind findValueByNumber(int number) {
                return VersionKind.valueOf(number);
              }
            };

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.metadata.VersionRequirement.VersionKind)
    }

    private int bitField0_;
    public static final int VERSION_FIELD_NUMBER = 1;
    private int version_;
    /**
     * <code>optional int32 version = 1;</code>
     *
     * <pre>
     * Kotlin version, since which this declaration is accessible, in the following format (encoded version is "major.minor.patch"):
     * (patch &lt;&lt; 7) + (minor &lt;&lt; 3) + major
     * Compilers with version less than this value should report a diagnostic if this declaration is selected as the resolution result
     * </pre>
     */
    public boolean hasVersion() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int32 version = 1;</code>
     *
     * <pre>
     * Kotlin version, since which this declaration is accessible, in the following format (encoded version is "major.minor.patch"):
     * (patch &lt;&lt; 7) + (minor &lt;&lt; 3) + major
     * Compilers with version less than this value should report a diagnostic if this declaration is selected as the resolution result
     * </pre>
     */
    public int getVersion() {
      return version_;
    }

    public static final int VERSION_FULL_FIELD_NUMBER = 2;
    private int versionFull_;
    /**
     * <code>optional int32 version_full = 2;</code>
     *
     * <pre>
     * Version in base 256, in case we run out of space to store the version in the optimized form. Has priority over 'version'.
     * (patch &lt;&lt; 16) + (minor &lt;&lt; 8) + major
     * </pre>
     */
    public boolean hasVersionFull() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int32 version_full = 2;</code>
     *
     * <pre>
     * Version in base 256, in case we run out of space to store the version in the optimized form. Has priority over 'version'.
     * (patch &lt;&lt; 16) + (minor &lt;&lt; 8) + major
     * </pre>
     */
    public int getVersionFull() {
      return versionFull_;
    }

    public static final int LEVEL_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.Level level_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirement.Level level = 3 [default = ERROR];</code>
     *
     * <pre>
     * Level of the reported diagnostic
     * </pre>
     */
    public boolean hasLevel() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirement.Level level = 3 [default = ERROR];</code>
     *
     * <pre>
     * Level of the reported diagnostic
     * </pre>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.Level getLevel() {
      return level_;
    }

    public static final int ERROR_CODE_FIELD_NUMBER = 4;
    private int errorCode_;
    /**
     * <code>optional int32 error_code = 4;</code>
     *
     * <pre>
     * Error code, to be looked up on the website
     * </pre>
     */
    public boolean hasErrorCode() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional int32 error_code = 4;</code>
     *
     * <pre>
     * Error code, to be looked up on the website
     * </pre>
     */
    public int getErrorCode() {
      return errorCode_;
    }

    public static final int MESSAGE_FIELD_NUMBER = 5;
    private int message_;
    /**
     * <code>optional int32 message = 5;</code>
     *
     * <pre>
     * Diagnostic message
     * </pre>
     */
    public boolean hasMessage() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional int32 message = 5;</code>
     *
     * <pre>
     * Diagnostic message
     * </pre>
     */
    public int getMessage() {
      return message_;
    }

    public static final int VERSION_KIND_FIELD_NUMBER = 6;
    private org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.VersionKind versionKind_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirement.VersionKind version_kind = 6 [default = LANGUAGE_VERSION];</code>
     *
     * <pre>
     * Which version is this requirement for. For example, if version_kind = API_VERSION, this declaration requires the API version
     * (the "-api-version" argument value when compiling the call site) to be of at least the specified value
     * </pre>
     */
    public boolean hasVersionKind() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirement.VersionKind version_kind = 6 [default = LANGUAGE_VERSION];</code>
     *
     * <pre>
     * Which version is this requirement for. For example, if version_kind = API_VERSION, this declaration requires the API version
     * (the "-api-version" argument value when compiling the call site) to be of at least the specified value
     * </pre>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.VersionKind getVersionKind() {
      return versionKind_;
    }

    private void initFields() {
      version_ = 0;
      versionFull_ = 0;
      level_ = org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.Level.ERROR;
      errorCode_ = 0;
      message_ = 0;
      versionKind_ = org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.VersionKind.LANGUAGE_VERSION;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, version_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, versionFull_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeEnum(3, level_.getNumber());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt32(4, errorCode_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt32(5, message_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeEnum(6, versionKind_.getNumber());
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, version_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(2, versionFull_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(3, level_.getNumber());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(4, errorCode_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(5, message_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(6, versionKind_.getNumber());
      }
      size += unknownFields.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.metadata.ProtoBuf.VersionRequirement parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.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.metadata.ProtoBuf.VersionRequirement prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.metadata.VersionRequirement}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.VersionRequirement)
        org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementOrBuilder {
      // Construct using org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        version_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        versionFull_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        level_ = org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.Level.ERROR;
        bitField0_ = (bitField0_ & ~0x00000004);
        errorCode_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        message_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        versionKind_ = org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.VersionKind.LANGUAGE_VERSION;
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement getDefaultInstanceForType() {
        return org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.getDefaultInstance();
      }

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement buildPartial() {
        org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement result = new org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.version_ = version_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.versionFull_ = versionFull_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.level_ = level_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.errorCode_ = errorCode_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.message_ = message_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.versionKind_ = versionKind_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement other) {
        if (other == org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.getDefaultInstance()) return this;
        if (other.hasVersion()) {
          setVersion(other.getVersion());
        }
        if (other.hasVersionFull()) {
          setVersionFull(other.getVersionFull());
        }
        if (other.hasLevel()) {
          setLevel(other.getLevel());
        }
        if (other.hasErrorCode()) {
          setErrorCode(other.getErrorCode());
        }
        if (other.hasMessage()) {
          setMessage(other.getMessage());
        }
        if (other.hasVersionKind()) {
          setVersionKind(other.getVersionKind());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

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

      private int version_ ;
      /**
       * <code>optional int32 version = 1;</code>
       *
       * <pre>
       * Kotlin version, since which this declaration is accessible, in the following format (encoded version is "major.minor.patch"):
       * (patch &lt;&lt; 7) + (minor &lt;&lt; 3) + major
       * Compilers with version less than this value should report a diagnostic if this declaration is selected as the resolution result
       * </pre>
       */
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int32 version = 1;</code>
       *
       * <pre>
       * Kotlin version, since which this declaration is accessible, in the following format (encoded version is "major.minor.patch"):
       * (patch &lt;&lt; 7) + (minor &lt;&lt; 3) + major
       * Compilers with version less than this value should report a diagnostic if this declaration is selected as the resolution result
       * </pre>
       */
      public int getVersion() {
        return version_;
      }
      /**
       * <code>optional int32 version = 1;</code>
       *
       * <pre>
       * Kotlin version, since which this declaration is accessible, in the following format (encoded version is "major.minor.patch"):
       * (patch &lt;&lt; 7) + (minor &lt;&lt; 3) + major
       * Compilers with version less than this value should report a diagnostic if this declaration is selected as the resolution result
       * </pre>
       */
      public Builder setVersion(int value) {
        bitField0_ |= 0x00000001;
        version_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 version = 1;</code>
       *
       * <pre>
       * Kotlin version, since which this declaration is accessible, in the following format (encoded version is "major.minor.patch"):
       * (patch &lt;&lt; 7) + (minor &lt;&lt; 3) + major
       * Compilers with version less than this value should report a diagnostic if this declaration is selected as the resolution result
       * </pre>
       */
      public Builder clearVersion() {
        bitField0_ = (bitField0_ & ~0x00000001);
        version_ = 0;
        
        return this;
      }

      private int versionFull_ ;
      /**
       * <code>optional int32 version_full = 2;</code>
       *
       * <pre>
       * Version in base 256, in case we run out of space to store the version in the optimized form. Has priority over 'version'.
       * (patch &lt;&lt; 16) + (minor &lt;&lt; 8) + major
       * </pre>
       */
      public boolean hasVersionFull() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int32 version_full = 2;</code>
       *
       * <pre>
       * Version in base 256, in case we run out of space to store the version in the optimized form. Has priority over 'version'.
       * (patch &lt;&lt; 16) + (minor &lt;&lt; 8) + major
       * </pre>
       */
      public int getVersionFull() {
        return versionFull_;
      }
      /**
       * <code>optional int32 version_full = 2;</code>
       *
       * <pre>
       * Version in base 256, in case we run out of space to store the version in the optimized form. Has priority over 'version'.
       * (patch &lt;&lt; 16) + (minor &lt;&lt; 8) + major
       * </pre>
       */
      public Builder setVersionFull(int value) {
        bitField0_ |= 0x00000002;
        versionFull_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 version_full = 2;</code>
       *
       * <pre>
       * Version in base 256, in case we run out of space to store the version in the optimized form. Has priority over 'version'.
       * (patch &lt;&lt; 16) + (minor &lt;&lt; 8) + major
       * </pre>
       */
      public Builder clearVersionFull() {
        bitField0_ = (bitField0_ & ~0x00000002);
        versionFull_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.Level level_ = org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.Level.ERROR;
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirement.Level level = 3 [default = ERROR];</code>
       *
       * <pre>
       * Level of the reported diagnostic
       * </pre>
       */
      public boolean hasLevel() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirement.Level level = 3 [default = ERROR];</code>
       *
       * <pre>
       * Level of the reported diagnostic
       * </pre>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.Level getLevel() {
        return level_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirement.Level level = 3 [default = ERROR];</code>
       *
       * <pre>
       * Level of the reported diagnostic
       * </pre>
       */
      public Builder setLevel(org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.Level value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        level_ = value;
        
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirement.Level level = 3 [default = ERROR];</code>
       *
       * <pre>
       * Level of the reported diagnostic
       * </pre>
       */
      public Builder clearLevel() {
        bitField0_ = (bitField0_ & ~0x00000004);
        level_ = org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.Level.ERROR;
        
        return this;
      }

      private int errorCode_ ;
      /**
       * <code>optional int32 error_code = 4;</code>
       *
       * <pre>
       * Error code, to be looked up on the website
       * </pre>
       */
      public boolean hasErrorCode() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional int32 error_code = 4;</code>
       *
       * <pre>
       * Error code, to be looked up on the website
       * </pre>
       */
      public int getErrorCode() {
        return errorCode_;
      }
      /**
       * <code>optional int32 error_code = 4;</code>
       *
       * <pre>
       * Error code, to be looked up on the website
       * </pre>
       */
      public Builder setErrorCode(int value) {
        bitField0_ |= 0x00000008;
        errorCode_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 error_code = 4;</code>
       *
       * <pre>
       * Error code, to be looked up on the website
       * </pre>
       */
      public Builder clearErrorCode() {
        bitField0_ = (bitField0_ & ~0x00000008);
        errorCode_ = 0;
        
        return this;
      }

      private int message_ ;
      /**
       * <code>optional int32 message = 5;</code>
       *
       * <pre>
       * Diagnostic message
       * </pre>
       */
      public boolean hasMessage() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional int32 message = 5;</code>
       *
       * <pre>
       * Diagnostic message
       * </pre>
       */
      public int getMessage() {
        return message_;
      }
      /**
       * <code>optional int32 message = 5;</code>
       *
       * <pre>
       * Diagnostic message
       * </pre>
       */
      public Builder setMessage(int value) {
        bitField0_ |= 0x00000010;
        message_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 message = 5;</code>
       *
       * <pre>
       * Diagnostic message
       * </pre>
       */
      public Builder clearMessage() {
        bitField0_ = (bitField0_ & ~0x00000010);
        message_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.VersionKind versionKind_ = org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.VersionKind.LANGUAGE_VERSION;
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirement.VersionKind version_kind = 6 [default = LANGUAGE_VERSION];</code>
       *
       * <pre>
       * Which version is this requirement for. For example, if version_kind = API_VERSION, this declaration requires the API version
       * (the "-api-version" argument value when compiling the call site) to be of at least the specified value
       * </pre>
       */
      public boolean hasVersionKind() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirement.VersionKind version_kind = 6 [default = LANGUAGE_VERSION];</code>
       *
       * <pre>
       * Which version is this requirement for. For example, if version_kind = API_VERSION, this declaration requires the API version
       * (the "-api-version" argument value when compiling the call site) to be of at least the specified value
       * </pre>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.VersionKind getVersionKind() {
        return versionKind_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirement.VersionKind version_kind = 6 [default = LANGUAGE_VERSION];</code>
       *
       * <pre>
       * Which version is this requirement for. For example, if version_kind = API_VERSION, this declaration requires the API version
       * (the "-api-version" argument value when compiling the call site) to be of at least the specified value
       * </pre>
       */
      public Builder setVersionKind(org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.VersionKind value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000020;
        versionKind_ = value;
        
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.VersionRequirement.VersionKind version_kind = 6 [default = LANGUAGE_VERSION];</code>
       *
       * <pre>
       * Which version is this requirement for. For example, if version_kind = API_VERSION, this declaration requires the API version
       * (the "-api-version" argument value when compiling the call site) to be of at least the specified value
       * </pre>
       */
      public Builder clearVersionKind() {
        bitField0_ = (bitField0_ & ~0x00000020);
        versionKind_ = org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.VersionKind.LANGUAGE_VERSION;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.metadata.VersionRequirement)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.metadata.VersionRequirement)
  }

  public interface VersionRequirementTableOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.VersionRequirementTable)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.VersionRequirement requirement = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement> 
        getRequirementList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.VersionRequirement requirement = 1;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement getRequirement(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.VersionRequirement requirement = 1;</code>
     */
    int getRequirementCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.VersionRequirementTable}
   */
  public static final class VersionRequirementTable extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.VersionRequirementTable)
      VersionRequirementTableOrBuilder {
    // Use VersionRequirementTable.newBuilder() to construct.
    private VersionRequirementTable(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private VersionRequirementTable(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public VersionRequirementTable getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private VersionRequirementTable(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                requirement_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement>();
                mutable_bitField0_ |= 0x00000001;
              }
              requirement_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          requirement_ = java.util.Collections.unmodifiableList(requirement_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<VersionRequirementTable> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<VersionRequirementTable>() {
      public VersionRequirementTable parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new VersionRequirementTable(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<VersionRequirementTable> getParserForType() {
      return PARSER;
    }

    public static final int REQUIREMENT_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement> requirement_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.VersionRequirement requirement = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement> getRequirementList() {
      return requirement_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.VersionRequirement requirement = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementOrBuilder> 
        getRequirementOrBuilderList() {
      return requirement_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.VersionRequirement requirement = 1;</code>
     */
    public int getRequirementCount() {
      return requirement_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.VersionRequirement requirement = 1;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement getRequirement(int index) {
      return requirement_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.VersionRequirement requirement = 1;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementOrBuilder getRequirementOrBuilder(
        int index) {
      return requirement_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < requirement_.size(); i++) {
        output.writeMessage(1, requirement_.get(i));
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      for (int i = 0; i < requirement_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, requirement_.get(i));
      }
      size += unknownFields.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.metadata.ProtoBuf.VersionRequirementTable parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.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.metadata.ProtoBuf.VersionRequirementTable prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.metadata.VersionRequirementTable}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.VersionRequirementTable)
        org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTableOrBuilder {
      // Construct using org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

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

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable getDefaultInstanceForType() {
        return org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.getDefaultInstance();
      }

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

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

      public Builder mergeFrom(org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable other) {
        if (other == org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirementTable.getDefaultInstance()) return this;
        if (!other.requirement_.isEmpty()) {
          if (requirement_.isEmpty()) {
            requirement_ = other.requirement_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureRequirementIsMutable();
            requirement_.addAll(other.requirement_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

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

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement> requirement_ =
        java.util.Collections.emptyList();
      private void ensureRequirementIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          requirement_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement>(requirement_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.VersionRequirement requirement = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement> getRequirementList() {
        return java.util.Collections.unmodifiableList(requirement_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.VersionRequirement requirement = 1;</code>
       */
      public int getRequirementCount() {
        return requirement_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.VersionRequirement requirement = 1;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement getRequirement(int index) {
        return requirement_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.VersionRequirement requirement = 1;</code>
       */
      public Builder setRequirement(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureRequirementIsMutable();
        requirement_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.VersionRequirement requirement = 1;</code>
       */
      public Builder setRequirement(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.Builder builderForValue) {
        ensureRequirementIsMutable();
        requirement_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.VersionRequirement requirement = 1;</code>
       */
      public Builder addRequirement(org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureRequirementIsMutable();
        requirement_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.VersionRequirement requirement = 1;</code>
       */
      public Builder addRequirement(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureRequirementIsMutable();
        requirement_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.VersionRequirement requirement = 1;</code>
       */
      public Builder addRequirement(
          org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.Builder builderForValue) {
        ensureRequirementIsMutable();
        requirement_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.VersionRequirement requirement = 1;</code>
       */
      public Builder addRequirement(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement.Builder builderForValue) {
        ensureRequirementIsMutable();
        requirement_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.VersionRequirement requirement = 1;</code>
       */
      public Builder addAllRequirement(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.ProtoBuf.VersionRequirement> values) {
        ensureRequirementIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, requirement_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.VersionRequirement requirement = 1;</code>
       */
      public Builder clearRequirement() {
        requirement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.VersionRequirement requirement = 1;</code>
       */
      public Builder removeRequirement(int index) {
        ensureRequirementIsMutable();
        requirement_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.metadata.VersionRequirementTable)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.metadata.VersionRequirementTable)
  }

  public interface PackageFragmentOrBuilder extends 
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.PackageFragment)
       org.jetbrains.kotlin.protobuf.GeneratedMessageLite.
            ExtendableMessageOrBuilder<PackageFragment> {

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.StringTable strings = 1;</code>
     */
    boolean hasStrings();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.StringTable strings = 1;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.StringTable getStrings();

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 2;</code>
     */
    boolean hasQualifiedNames();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 2;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable getQualifiedNames();

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Package package = 3;</code>
     */
    boolean hasPackage();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Package package = 3;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Package getPackage();

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Class class = 4;</code>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Class> 
        getClass_List();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Class class = 4;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Class getClass_(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Class class = 4;</code>
     */
    int getClass_Count();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.PackageFragment}
   *
   * <pre>
   * A part of the package, which is used to serialize .kjsm/.meta.js, .kotlin_builtins and .kotlin_metadata files.
   * Is not used in the JVM back-end
   * </pre>
   */
  public static final class PackageFragment extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableMessage<
        PackageFragment> implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.PackageFragment)
      PackageFragmentOrBuilder {
    // Use PackageFragment.newBuilder() to construct.
    private PackageFragment(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableBuilder<org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment, ?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private PackageFragment(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public PackageFragment getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private PackageFragment(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = strings_.toBuilder();
              }
              strings_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(strings_);
                strings_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = qualifiedNames_.toBuilder();
              }
              qualifiedNames_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(qualifiedNames_);
                qualifiedNames_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.metadata.ProtoBuf.Package.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = package_.toBuilder();
              }
              package_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Package.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(package_);
                package_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                class__ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Class>();
                mutable_bitField0_ |= 0x00000008;
              }
              class__.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Class.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          class__ = java.util.Collections.unmodifiableList(class__);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<PackageFragment> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<PackageFragment>() {
      public PackageFragment parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new PackageFragment(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<PackageFragment> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int STRINGS_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.metadata.ProtoBuf.StringTable strings_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.StringTable strings = 1;</code>
     */
    public boolean hasStrings() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.StringTable strings = 1;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.StringTable getStrings() {
      return strings_;
    }

    public static final int QUALIFIED_NAMES_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable qualifiedNames_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 2;</code>
     */
    public boolean hasQualifiedNames() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 2;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable getQualifiedNames() {
      return qualifiedNames_;
    }

    public static final int PACKAGE_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.metadata.ProtoBuf.Package package_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Package package = 3;</code>
     */
    public boolean hasPackage() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Package package = 3;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Package getPackage() {
      return package_;
    }

    public static final int CLASS_FIELD_NUMBER = 4;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Class> class__;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Class class = 4;</code>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Class> getClass_List() {
      return class__;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Class class = 4;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.ClassOrBuilder> 
        getClass_OrBuilderList() {
      return class__;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Class class = 4;</code>
     */
    public int getClass_Count() {
      return class__.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Class class = 4;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Class getClass_(int index) {
      return class__.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Class class = 4;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.ClassOrBuilder getClass_OrBuilder(
        int index) {
      return class__.get(index);
    }

    private void initFields() {
      strings_ = org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance();
      qualifiedNames_ = org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance();
      package_ = org.jetbrains.kotlin.metadata.ProtoBuf.Package.getDefaultInstance();
      class__ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (hasQualifiedNames()) {
        if (!getQualifiedNames().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasPackage()) {
        if (!getPackage().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getClass_Count(); i++) {
        if (!getClass_(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!extensionsAreInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite
        .ExtendableMessage<org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment>.ExtensionWriter extensionWriter =
          newExtensionWriter();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, strings_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, qualifiedNames_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, package_);
      }
      for (int i = 0; i < class__.size(); i++) {
        output.writeMessage(4, class__.get(i));
      }
      extensionWriter.writeUntil(200, output);
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, strings_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, qualifiedNames_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, package_);
      }
      for (int i = 0; i < class__.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, class__.get(i));
      }
      size += extensionsSerializedSize();
      size += unknownFields.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.metadata.ProtoBuf.PackageFragment parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.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.metadata.ProtoBuf.PackageFragment prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.metadata.PackageFragment}
     *
     * <pre>
     * A part of the package, which is used to serialize .kjsm/.meta.js, .kotlin_builtins and .kotlin_metadata files.
     * Is not used in the JVM back-end
     * </pre>
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.ExtendableBuilder<
          org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment, Builder> implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.PackageFragment)
        org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragmentOrBuilder {
      // Construct using org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        strings_ = org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        qualifiedNames_ = org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        package_ = org.jetbrains.kotlin.metadata.ProtoBuf.Package.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        class__ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment getDefaultInstanceForType() {
        return org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment.getDefaultInstance();
      }

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment buildPartial() {
        org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment result = new org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.strings_ = strings_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.qualifiedNames_ = qualifiedNames_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.package_ = package_;
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          class__ = java.util.Collections.unmodifiableList(class__);
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.class__ = class__;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment other) {
        if (other == org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment.getDefaultInstance()) return this;
        if (other.hasStrings()) {
          mergeStrings(other.getStrings());
        }
        if (other.hasQualifiedNames()) {
          mergeQualifiedNames(other.getQualifiedNames());
        }
        if (other.hasPackage()) {
          mergePackage(other.getPackage());
        }
        if (!other.class__.isEmpty()) {
          if (class__.isEmpty()) {
            class__ = other.class__;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureClass_IsMutable();
            class__.addAll(other.class__);
          }
          
        }
        this.mergeExtensionFields(other);
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (hasQualifiedNames()) {
          if (!getQualifiedNames().isInitialized()) {
            
            return false;
          }
        }
        if (hasPackage()) {
          if (!getPackage().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getClass_Count(); i++) {
          if (!getClass_(i).isInitialized()) {
            
            return false;
          }
        }
        if (!extensionsAreInitialized()) {
          
          return false;
        }
        return true;
      }

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

      private org.jetbrains.kotlin.metadata.ProtoBuf.StringTable strings_ = org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.StringTable strings = 1;</code>
       */
      public boolean hasStrings() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.StringTable strings = 1;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.StringTable getStrings() {
        return strings_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.StringTable strings = 1;</code>
       */
      public Builder setStrings(org.jetbrains.kotlin.metadata.ProtoBuf.StringTable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        strings_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.StringTable strings = 1;</code>
       */
      public Builder setStrings(
          org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.Builder builderForValue) {
        strings_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.StringTable strings = 1;</code>
       */
      public Builder mergeStrings(org.jetbrains.kotlin.metadata.ProtoBuf.StringTable value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            strings_ != org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance()) {
          strings_ =
            org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.newBuilder(strings_).mergeFrom(value).buildPartial();
        } else {
          strings_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.StringTable strings = 1;</code>
       */
      public Builder clearStrings() {
        strings_ = org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance();

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

      private org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable qualifiedNames_ = org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 2;</code>
       */
      public boolean hasQualifiedNames() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 2;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable getQualifiedNames() {
        return qualifiedNames_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 2;</code>
       */
      public Builder setQualifiedNames(org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        qualifiedNames_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 2;</code>
       */
      public Builder setQualifiedNames(
          org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.Builder builderForValue) {
        qualifiedNames_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 2;</code>
       */
      public Builder mergeQualifiedNames(org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            qualifiedNames_ != org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance()) {
          qualifiedNames_ =
            org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.newBuilder(qualifiedNames_).mergeFrom(value).buildPartial();
        } else {
          qualifiedNames_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 2;</code>
       */
      public Builder clearQualifiedNames() {
        qualifiedNames_ = org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance();

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

      private org.jetbrains.kotlin.metadata.ProtoBuf.Package package_ = org.jetbrains.kotlin.metadata.ProtoBuf.Package.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Package package = 3;</code>
       */
      public boolean hasPackage() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Package package = 3;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Package getPackage() {
        return package_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Package package = 3;</code>
       */
      public Builder setPackage(org.jetbrains.kotlin.metadata.ProtoBuf.Package value) {
        if (value == null) {
          throw new NullPointerException();
        }
        package_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Package package = 3;</code>
       */
      public Builder setPackage(
          org.jetbrains.kotlin.metadata.ProtoBuf.Package.Builder builderForValue) {
        package_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Package package = 3;</code>
       */
      public Builder mergePackage(org.jetbrains.kotlin.metadata.ProtoBuf.Package value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            package_ != org.jetbrains.kotlin.metadata.ProtoBuf.Package.getDefaultInstance()) {
          package_ =
            org.jetbrains.kotlin.metadata.ProtoBuf.Package.newBuilder(package_).mergeFrom(value).buildPartial();
        } else {
          package_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Package package = 3;</code>
       */
      public Builder clearPackage() {
        package_ = org.jetbrains.kotlin.metadata.ProtoBuf.Package.getDefaultInstance();

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

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Class> class__ =
        java.util.Collections.emptyList();
      private void ensureClass_IsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          class__ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Class>(class__);
          bitField0_ |= 0x00000008;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class class = 4;</code>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Class> getClass_List() {
        return java.util.Collections.unmodifiableList(class__);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class class = 4;</code>
       */
      public int getClass_Count() {
        return class__.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class class = 4;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Class getClass_(int index) {
        return class__.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class class = 4;</code>
       */
      public Builder setClass_(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Class value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureClass_IsMutable();
        class__.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class class = 4;</code>
       */
      public Builder setClass_(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Class.Builder builderForValue) {
        ensureClass_IsMutable();
        class__.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class class = 4;</code>
       */
      public Builder addClass_(org.jetbrains.kotlin.metadata.ProtoBuf.Class value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureClass_IsMutable();
        class__.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class class = 4;</code>
       */
      public Builder addClass_(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Class value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureClass_IsMutable();
        class__.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class class = 4;</code>
       */
      public Builder addClass_(
          org.jetbrains.kotlin.metadata.ProtoBuf.Class.Builder builderForValue) {
        ensureClass_IsMutable();
        class__.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class class = 4;</code>
       */
      public Builder addClass_(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Class.Builder builderForValue) {
        ensureClass_IsMutable();
        class__.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class class = 4;</code>
       */
      public Builder addAllClass_(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.ProtoBuf.Class> values) {
        ensureClass_IsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, class__);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class class = 4;</code>
       */
      public Builder clearClass_() {
        class__ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class class = 4;</code>
       */
      public Builder removeClass_(int index) {
        ensureClass_IsMutable();
        class__.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.metadata.PackageFragment)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.metadata.PackageFragment)
  }

  public interface ContractOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.Contract)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Effect effect = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Effect> 
        getEffectList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Effect effect = 1;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Effect getEffect(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Effect effect = 1;</code>
     */
    int getEffectCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.Contract}
   */
  public static final class Contract extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.Contract)
      ContractOrBuilder {
    // Use Contract.newBuilder() to construct.
    private Contract(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Contract(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Contract getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Contract(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                effect_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Effect>();
                mutable_bitField0_ |= 0x00000001;
              }
              effect_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Effect.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          effect_ = java.util.Collections.unmodifiableList(effect_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Contract> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Contract>() {
      public Contract parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Contract(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<Contract> getParserForType() {
      return PARSER;
    }

    public static final int EFFECT_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Effect> effect_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Effect effect = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Effect> getEffectList() {
      return effect_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Effect effect = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.EffectOrBuilder> 
        getEffectOrBuilderList() {
      return effect_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Effect effect = 1;</code>
     */
    public int getEffectCount() {
      return effect_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Effect effect = 1;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Effect getEffect(int index) {
      return effect_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Effect effect = 1;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.EffectOrBuilder getEffectOrBuilder(
        int index) {
      return effect_.get(index);
    }

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

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < effect_.size(); i++) {
        output.writeMessage(1, effect_.get(i));
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      for (int i = 0; i < effect_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, effect_.get(i));
      }
      size += unknownFields.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.metadata.ProtoBuf.Contract parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Contract parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Contract parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Contract parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Contract parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Contract parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Contract parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Contract parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Contract parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Contract parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.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.metadata.ProtoBuf.Contract prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.metadata.Contract}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.metadata.ProtoBuf.Contract, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.Contract)
        org.jetbrains.kotlin.metadata.ProtoBuf.ContractOrBuilder {
      // Construct using org.jetbrains.kotlin.metadata.ProtoBuf.Contract.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

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

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.Contract getDefaultInstanceForType() {
        return org.jetbrains.kotlin.metadata.ProtoBuf.Contract.getDefaultInstance();
      }

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

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

      public Builder mergeFrom(org.jetbrains.kotlin.metadata.ProtoBuf.Contract other) {
        if (other == org.jetbrains.kotlin.metadata.ProtoBuf.Contract.getDefaultInstance()) return this;
        if (!other.effect_.isEmpty()) {
          if (effect_.isEmpty()) {
            effect_ = other.effect_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureEffectIsMutable();
            effect_.addAll(other.effect_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

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

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Effect> effect_ =
        java.util.Collections.emptyList();
      private void ensureEffectIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          effect_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Effect>(effect_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Effect effect = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Effect> getEffectList() {
        return java.util.Collections.unmodifiableList(effect_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Effect effect = 1;</code>
       */
      public int getEffectCount() {
        return effect_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Effect effect = 1;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Effect getEffect(int index) {
        return effect_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Effect effect = 1;</code>
       */
      public Builder setEffect(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Effect value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureEffectIsMutable();
        effect_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Effect effect = 1;</code>
       */
      public Builder setEffect(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Effect.Builder builderForValue) {
        ensureEffectIsMutable();
        effect_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Effect effect = 1;</code>
       */
      public Builder addEffect(org.jetbrains.kotlin.metadata.ProtoBuf.Effect value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureEffectIsMutable();
        effect_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Effect effect = 1;</code>
       */
      public Builder addEffect(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Effect value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureEffectIsMutable();
        effect_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Effect effect = 1;</code>
       */
      public Builder addEffect(
          org.jetbrains.kotlin.metadata.ProtoBuf.Effect.Builder builderForValue) {
        ensureEffectIsMutable();
        effect_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Effect effect = 1;</code>
       */
      public Builder addEffect(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Effect.Builder builderForValue) {
        ensureEffectIsMutable();
        effect_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Effect effect = 1;</code>
       */
      public Builder addAllEffect(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.ProtoBuf.Effect> values) {
        ensureEffectIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, effect_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Effect effect = 1;</code>
       */
      public Builder clearEffect() {
        effect_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Effect effect = 1;</code>
       */
      public Builder removeEffect(int index) {
        ensureEffectIsMutable();
        effect_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.metadata.Contract)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.metadata.Contract)
  }

  public interface EffectOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.Effect)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Effect.EffectType effect_type = 1;</code>
     */
    boolean hasEffectType();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Effect.EffectType effect_type = 1;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Effect.EffectType getEffectType();

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression effect_constructor_argument = 2;</code>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Expression> 
        getEffectConstructorArgumentList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression effect_constructor_argument = 2;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Expression getEffectConstructorArgument(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression effect_constructor_argument = 2;</code>
     */
    int getEffectConstructorArgumentCount();

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Expression conclusion_of_conditional_effect = 3;</code>
     *
     * <pre>
     * If present, then whole message is clause of form 'Effect -&gt; Expression', where 'Effect'
     * is given by other fields in this message, and 'Expression' is stored in this field.
     * </pre>
     */
    boolean hasConclusionOfConditionalEffect();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Expression conclusion_of_conditional_effect = 3;</code>
     *
     * <pre>
     * If present, then whole message is clause of form 'Effect -&gt; Expression', where 'Effect'
     * is given by other fields in this message, and 'Expression' is stored in this field.
     * </pre>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Expression getConclusionOfConditionalEffect();

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Effect.InvocationKind kind = 4;</code>
     */
    boolean hasKind();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Effect.InvocationKind kind = 4;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Effect.InvocationKind getKind();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.Effect}
   */
  public static final class Effect extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.Effect)
      EffectOrBuilder {
    // Use Effect.newBuilder() to construct.
    private Effect(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Effect(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Effect getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Effect(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.metadata.ProtoBuf.Effect.EffectType value = org.jetbrains.kotlin.metadata.ProtoBuf.Effect.EffectType.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000001;
                effectType_ = value;
              }
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                effectConstructorArgument_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Expression>();
                mutable_bitField0_ |= 0x00000002;
              }
              effectConstructorArgument_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Expression.PARSER, extensionRegistry));
              break;
            }
            case 26: {
              org.jetbrains.kotlin.metadata.ProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = conclusionOfConditionalEffect_.toBuilder();
              }
              conclusionOfConditionalEffect_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(conclusionOfConditionalEffect_);
                conclusionOfConditionalEffect_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 32: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.metadata.ProtoBuf.Effect.InvocationKind value = org.jetbrains.kotlin.metadata.ProtoBuf.Effect.InvocationKind.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000004;
                kind_ = value;
              }
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          effectConstructorArgument_ = java.util.Collections.unmodifiableList(effectConstructorArgument_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Effect> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Effect>() {
      public Effect parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Effect(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<Effect> getParserForType() {
      return PARSER;
    }

    /**
     * Protobuf enum {@code org.jetbrains.kotlin.metadata.Effect.EffectType}
     *
     * <pre>
     * This enum controls which effect this message contains and how 'effectConstructorArguments'
     * should be parsed.
     * Each enum value documented in the following syntax: "EffectName(arg1: T1, arg2: T2, ...)"
     * Those arguments are expected to be found in 'effectConstructorArguments' in exactly the same
     * order and amount as defined by signature, otherwise message should be dropped.
     * </pre>
     */
    public enum EffectType
        implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
      /**
       * <code>RETURNS_CONSTANT = 0;</code>
       *
       * <pre>
       * Returns(value: ConstantValue?)
       * </pre>
       */
      RETURNS_CONSTANT(0, 0),
      /**
       * <code>CALLS = 1;</code>
       *
       * <pre>
       * CallsInPlace(callable: ParameterReference)
       * Additionally, InvocationKind in the field 'kind' may be provided to define exact amount of invocations.
       * </pre>
       */
      CALLS(1, 1),
      /**
       * <code>RETURNS_NOT_NULL = 2;</code>
       *
       * <pre>
       * ReturnsNotNull()
       * </pre>
       */
      RETURNS_NOT_NULL(2, 2),
      ;

      /**
       * <code>RETURNS_CONSTANT = 0;</code>
       *
       * <pre>
       * Returns(value: ConstantValue?)
       * </pre>
       */
      public static final int RETURNS_CONSTANT_VALUE = 0;
      /**
       * <code>CALLS = 1;</code>
       *
       * <pre>
       * CallsInPlace(callable: ParameterReference)
       * Additionally, InvocationKind in the field 'kind' may be provided to define exact amount of invocations.
       * </pre>
       */
      public static final int CALLS_VALUE = 1;
      /**
       * <code>RETURNS_NOT_NULL = 2;</code>
       *
       * <pre>
       * ReturnsNotNull()
       * </pre>
       */
      public static final int RETURNS_NOT_NULL_VALUE = 2;


      public final int getNumber() { return value; }

      public static EffectType valueOf(int value) {
        switch (value) {
          case 0: return RETURNS_CONSTANT;
          case 1: return CALLS;
          case 2: return RETURNS_NOT_NULL;
          default: return null;
        }
      }

      public static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<EffectType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<EffectType>
          internalValueMap =
            new org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<EffectType>() {
              public EffectType findValueByNumber(int number) {
                return EffectType.valueOf(number);
              }
            };

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.metadata.Effect.EffectType)
    }

    /**
     * Protobuf enum {@code org.jetbrains.kotlin.metadata.Effect.InvocationKind}
     */
    public enum InvocationKind
        implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
      /**
       * <code>AT_MOST_ONCE = 0;</code>
       */
      AT_MOST_ONCE(0, 0),
      /**
       * <code>EXACTLY_ONCE = 1;</code>
       */
      EXACTLY_ONCE(1, 1),
      /**
       * <code>AT_LEAST_ONCE = 2;</code>
       */
      AT_LEAST_ONCE(2, 2),
      ;

      /**
       * <code>AT_MOST_ONCE = 0;</code>
       */
      public static final int AT_MOST_ONCE_VALUE = 0;
      /**
       * <code>EXACTLY_ONCE = 1;</code>
       */
      public static final int EXACTLY_ONCE_VALUE = 1;
      /**
       * <code>AT_LEAST_ONCE = 2;</code>
       */
      public static final int AT_LEAST_ONCE_VALUE = 2;


      public final int getNumber() { return value; }

      public static InvocationKind valueOf(int value) {
        switch (value) {
          case 0: return AT_MOST_ONCE;
          case 1: return EXACTLY_ONCE;
          case 2: return AT_LEAST_ONCE;
          default: return null;
        }
      }

      public static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<InvocationKind>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<InvocationKind>
          internalValueMap =
            new org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<InvocationKind>() {
              public InvocationKind findValueByNumber(int number) {
                return InvocationKind.valueOf(number);
              }
            };

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.metadata.Effect.InvocationKind)
    }

    private int bitField0_;
    public static final int EFFECT_TYPE_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.metadata.ProtoBuf.Effect.EffectType effectType_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Effect.EffectType effect_type = 1;</code>
     */
    public boolean hasEffectType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Effect.EffectType effect_type = 1;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Effect.EffectType getEffectType() {
      return effectType_;
    }

    public static final int EFFECT_CONSTRUCTOR_ARGUMENT_FIELD_NUMBER = 2;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Expression> effectConstructorArgument_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression effect_constructor_argument = 2;</code>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Expression> getEffectConstructorArgumentList() {
      return effectConstructorArgument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression effect_constructor_argument = 2;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.ExpressionOrBuilder> 
        getEffectConstructorArgumentOrBuilderList() {
      return effectConstructorArgument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression effect_constructor_argument = 2;</code>
     */
    public int getEffectConstructorArgumentCount() {
      return effectConstructorArgument_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression effect_constructor_argument = 2;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Expression getEffectConstructorArgument(int index) {
      return effectConstructorArgument_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression effect_constructor_argument = 2;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.ExpressionOrBuilder getEffectConstructorArgumentOrBuilder(
        int index) {
      return effectConstructorArgument_.get(index);
    }

    public static final int CONCLUSION_OF_CONDITIONAL_EFFECT_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.metadata.ProtoBuf.Expression conclusionOfConditionalEffect_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Expression conclusion_of_conditional_effect = 3;</code>
     *
     * <pre>
     * If present, then whole message is clause of form 'Effect -&gt; Expression', where 'Effect'
     * is given by other fields in this message, and 'Expression' is stored in this field.
     * </pre>
     */
    public boolean hasConclusionOfConditionalEffect() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Expression conclusion_of_conditional_effect = 3;</code>
     *
     * <pre>
     * If present, then whole message is clause of form 'Effect -&gt; Expression', where 'Effect'
     * is given by other fields in this message, and 'Expression' is stored in this field.
     * </pre>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Expression getConclusionOfConditionalEffect() {
      return conclusionOfConditionalEffect_;
    }

    public static final int KIND_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.metadata.ProtoBuf.Effect.InvocationKind kind_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Effect.InvocationKind kind = 4;</code>
     */
    public boolean hasKind() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Effect.InvocationKind kind = 4;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Effect.InvocationKind getKind() {
      return kind_;
    }

    private void initFields() {
      effectType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Effect.EffectType.RETURNS_CONSTANT;
      effectConstructorArgument_ = java.util.Collections.emptyList();
      conclusionOfConditionalEffect_ = org.jetbrains.kotlin.metadata.ProtoBuf.Expression.getDefaultInstance();
      kind_ = org.jetbrains.kotlin.metadata.ProtoBuf.Effect.InvocationKind.AT_MOST_ONCE;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getEffectConstructorArgumentCount(); i++) {
        if (!getEffectConstructorArgument(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasConclusionOfConditionalEffect()) {
        if (!getConclusionOfConditionalEffect().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeEnum(1, effectType_.getNumber());
      }
      for (int i = 0; i < effectConstructorArgument_.size(); i++) {
        output.writeMessage(2, effectConstructorArgument_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(3, conclusionOfConditionalEffect_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeEnum(4, kind_.getNumber());
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(1, effectType_.getNumber());
      }
      for (int i = 0; i < effectConstructorArgument_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, effectConstructorArgument_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, conclusionOfConditionalEffect_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(4, kind_.getNumber());
      }
      size += unknownFields.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.metadata.ProtoBuf.Effect parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Effect parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Effect parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Effect parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Effect parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Effect parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Effect parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Effect parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Effect parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Effect parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.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.metadata.ProtoBuf.Effect prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.metadata.Effect}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.metadata.ProtoBuf.Effect, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.Effect)
        org.jetbrains.kotlin.metadata.ProtoBuf.EffectOrBuilder {
      // Construct using org.jetbrains.kotlin.metadata.ProtoBuf.Effect.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        effectType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Effect.EffectType.RETURNS_CONSTANT;
        bitField0_ = (bitField0_ & ~0x00000001);
        effectConstructorArgument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        conclusionOfConditionalEffect_ = org.jetbrains.kotlin.metadata.ProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        kind_ = org.jetbrains.kotlin.metadata.ProtoBuf.Effect.InvocationKind.AT_MOST_ONCE;
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.Effect getDefaultInstanceForType() {
        return org.jetbrains.kotlin.metadata.ProtoBuf.Effect.getDefaultInstance();
      }

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.Effect buildPartial() {
        org.jetbrains.kotlin.metadata.ProtoBuf.Effect result = new org.jetbrains.kotlin.metadata.ProtoBuf.Effect(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.effectType_ = effectType_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          effectConstructorArgument_ = java.util.Collections.unmodifiableList(effectConstructorArgument_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.effectConstructorArgument_ = effectConstructorArgument_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        result.conclusionOfConditionalEffect_ = conclusionOfConditionalEffect_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        result.kind_ = kind_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.metadata.ProtoBuf.Effect other) {
        if (other == org.jetbrains.kotlin.metadata.ProtoBuf.Effect.getDefaultInstance()) return this;
        if (other.hasEffectType()) {
          setEffectType(other.getEffectType());
        }
        if (!other.effectConstructorArgument_.isEmpty()) {
          if (effectConstructorArgument_.isEmpty()) {
            effectConstructorArgument_ = other.effectConstructorArgument_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureEffectConstructorArgumentIsMutable();
            effectConstructorArgument_.addAll(other.effectConstructorArgument_);
          }
          
        }
        if (other.hasConclusionOfConditionalEffect()) {
          mergeConclusionOfConditionalEffect(other.getConclusionOfConditionalEffect());
        }
        if (other.hasKind()) {
          setKind(other.getKind());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getEffectConstructorArgumentCount(); i++) {
          if (!getEffectConstructorArgument(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasConclusionOfConditionalEffect()) {
          if (!getConclusionOfConditionalEffect().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

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

      private org.jetbrains.kotlin.metadata.ProtoBuf.Effect.EffectType effectType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Effect.EffectType.RETURNS_CONSTANT;
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Effect.EffectType effect_type = 1;</code>
       */
      public boolean hasEffectType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Effect.EffectType effect_type = 1;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Effect.EffectType getEffectType() {
        return effectType_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Effect.EffectType effect_type = 1;</code>
       */
      public Builder setEffectType(org.jetbrains.kotlin.metadata.ProtoBuf.Effect.EffectType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        effectType_ = value;
        
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Effect.EffectType effect_type = 1;</code>
       */
      public Builder clearEffectType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        effectType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Effect.EffectType.RETURNS_CONSTANT;
        
        return this;
      }

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Expression> effectConstructorArgument_ =
        java.util.Collections.emptyList();
      private void ensureEffectConstructorArgumentIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          effectConstructorArgument_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Expression>(effectConstructorArgument_);
          bitField0_ |= 0x00000002;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression effect_constructor_argument = 2;</code>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Expression> getEffectConstructorArgumentList() {
        return java.util.Collections.unmodifiableList(effectConstructorArgument_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression effect_constructor_argument = 2;</code>
       */
      public int getEffectConstructorArgumentCount() {
        return effectConstructorArgument_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression effect_constructor_argument = 2;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Expression getEffectConstructorArgument(int index) {
        return effectConstructorArgument_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression effect_constructor_argument = 2;</code>
       */
      public Builder setEffectConstructorArgument(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureEffectConstructorArgumentIsMutable();
        effectConstructorArgument_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression effect_constructor_argument = 2;</code>
       */
      public Builder setEffectConstructorArgument(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Expression.Builder builderForValue) {
        ensureEffectConstructorArgumentIsMutable();
        effectConstructorArgument_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression effect_constructor_argument = 2;</code>
       */
      public Builder addEffectConstructorArgument(org.jetbrains.kotlin.metadata.ProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureEffectConstructorArgumentIsMutable();
        effectConstructorArgument_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression effect_constructor_argument = 2;</code>
       */
      public Builder addEffectConstructorArgument(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureEffectConstructorArgumentIsMutable();
        effectConstructorArgument_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression effect_constructor_argument = 2;</code>
       */
      public Builder addEffectConstructorArgument(
          org.jetbrains.kotlin.metadata.ProtoBuf.Expression.Builder builderForValue) {
        ensureEffectConstructorArgumentIsMutable();
        effectConstructorArgument_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression effect_constructor_argument = 2;</code>
       */
      public Builder addEffectConstructorArgument(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Expression.Builder builderForValue) {
        ensureEffectConstructorArgumentIsMutable();
        effectConstructorArgument_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression effect_constructor_argument = 2;</code>
       */
      public Builder addAllEffectConstructorArgument(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.ProtoBuf.Expression> values) {
        ensureEffectConstructorArgumentIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, effectConstructorArgument_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression effect_constructor_argument = 2;</code>
       */
      public Builder clearEffectConstructorArgument() {
        effectConstructorArgument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression effect_constructor_argument = 2;</code>
       */
      public Builder removeEffectConstructorArgument(int index) {
        ensureEffectConstructorArgumentIsMutable();
        effectConstructorArgument_.remove(index);

        return this;
      }

      private org.jetbrains.kotlin.metadata.ProtoBuf.Expression conclusionOfConditionalEffect_ = org.jetbrains.kotlin.metadata.ProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Expression conclusion_of_conditional_effect = 3;</code>
       *
       * <pre>
       * If present, then whole message is clause of form 'Effect -&gt; Expression', where 'Effect'
       * is given by other fields in this message, and 'Expression' is stored in this field.
       * </pre>
       */
      public boolean hasConclusionOfConditionalEffect() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Expression conclusion_of_conditional_effect = 3;</code>
       *
       * <pre>
       * If present, then whole message is clause of form 'Effect -&gt; Expression', where 'Effect'
       * is given by other fields in this message, and 'Expression' is stored in this field.
       * </pre>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Expression getConclusionOfConditionalEffect() {
        return conclusionOfConditionalEffect_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Expression conclusion_of_conditional_effect = 3;</code>
       *
       * <pre>
       * If present, then whole message is clause of form 'Effect -&gt; Expression', where 'Effect'
       * is given by other fields in this message, and 'Expression' is stored in this field.
       * </pre>
       */
      public Builder setConclusionOfConditionalEffect(org.jetbrains.kotlin.metadata.ProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        conclusionOfConditionalEffect_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Expression conclusion_of_conditional_effect = 3;</code>
       *
       * <pre>
       * If present, then whole message is clause of form 'Effect -&gt; Expression', where 'Effect'
       * is given by other fields in this message, and 'Expression' is stored in this field.
       * </pre>
       */
      public Builder setConclusionOfConditionalEffect(
          org.jetbrains.kotlin.metadata.ProtoBuf.Expression.Builder builderForValue) {
        conclusionOfConditionalEffect_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Expression conclusion_of_conditional_effect = 3;</code>
       *
       * <pre>
       * If present, then whole message is clause of form 'Effect -&gt; Expression', where 'Effect'
       * is given by other fields in this message, and 'Expression' is stored in this field.
       * </pre>
       */
      public Builder mergeConclusionOfConditionalEffect(org.jetbrains.kotlin.metadata.ProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            conclusionOfConditionalEffect_ != org.jetbrains.kotlin.metadata.ProtoBuf.Expression.getDefaultInstance()) {
          conclusionOfConditionalEffect_ =
            org.jetbrains.kotlin.metadata.ProtoBuf.Expression.newBuilder(conclusionOfConditionalEffect_).mergeFrom(value).buildPartial();
        } else {
          conclusionOfConditionalEffect_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Expression conclusion_of_conditional_effect = 3;</code>
       *
       * <pre>
       * If present, then whole message is clause of form 'Effect -&gt; Expression', where 'Effect'
       * is given by other fields in this message, and 'Expression' is stored in this field.
       * </pre>
       */
      public Builder clearConclusionOfConditionalEffect() {
        conclusionOfConditionalEffect_ = org.jetbrains.kotlin.metadata.ProtoBuf.Expression.getDefaultInstance();

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

      private org.jetbrains.kotlin.metadata.ProtoBuf.Effect.InvocationKind kind_ = org.jetbrains.kotlin.metadata.ProtoBuf.Effect.InvocationKind.AT_MOST_ONCE;
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Effect.InvocationKind kind = 4;</code>
       */
      public boolean hasKind() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Effect.InvocationKind kind = 4;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Effect.InvocationKind getKind() {
        return kind_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Effect.InvocationKind kind = 4;</code>
       */
      public Builder setKind(org.jetbrains.kotlin.metadata.ProtoBuf.Effect.InvocationKind value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000008;
        kind_ = value;
        
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Effect.InvocationKind kind = 4;</code>
       */
      public Builder clearKind() {
        bitField0_ = (bitField0_ & ~0x00000008);
        kind_ = org.jetbrains.kotlin.metadata.ProtoBuf.Effect.InvocationKind.AT_MOST_ONCE;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.metadata.Effect)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.metadata.Effect)
  }

  public interface ExpressionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.Expression)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional int32 flags = 1 [default = 0];</code>
     *
     * <pre>
     *isNegated =&gt; this expression should be negated
     *isIsNullPredicate =&gt; this expression is IsNullPredicate with 'variableName' as argument
     * </pre>
     */
    boolean hasFlags();
    /**
     * <code>optional int32 flags = 1 [default = 0];</code>
     *
     * <pre>
     *isNegated =&gt; this expression should be negated
     *isIsNullPredicate =&gt; this expression is IsNullPredicate with 'variableName' as argument
     * </pre>
     */
    int getFlags();

    /**
     * <code>optional int32 value_parameter_reference = 2;</code>
     *
     * <pre>
     * stored as index in valueParameters list of owner-function in 1-indexation
     * Index '0' is reserved for extension receiver
     * </pre>
     */
    boolean hasValueParameterReference();
    /**
     * <code>optional int32 value_parameter_reference = 2;</code>
     *
     * <pre>
     * stored as index in valueParameters list of owner-function in 1-indexation
     * Index '0' is reserved for extension receiver
     * </pre>
     */
    int getValueParameterReference();

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Expression.ConstantValue constant_value = 3;</code>
     */
    boolean hasConstantValue();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Expression.ConstantValue constant_value = 3;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Expression.ConstantValue getConstantValue();

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type is_instance_type = 4;</code>
     *
     * <pre>
     * present =&gt; this expression is IsInstancePredicate,  with 'variableName' as LHS
     * and with type encoded in either one of next two fields as RHS.
     * </pre>
     */
    boolean hasIsInstanceType();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type is_instance_type = 4;</code>
     *
     * <pre>
     * present =&gt; this expression is IsInstancePredicate,  with 'variableName' as LHS
     * and with type encoded in either one of next two fields as RHS.
     * </pre>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Type getIsInstanceType();

    /**
     * <code>optional int32 is_instance_type_id = 5;</code>
     */
    boolean hasIsInstanceTypeId();
    /**
     * <code>optional int32 is_instance_type_id = 5;</code>
     */
    int getIsInstanceTypeId();

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression and_argument = 6;</code>
     *
     * <pre>
     * non-empty =&gt; this expression is boolean formula of form 'andArguments[0] &amp;&amp; andArguments[1] &amp;&amp; ...'
     * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
     * it is optimized and embedded straight into this message
     * </pre>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Expression> 
        getAndArgumentList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression and_argument = 6;</code>
     *
     * <pre>
     * non-empty =&gt; this expression is boolean formula of form 'andArguments[0] &amp;&amp; andArguments[1] &amp;&amp; ...'
     * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
     * it is optimized and embedded straight into this message
     * </pre>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Expression getAndArgument(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression and_argument = 6;</code>
     *
     * <pre>
     * non-empty =&gt; this expression is boolean formula of form 'andArguments[0] &amp;&amp; andArguments[1] &amp;&amp; ...'
     * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
     * it is optimized and embedded straight into this message
     * </pre>
     */
    int getAndArgumentCount();

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression or_argument = 7;</code>
     *
     * <pre>
     * non-empty =&gt; this expression is boolean formula of form 'orArguments[0] || andArguments[1] || ...'
     * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
     * it is optimized and embedded straight into this message.
     * </pre>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Expression> 
        getOrArgumentList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression or_argument = 7;</code>
     *
     * <pre>
     * non-empty =&gt; this expression is boolean formula of form 'orArguments[0] || andArguments[1] || ...'
     * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
     * it is optimized and embedded straight into this message.
     * </pre>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Expression getOrArgument(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression or_argument = 7;</code>
     *
     * <pre>
     * non-empty =&gt; this expression is boolean formula of form 'orArguments[0] || andArguments[1] || ...'
     * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
     * it is optimized and embedded straight into this message.
     * </pre>
     */
    int getOrArgumentCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.Expression}
   *
   * <pre>
   * We use some trickery to optimize memory footprint of contract-expressions:
   * exact type of Expression is determined based on its contents.
   * </pre>
   */
  public static final class Expression extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.Expression)
      ExpressionOrBuilder {
    // Use Expression.newBuilder() to construct.
    private Expression(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Expression(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Expression getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Expression(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              flags_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              valueParameterReference_ = input.readInt32();
              break;
            }
            case 24: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.metadata.ProtoBuf.Expression.ConstantValue value = org.jetbrains.kotlin.metadata.ProtoBuf.Expression.ConstantValue.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000004;
                constantValue_ = value;
              }
              break;
            }
            case 34: {
              org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = isInstanceType_.toBuilder();
              }
              isInstanceType_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Type.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(isInstanceType_);
                isInstanceType_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              isInstanceTypeId_ = input.readInt32();
              break;
            }
            case 50: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                andArgument_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Expression>();
                mutable_bitField0_ |= 0x00000020;
              }
              andArgument_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Expression.PARSER, extensionRegistry));
              break;
            }
            case 58: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                orArgument_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Expression>();
                mutable_bitField0_ |= 0x00000040;
              }
              orArgument_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Expression.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          andArgument_ = java.util.Collections.unmodifiableList(andArgument_);
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          orArgument_ = java.util.Collections.unmodifiableList(orArgument_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Expression> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Expression>() {
      public Expression parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Expression(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<Expression> getParserForType() {
      return PARSER;
    }

    /**
     * Protobuf enum {@code org.jetbrains.kotlin.metadata.Expression.ConstantValue}
     */
    public enum ConstantValue
        implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
      /**
       * <code>TRUE = 0;</code>
       */
      TRUE(0, 0),
      /**
       * <code>FALSE = 1;</code>
       */
      FALSE(1, 1),
      /**
       * <code>NULL = 2;</code>
       */
      NULL(2, 2),
      ;

      /**
       * <code>TRUE = 0;</code>
       */
      public static final int TRUE_VALUE = 0;
      /**
       * <code>FALSE = 1;</code>
       */
      public static final int FALSE_VALUE = 1;
      /**
       * <code>NULL = 2;</code>
       */
      public static final int NULL_VALUE = 2;


      public final int getNumber() { return value; }

      public static ConstantValue valueOf(int value) {
        switch (value) {
          case 0: return TRUE;
          case 1: return FALSE;
          case 2: return NULL;
          default: return null;
        }
      }

      public static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<ConstantValue>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<ConstantValue>
          internalValueMap =
            new org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<ConstantValue>() {
              public ConstantValue findValueByNumber(int number) {
                return ConstantValue.valueOf(number);
              }
            };

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.metadata.Expression.ConstantValue)
    }

    private int bitField0_;
    public static final int FLAGS_FIELD_NUMBER = 1;
    private int flags_;
    /**
     * <code>optional int32 flags = 1 [default = 0];</code>
     *
     * <pre>
     *isNegated =&gt; this expression should be negated
     *isIsNullPredicate =&gt; this expression is IsNullPredicate with 'variableName' as argument
     * </pre>
     */
    public boolean hasFlags() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int32 flags = 1 [default = 0];</code>
     *
     * <pre>
     *isNegated =&gt; this expression should be negated
     *isIsNullPredicate =&gt; this expression is IsNullPredicate with 'variableName' as argument
     * </pre>
     */
    public int getFlags() {
      return flags_;
    }

    public static final int VALUE_PARAMETER_REFERENCE_FIELD_NUMBER = 2;
    private int valueParameterReference_;
    /**
     * <code>optional int32 value_parameter_reference = 2;</code>
     *
     * <pre>
     * stored as index in valueParameters list of owner-function in 1-indexation
     * Index '0' is reserved for extension receiver
     * </pre>
     */
    public boolean hasValueParameterReference() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int32 value_parameter_reference = 2;</code>
     *
     * <pre>
     * stored as index in valueParameters list of owner-function in 1-indexation
     * Index '0' is reserved for extension receiver
     * </pre>
     */
    public int getValueParameterReference() {
      return valueParameterReference_;
    }

    public static final int CONSTANT_VALUE_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.metadata.ProtoBuf.Expression.ConstantValue constantValue_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Expression.ConstantValue constant_value = 3;</code>
     */
    public boolean hasConstantValue() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Expression.ConstantValue constant_value = 3;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Expression.ConstantValue getConstantValue() {
      return constantValue_;
    }

    public static final int IS_INSTANCE_TYPE_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.metadata.ProtoBuf.Type isInstanceType_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type is_instance_type = 4;</code>
     *
     * <pre>
     * present =&gt; this expression is IsInstancePredicate,  with 'variableName' as LHS
     * and with type encoded in either one of next two fields as RHS.
     * </pre>
     */
    public boolean hasIsInstanceType() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.Type is_instance_type = 4;</code>
     *
     * <pre>
     * present =&gt; this expression is IsInstancePredicate,  with 'variableName' as LHS
     * and with type encoded in either one of next two fields as RHS.
     * </pre>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Type getIsInstanceType() {
      return isInstanceType_;
    }

    public static final int IS_INSTANCE_TYPE_ID_FIELD_NUMBER = 5;
    private int isInstanceTypeId_;
    /**
     * <code>optional int32 is_instance_type_id = 5;</code>
     */
    public boolean hasIsInstanceTypeId() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional int32 is_instance_type_id = 5;</code>
     */
    public int getIsInstanceTypeId() {
      return isInstanceTypeId_;
    }

    public static final int AND_ARGUMENT_FIELD_NUMBER = 6;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Expression> andArgument_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression and_argument = 6;</code>
     *
     * <pre>
     * non-empty =&gt; this expression is boolean formula of form 'andArguments[0] &amp;&amp; andArguments[1] &amp;&amp; ...'
     * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
     * it is optimized and embedded straight into this message
     * </pre>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Expression> getAndArgumentList() {
      return andArgument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression and_argument = 6;</code>
     *
     * <pre>
     * non-empty =&gt; this expression is boolean formula of form 'andArguments[0] &amp;&amp; andArguments[1] &amp;&amp; ...'
     * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
     * it is optimized and embedded straight into this message
     * </pre>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.ExpressionOrBuilder> 
        getAndArgumentOrBuilderList() {
      return andArgument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression and_argument = 6;</code>
     *
     * <pre>
     * non-empty =&gt; this expression is boolean formula of form 'andArguments[0] &amp;&amp; andArguments[1] &amp;&amp; ...'
     * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
     * it is optimized and embedded straight into this message
     * </pre>
     */
    public int getAndArgumentCount() {
      return andArgument_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression and_argument = 6;</code>
     *
     * <pre>
     * non-empty =&gt; this expression is boolean formula of form 'andArguments[0] &amp;&amp; andArguments[1] &amp;&amp; ...'
     * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
     * it is optimized and embedded straight into this message
     * </pre>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Expression getAndArgument(int index) {
      return andArgument_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression and_argument = 6;</code>
     *
     * <pre>
     * non-empty =&gt; this expression is boolean formula of form 'andArguments[0] &amp;&amp; andArguments[1] &amp;&amp; ...'
     * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
     * it is optimized and embedded straight into this message
     * </pre>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.ExpressionOrBuilder getAndArgumentOrBuilder(
        int index) {
      return andArgument_.get(index);
    }

    public static final int OR_ARGUMENT_FIELD_NUMBER = 7;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Expression> orArgument_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression or_argument = 7;</code>
     *
     * <pre>
     * non-empty =&gt; this expression is boolean formula of form 'orArguments[0] || andArguments[1] || ...'
     * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
     * it is optimized and embedded straight into this message.
     * </pre>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Expression> getOrArgumentList() {
      return orArgument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression or_argument = 7;</code>
     *
     * <pre>
     * non-empty =&gt; this expression is boolean formula of form 'orArguments[0] || andArguments[1] || ...'
     * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
     * it is optimized and embedded straight into this message.
     * </pre>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.ExpressionOrBuilder> 
        getOrArgumentOrBuilderList() {
      return orArgument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression or_argument = 7;</code>
     *
     * <pre>
     * non-empty =&gt; this expression is boolean formula of form 'orArguments[0] || andArguments[1] || ...'
     * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
     * it is optimized and embedded straight into this message.
     * </pre>
     */
    public int getOrArgumentCount() {
      return orArgument_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression or_argument = 7;</code>
     *
     * <pre>
     * non-empty =&gt; this expression is boolean formula of form 'orArguments[0] || andArguments[1] || ...'
     * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
     * it is optimized and embedded straight into this message.
     * </pre>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Expression getOrArgument(int index) {
      return orArgument_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Expression or_argument = 7;</code>
     *
     * <pre>
     * non-empty =&gt; this expression is boolean formula of form 'orArguments[0] || andArguments[1] || ...'
     * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
     * it is optimized and embedded straight into this message.
     * </pre>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.ExpressionOrBuilder getOrArgumentOrBuilder(
        int index) {
      return orArgument_.get(index);
    }

    private void initFields() {
      flags_ = 0;
      valueParameterReference_ = 0;
      constantValue_ = org.jetbrains.kotlin.metadata.ProtoBuf.Expression.ConstantValue.TRUE;
      isInstanceType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
      isInstanceTypeId_ = 0;
      andArgument_ = java.util.Collections.emptyList();
      orArgument_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (hasIsInstanceType()) {
        if (!getIsInstanceType().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getAndArgumentCount(); i++) {
        if (!getAndArgument(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getOrArgumentCount(); i++) {
        if (!getOrArgument(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, flags_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, valueParameterReference_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeEnum(3, constantValue_.getNumber());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, isInstanceType_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt32(5, isInstanceTypeId_);
      }
      for (int i = 0; i < andArgument_.size(); i++) {
        output.writeMessage(6, andArgument_.get(i));
      }
      for (int i = 0; i < orArgument_.size(); i++) {
        output.writeMessage(7, orArgument_.get(i));
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, flags_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(2, valueParameterReference_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(3, constantValue_.getNumber());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, isInstanceType_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(5, isInstanceTypeId_);
      }
      for (int i = 0; i < andArgument_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(6, andArgument_.get(i));
      }
      for (int i = 0; i < orArgument_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(7, orArgument_.get(i));
      }
      size += unknownFields.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.metadata.ProtoBuf.Expression parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Expression parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Expression parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Expression parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Expression parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Expression parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Expression parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Expression parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Expression parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.ProtoBuf.Expression parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.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.metadata.ProtoBuf.Expression prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.metadata.Expression}
     *
     * <pre>
     * We use some trickery to optimize memory footprint of contract-expressions:
     * exact type of Expression is determined based on its contents.
     * </pre>
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.metadata.ProtoBuf.Expression, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.Expression)
        org.jetbrains.kotlin.metadata.ProtoBuf.ExpressionOrBuilder {
      // Construct using org.jetbrains.kotlin.metadata.ProtoBuf.Expression.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        flags_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        valueParameterReference_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        constantValue_ = org.jetbrains.kotlin.metadata.ProtoBuf.Expression.ConstantValue.TRUE;
        bitField0_ = (bitField0_ & ~0x00000004);
        isInstanceType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        isInstanceTypeId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        andArgument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        orArgument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.Expression getDefaultInstanceForType() {
        return org.jetbrains.kotlin.metadata.ProtoBuf.Expression.getDefaultInstance();
      }

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

      public org.jetbrains.kotlin.metadata.ProtoBuf.Expression buildPartial() {
        org.jetbrains.kotlin.metadata.ProtoBuf.Expression result = new org.jetbrains.kotlin.metadata.ProtoBuf.Expression(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.valueParameterReference_ = valueParameterReference_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.constantValue_ = constantValue_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.isInstanceType_ = isInstanceType_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.isInstanceTypeId_ = isInstanceTypeId_;
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          andArgument_ = java.util.Collections.unmodifiableList(andArgument_);
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.andArgument_ = andArgument_;
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          orArgument_ = java.util.Collections.unmodifiableList(orArgument_);
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.orArgument_ = orArgument_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.metadata.ProtoBuf.Expression other) {
        if (other == org.jetbrains.kotlin.metadata.ProtoBuf.Expression.getDefaultInstance()) return this;
        if (other.hasFlags()) {
          setFlags(other.getFlags());
        }
        if (other.hasValueParameterReference()) {
          setValueParameterReference(other.getValueParameterReference());
        }
        if (other.hasConstantValue()) {
          setConstantValue(other.getConstantValue());
        }
        if (other.hasIsInstanceType()) {
          mergeIsInstanceType(other.getIsInstanceType());
        }
        if (other.hasIsInstanceTypeId()) {
          setIsInstanceTypeId(other.getIsInstanceTypeId());
        }
        if (!other.andArgument_.isEmpty()) {
          if (andArgument_.isEmpty()) {
            andArgument_ = other.andArgument_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureAndArgumentIsMutable();
            andArgument_.addAll(other.andArgument_);
          }
          
        }
        if (!other.orArgument_.isEmpty()) {
          if (orArgument_.isEmpty()) {
            orArgument_ = other.orArgument_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureOrArgumentIsMutable();
            orArgument_.addAll(other.orArgument_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (hasIsInstanceType()) {
          if (!getIsInstanceType().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getAndArgumentCount(); i++) {
          if (!getAndArgument(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getOrArgumentCount(); i++) {
          if (!getOrArgument(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

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

      private int flags_ ;
      /**
       * <code>optional int32 flags = 1 [default = 0];</code>
       *
       * <pre>
       *isNegated =&gt; this expression should be negated
       *isIsNullPredicate =&gt; this expression is IsNullPredicate with 'variableName' as argument
       * </pre>
       */
      public boolean hasFlags() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int32 flags = 1 [default = 0];</code>
       *
       * <pre>
       *isNegated =&gt; this expression should be negated
       *isIsNullPredicate =&gt; this expression is IsNullPredicate with 'variableName' as argument
       * </pre>
       */
      public int getFlags() {
        return flags_;
      }
      /**
       * <code>optional int32 flags = 1 [default = 0];</code>
       *
       * <pre>
       *isNegated =&gt; this expression should be negated
       *isIsNullPredicate =&gt; this expression is IsNullPredicate with 'variableName' as argument
       * </pre>
       */
      public Builder setFlags(int value) {
        bitField0_ |= 0x00000001;
        flags_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 flags = 1 [default = 0];</code>
       *
       * <pre>
       *isNegated =&gt; this expression should be negated
       *isIsNullPredicate =&gt; this expression is IsNullPredicate with 'variableName' as argument
       * </pre>
       */
      public Builder clearFlags() {
        bitField0_ = (bitField0_ & ~0x00000001);
        flags_ = 0;
        
        return this;
      }

      private int valueParameterReference_ ;
      /**
       * <code>optional int32 value_parameter_reference = 2;</code>
       *
       * <pre>
       * stored as index in valueParameters list of owner-function in 1-indexation
       * Index '0' is reserved for extension receiver
       * </pre>
       */
      public boolean hasValueParameterReference() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int32 value_parameter_reference = 2;</code>
       *
       * <pre>
       * stored as index in valueParameters list of owner-function in 1-indexation
       * Index '0' is reserved for extension receiver
       * </pre>
       */
      public int getValueParameterReference() {
        return valueParameterReference_;
      }
      /**
       * <code>optional int32 value_parameter_reference = 2;</code>
       *
       * <pre>
       * stored as index in valueParameters list of owner-function in 1-indexation
       * Index '0' is reserved for extension receiver
       * </pre>
       */
      public Builder setValueParameterReference(int value) {
        bitField0_ |= 0x00000002;
        valueParameterReference_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 value_parameter_reference = 2;</code>
       *
       * <pre>
       * stored as index in valueParameters list of owner-function in 1-indexation
       * Index '0' is reserved for extension receiver
       * </pre>
       */
      public Builder clearValueParameterReference() {
        bitField0_ = (bitField0_ & ~0x00000002);
        valueParameterReference_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.metadata.ProtoBuf.Expression.ConstantValue constantValue_ = org.jetbrains.kotlin.metadata.ProtoBuf.Expression.ConstantValue.TRUE;
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Expression.ConstantValue constant_value = 3;</code>
       */
      public boolean hasConstantValue() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Expression.ConstantValue constant_value = 3;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Expression.ConstantValue getConstantValue() {
        return constantValue_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Expression.ConstantValue constant_value = 3;</code>
       */
      public Builder setConstantValue(org.jetbrains.kotlin.metadata.ProtoBuf.Expression.ConstantValue value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        constantValue_ = value;
        
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Expression.ConstantValue constant_value = 3;</code>
       */
      public Builder clearConstantValue() {
        bitField0_ = (bitField0_ & ~0x00000004);
        constantValue_ = org.jetbrains.kotlin.metadata.ProtoBuf.Expression.ConstantValue.TRUE;
        
        return this;
      }

      private org.jetbrains.kotlin.metadata.ProtoBuf.Type isInstanceType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type is_instance_type = 4;</code>
       *
       * <pre>
       * present =&gt; this expression is IsInstancePredicate,  with 'variableName' as LHS
       * and with type encoded in either one of next two fields as RHS.
       * </pre>
       */
      public boolean hasIsInstanceType() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type is_instance_type = 4;</code>
       *
       * <pre>
       * present =&gt; this expression is IsInstancePredicate,  with 'variableName' as LHS
       * and with type encoded in either one of next two fields as RHS.
       * </pre>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Type getIsInstanceType() {
        return isInstanceType_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type is_instance_type = 4;</code>
       *
       * <pre>
       * present =&gt; this expression is IsInstancePredicate,  with 'variableName' as LHS
       * and with type encoded in either one of next two fields as RHS.
       * </pre>
       */
      public Builder setIsInstanceType(org.jetbrains.kotlin.metadata.ProtoBuf.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        isInstanceType_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type is_instance_type = 4;</code>
       *
       * <pre>
       * present =&gt; this expression is IsInstancePredicate,  with 'variableName' as LHS
       * and with type encoded in either one of next two fields as RHS.
       * </pre>
       */
      public Builder setIsInstanceType(
          org.jetbrains.kotlin.metadata.ProtoBuf.Type.Builder builderForValue) {
        isInstanceType_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type is_instance_type = 4;</code>
       *
       * <pre>
       * present =&gt; this expression is IsInstancePredicate,  with 'variableName' as LHS
       * and with type encoded in either one of next two fields as RHS.
       * </pre>
       */
      public Builder mergeIsInstanceType(org.jetbrains.kotlin.metadata.ProtoBuf.Type value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            isInstanceType_ != org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance()) {
          isInstanceType_ =
            org.jetbrains.kotlin.metadata.ProtoBuf.Type.newBuilder(isInstanceType_).mergeFrom(value).buildPartial();
        } else {
          isInstanceType_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.Type is_instance_type = 4;</code>
       *
       * <pre>
       * present =&gt; this expression is IsInstancePredicate,  with 'variableName' as LHS
       * and with type encoded in either one of next two fields as RHS.
       * </pre>
       */
      public Builder clearIsInstanceType() {
        isInstanceType_ = org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance();

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

      private int isInstanceTypeId_ ;
      /**
       * <code>optional int32 is_instance_type_id = 5;</code>
       */
      public boolean hasIsInstanceTypeId() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional int32 is_instance_type_id = 5;</code>
       */
      public int getIsInstanceTypeId() {
        return isInstanceTypeId_;
      }
      /**
       * <code>optional int32 is_instance_type_id = 5;</code>
       */
      public Builder setIsInstanceTypeId(int value) {
        bitField0_ |= 0x00000010;
        isInstanceTypeId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 is_instance_type_id = 5;</code>
       */
      public Builder clearIsInstanceTypeId() {
        bitField0_ = (bitField0_ & ~0x00000010);
        isInstanceTypeId_ = 0;
        
        return this;
      }

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Expression> andArgument_ =
        java.util.Collections.emptyList();
      private void ensureAndArgumentIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          andArgument_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Expression>(andArgument_);
          bitField0_ |= 0x00000020;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression and_argument = 6;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'andArguments[0] &amp;&amp; andArguments[1] &amp;&amp; ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message
       * </pre>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Expression> getAndArgumentList() {
        return java.util.Collections.unmodifiableList(andArgument_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression and_argument = 6;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'andArguments[0] &amp;&amp; andArguments[1] &amp;&amp; ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message
       * </pre>
       */
      public int getAndArgumentCount() {
        return andArgument_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression and_argument = 6;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'andArguments[0] &amp;&amp; andArguments[1] &amp;&amp; ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message
       * </pre>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Expression getAndArgument(int index) {
        return andArgument_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression and_argument = 6;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'andArguments[0] &amp;&amp; andArguments[1] &amp;&amp; ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message
       * </pre>
       */
      public Builder setAndArgument(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureAndArgumentIsMutable();
        andArgument_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression and_argument = 6;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'andArguments[0] &amp;&amp; andArguments[1] &amp;&amp; ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message
       * </pre>
       */
      public Builder setAndArgument(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Expression.Builder builderForValue) {
        ensureAndArgumentIsMutable();
        andArgument_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression and_argument = 6;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'andArguments[0] &amp;&amp; andArguments[1] &amp;&amp; ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message
       * </pre>
       */
      public Builder addAndArgument(org.jetbrains.kotlin.metadata.ProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureAndArgumentIsMutable();
        andArgument_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression and_argument = 6;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'andArguments[0] &amp;&amp; andArguments[1] &amp;&amp; ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message
       * </pre>
       */
      public Builder addAndArgument(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureAndArgumentIsMutable();
        andArgument_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression and_argument = 6;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'andArguments[0] &amp;&amp; andArguments[1] &amp;&amp; ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message
       * </pre>
       */
      public Builder addAndArgument(
          org.jetbrains.kotlin.metadata.ProtoBuf.Expression.Builder builderForValue) {
        ensureAndArgumentIsMutable();
        andArgument_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression and_argument = 6;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'andArguments[0] &amp;&amp; andArguments[1] &amp;&amp; ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message
       * </pre>
       */
      public Builder addAndArgument(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Expression.Builder builderForValue) {
        ensureAndArgumentIsMutable();
        andArgument_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression and_argument = 6;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'andArguments[0] &amp;&amp; andArguments[1] &amp;&amp; ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message
       * </pre>
       */
      public Builder addAllAndArgument(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.ProtoBuf.Expression> values) {
        ensureAndArgumentIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, andArgument_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression and_argument = 6;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'andArguments[0] &amp;&amp; andArguments[1] &amp;&amp; ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message
       * </pre>
       */
      public Builder clearAndArgument() {
        andArgument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression and_argument = 6;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'andArguments[0] &amp;&amp; andArguments[1] &amp;&amp; ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message
       * </pre>
       */
      public Builder removeAndArgument(int index) {
        ensureAndArgumentIsMutable();
        andArgument_.remove(index);

        return this;
      }

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Expression> orArgument_ =
        java.util.Collections.emptyList();
      private void ensureOrArgumentIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          orArgument_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Expression>(orArgument_);
          bitField0_ |= 0x00000040;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression or_argument = 7;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'orArguments[0] || andArguments[1] || ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message.
       * </pre>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Expression> getOrArgumentList() {
        return java.util.Collections.unmodifiableList(orArgument_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression or_argument = 7;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'orArguments[0] || andArguments[1] || ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message.
       * </pre>
       */
      public int getOrArgumentCount() {
        return orArgument_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression or_argument = 7;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'orArguments[0] || andArguments[1] || ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message.
       * </pre>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Expression getOrArgument(int index) {
        return orArgument_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression or_argument = 7;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'orArguments[0] || andArguments[1] || ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message.
       * </pre>
       */
      public Builder setOrArgument(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureOrArgumentIsMutable();
        orArgument_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression or_argument = 7;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'orArguments[0] || andArguments[1] || ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message.
       * </pre>
       */
      public Builder setOrArgument(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Expression.Builder builderForValue) {
        ensureOrArgumentIsMutable();
        orArgument_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression or_argument = 7;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'orArguments[0] || andArguments[1] || ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message.
       * </pre>
       */
      public Builder addOrArgument(org.jetbrains.kotlin.metadata.ProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureOrArgumentIsMutable();
        orArgument_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression or_argument = 7;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'orArguments[0] || andArguments[1] || ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message.
       * </pre>
       */
      public Builder addOrArgument(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureOrArgumentIsMutable();
        orArgument_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression or_argument = 7;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'orArguments[0] || andArguments[1] || ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message.
       * </pre>
       */
      public Builder addOrArgument(
          org.jetbrains.kotlin.metadata.ProtoBuf.Expression.Builder builderForValue) {
        ensureOrArgumentIsMutable();
        orArgument_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression or_argument = 7;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'orArguments[0] || andArguments[1] || ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message.
       * </pre>
       */
      public Builder addOrArgument(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Expression.Builder builderForValue) {
        ensureOrArgumentIsMutable();
        orArgument_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression or_argument = 7;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'orArguments[0] || andArguments[1] || ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message.
       * </pre>
       */
      public Builder addAllOrArgument(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.ProtoBuf.Expression> values) {
        ensureOrArgumentIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, orArgument_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression or_argument = 7;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'orArguments[0] || andArguments[1] || ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message.
       * </pre>
       */
      public Builder clearOrArgument() {
        orArgument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Expression or_argument = 7;</code>
       *
       * <pre>
       * non-empty =&gt; this expression is boolean formula of form 'orArguments[0] || andArguments[1] || ...'
       * Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
       * it is optimized and embedded straight into this message.
       * </pre>
       */
      public Builder removeOrArgument(int index) {
        ensureOrArgumentIsMutable();
        orArgument_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.metadata.Expression)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.metadata.Expression)
  }


  static {
  }

  // @@protoc_insertion_point(outer_class_scope)
}