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

package org.jetbrains.kotlin.metadata.jvm;

public final class JvmModuleProtoBuf {
  private JvmModuleProtoBuf() {}
  public static void registerAllExtensions(
      org.jetbrains.kotlin.protobuf.ExtensionRegistryLite registry) {
  }
  public interface ModuleOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.jvm.Module)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts package_parts = 1;</code>
     *
     * <pre>
     * Names of .class files for each package
     * </pre>
     */
    java.util.List<org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts> 
        getPackagePartsList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts package_parts = 1;</code>
     *
     * <pre>
     * Names of .class files for each package
     * </pre>
     */
    org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts getPackageParts(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts package_parts = 1;</code>
     *
     * <pre>
     * Names of .class files for each package
     * </pre>
     */
    int getPackagePartsCount();

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts metadata_parts = 2;</code>
     *
     * <pre>
     * Names of .kotlin_metadata files for each package
     * </pre>
     */
    java.util.List<org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts> 
        getMetadataPartsList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts metadata_parts = 2;</code>
     *
     * <pre>
     * Names of .kotlin_metadata files for each package
     * </pre>
     */
    org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts getMetadataParts(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts metadata_parts = 2;</code>
     *
     * <pre>
     * Names of .kotlin_metadata files for each package
     * </pre>
     */
    int getMetadataPartsCount();

    /**
     * <code>repeated string jvm_package_name = 3;</code>
     *
     * <pre>
     * Values of &#64;JvmPackageName annotation used in this module; can be referenced in PackageParts#class_with_jvm_package_name_package_id.
     * The names here are dot-separated, e.g. "org.foo.bar"
     * </pre>
     */
    org.jetbrains.kotlin.protobuf.ProtocolStringList
        getJvmPackageNameList();
    /**
     * <code>repeated string jvm_package_name = 3;</code>
     *
     * <pre>
     * Values of &#64;JvmPackageName annotation used in this module; can be referenced in PackageParts#class_with_jvm_package_name_package_id.
     * The names here are dot-separated, e.g. "org.foo.bar"
     * </pre>
     */
    int getJvmPackageNameCount();
    /**
     * <code>repeated string jvm_package_name = 3;</code>
     *
     * <pre>
     * Values of &#64;JvmPackageName annotation used in this module; can be referenced in PackageParts#class_with_jvm_package_name_package_id.
     * The names here are dot-separated, e.g. "org.foo.bar"
     * </pre>
     */
    java.lang.String getJvmPackageName(int index);
    /**
     * <code>repeated string jvm_package_name = 3;</code>
     *
     * <pre>
     * Values of &#64;JvmPackageName annotation used in this module; can be referenced in PackageParts#class_with_jvm_package_name_package_id.
     * The names here are dot-separated, e.g. "org.foo.bar"
     * </pre>
     */
    org.jetbrains.kotlin.protobuf.ByteString
        getJvmPackageNameBytes(int index);

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.StringTable string_table = 4;</code>
     */
    boolean hasStringTable();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.StringTable string_table = 4;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.StringTable getStringTable();

    /**
     * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_name_table = 5;</code>
     */
    boolean hasQualifiedNameTable();
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_name_table = 5;</code>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable getQualifiedNameTable();

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6;</code>
     *
     * <pre>
     * Annotations on the whole module
     * </pre>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Annotation> 
        getAnnotationList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6;</code>
     *
     * <pre>
     * Annotations on the whole module
     * </pre>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Annotation getAnnotation(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6;</code>
     *
     * <pre>
     * Annotations on the whole module
     * </pre>
     */
    int getAnnotationCount();

    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Class optional_annotation_class = 16;</code>
     *
     * <pre>
     * &#64;OptionalExpectation-annotated annotation classes in this module. This list is only used in the compiler frontend when compiling
     * a second-tier multiplatform module against a multiplatform module which uses optional annotations, not actualized on the JVM.
     * This is not needed in the IDE because optional annotations can only be used in common modules, where the IDE plugin resolves
     * it to the corresponding class with the resolution capabilities of common modules.
     * </pre>
     */
    java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Class> 
        getOptionalAnnotationClassList();
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Class optional_annotation_class = 16;</code>
     *
     * <pre>
     * &#64;OptionalExpectation-annotated annotation classes in this module. This list is only used in the compiler frontend when compiling
     * a second-tier multiplatform module against a multiplatform module which uses optional annotations, not actualized on the JVM.
     * This is not needed in the IDE because optional annotations can only be used in common modules, where the IDE plugin resolves
     * it to the corresponding class with the resolution capabilities of common modules.
     * </pre>
     */
    org.jetbrains.kotlin.metadata.ProtoBuf.Class getOptionalAnnotationClass(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Class optional_annotation_class = 16;</code>
     *
     * <pre>
     * &#64;OptionalExpectation-annotated annotation classes in this module. This list is only used in the compiler frontend when compiling
     * a second-tier multiplatform module against a multiplatform module which uses optional annotations, not actualized on the JVM.
     * This is not needed in the IDE because optional annotations can only be used in common modules, where the IDE plugin resolves
     * it to the corresponding class with the resolution capabilities of common modules.
     * </pre>
     */
    int getOptionalAnnotationClassCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.jvm.Module}
   */
  public static final class Module extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.jvm.Module)
      ModuleOrBuilder {
    // Use Module.newBuilder() to construct.
    private Module(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Module(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Module getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Module(
        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)) {
                packageParts_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts>();
                mutable_bitField0_ |= 0x00000001;
              }
              packageParts_.add(input.readMessage(org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts.PARSER, extensionRegistry));
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                metadataParts_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts>();
                mutable_bitField0_ |= 0x00000002;
              }
              metadataParts_.add(input.readMessage(org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts.PARSER, extensionRegistry));
              break;
            }
            case 26: {
              org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                jvmPackageName_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              jvmPackageName_.add(bs);
              break;
            }
            case 34: {
              org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = stringTable_.toBuilder();
              }
              stringTable_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(stringTable_);
                stringTable_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 42: {
              org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = qualifiedNameTable_.toBuilder();
              }
              qualifiedNameTable_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(qualifiedNameTable_);
                qualifiedNameTable_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 50: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                annotation_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Annotation>();
                mutable_bitField0_ |= 0x00000020;
              }
              annotation_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.PARSER, extensionRegistry));
              break;
            }
            case 130: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                optionalAnnotationClass_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Class>();
                mutable_bitField0_ |= 0x00000040;
              }
              optionalAnnotationClass_.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_ & 0x00000001) == 0x00000001)) {
          packageParts_ = java.util.Collections.unmodifiableList(packageParts_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          metadataParts_ = java.util.Collections.unmodifiableList(metadataParts_);
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          jvmPackageName_ = jvmPackageName_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          annotation_ = java.util.Collections.unmodifiableList(annotation_);
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          optionalAnnotationClass_ = java.util.Collections.unmodifiableList(optionalAnnotationClass_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Module> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Module>() {
      public Module parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Module(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int PACKAGE_PARTS_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts> packageParts_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts package_parts = 1;</code>
     *
     * <pre>
     * Names of .class files for each package
     * </pre>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts> getPackagePartsList() {
      return packageParts_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts package_parts = 1;</code>
     *
     * <pre>
     * Names of .class files for each package
     * </pre>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackagePartsOrBuilder> 
        getPackagePartsOrBuilderList() {
      return packageParts_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts package_parts = 1;</code>
     *
     * <pre>
     * Names of .class files for each package
     * </pre>
     */
    public int getPackagePartsCount() {
      return packageParts_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts package_parts = 1;</code>
     *
     * <pre>
     * Names of .class files for each package
     * </pre>
     */
    public org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts getPackageParts(int index) {
      return packageParts_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts package_parts = 1;</code>
     *
     * <pre>
     * Names of .class files for each package
     * </pre>
     */
    public org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackagePartsOrBuilder getPackagePartsOrBuilder(
        int index) {
      return packageParts_.get(index);
    }

    public static final int METADATA_PARTS_FIELD_NUMBER = 2;
    private java.util.List<org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts> metadataParts_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts metadata_parts = 2;</code>
     *
     * <pre>
     * Names of .kotlin_metadata files for each package
     * </pre>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts> getMetadataPartsList() {
      return metadataParts_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts metadata_parts = 2;</code>
     *
     * <pre>
     * Names of .kotlin_metadata files for each package
     * </pre>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackagePartsOrBuilder> 
        getMetadataPartsOrBuilderList() {
      return metadataParts_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts metadata_parts = 2;</code>
     *
     * <pre>
     * Names of .kotlin_metadata files for each package
     * </pre>
     */
    public int getMetadataPartsCount() {
      return metadataParts_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts metadata_parts = 2;</code>
     *
     * <pre>
     * Names of .kotlin_metadata files for each package
     * </pre>
     */
    public org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts getMetadataParts(int index) {
      return metadataParts_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts metadata_parts = 2;</code>
     *
     * <pre>
     * Names of .kotlin_metadata files for each package
     * </pre>
     */
    public org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackagePartsOrBuilder getMetadataPartsOrBuilder(
        int index) {
      return metadataParts_.get(index);
    }

    public static final int JVM_PACKAGE_NAME_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.protobuf.LazyStringList jvmPackageName_;
    /**
     * <code>repeated string jvm_package_name = 3;</code>
     *
     * <pre>
     * Values of &#64;JvmPackageName annotation used in this module; can be referenced in PackageParts#class_with_jvm_package_name_package_id.
     * The names here are dot-separated, e.g. "org.foo.bar"
     * </pre>
     */
    public org.jetbrains.kotlin.protobuf.ProtocolStringList
        getJvmPackageNameList() {
      return jvmPackageName_;
    }
    /**
     * <code>repeated string jvm_package_name = 3;</code>
     *
     * <pre>
     * Values of &#64;JvmPackageName annotation used in this module; can be referenced in PackageParts#class_with_jvm_package_name_package_id.
     * The names here are dot-separated, e.g. "org.foo.bar"
     * </pre>
     */
    public int getJvmPackageNameCount() {
      return jvmPackageName_.size();
    }
    /**
     * <code>repeated string jvm_package_name = 3;</code>
     *
     * <pre>
     * Values of &#64;JvmPackageName annotation used in this module; can be referenced in PackageParts#class_with_jvm_package_name_package_id.
     * The names here are dot-separated, e.g. "org.foo.bar"
     * </pre>
     */
    public java.lang.String getJvmPackageName(int index) {
      return jvmPackageName_.get(index);
    }
    /**
     * <code>repeated string jvm_package_name = 3;</code>
     *
     * <pre>
     * Values of &#64;JvmPackageName annotation used in this module; can be referenced in PackageParts#class_with_jvm_package_name_package_id.
     * The names here are dot-separated, e.g. "org.foo.bar"
     * </pre>
     */
    public org.jetbrains.kotlin.protobuf.ByteString
        getJvmPackageNameBytes(int index) {
      return jvmPackageName_.getByteString(index);
    }

    public static final int STRING_TABLE_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.metadata.ProtoBuf.StringTable stringTable_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.StringTable string_table = 4;</code>
     */
    public boolean hasStringTable() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.StringTable string_table = 4;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.StringTable getStringTable() {
      return stringTable_;
    }

    public static final int QUALIFIED_NAME_TABLE_FIELD_NUMBER = 5;
    private org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable qualifiedNameTable_;
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_name_table = 5;</code>
     */
    public boolean hasQualifiedNameTable() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_name_table = 5;</code>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable getQualifiedNameTable() {
      return qualifiedNameTable_;
    }

    public static final int ANNOTATION_FIELD_NUMBER = 6;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Annotation> annotation_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6;</code>
     *
     * <pre>
     * Annotations on the whole module
     * </pre>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Annotation> getAnnotationList() {
      return annotation_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6;</code>
     *
     * <pre>
     * Annotations on the whole module
     * </pre>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.AnnotationOrBuilder> 
        getAnnotationOrBuilderList() {
      return annotation_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6;</code>
     *
     * <pre>
     * Annotations on the whole module
     * </pre>
     */
    public int getAnnotationCount() {
      return annotation_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6;</code>
     *
     * <pre>
     * Annotations on the whole module
     * </pre>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Annotation getAnnotation(int index) {
      return annotation_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6;</code>
     *
     * <pre>
     * Annotations on the whole module
     * </pre>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.AnnotationOrBuilder getAnnotationOrBuilder(
        int index) {
      return annotation_.get(index);
    }

    public static final int OPTIONAL_ANNOTATION_CLASS_FIELD_NUMBER = 16;
    private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Class> optionalAnnotationClass_;
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Class optional_annotation_class = 16;</code>
     *
     * <pre>
     * &#64;OptionalExpectation-annotated annotation classes in this module. This list is only used in the compiler frontend when compiling
     * a second-tier multiplatform module against a multiplatform module which uses optional annotations, not actualized on the JVM.
     * This is not needed in the IDE because optional annotations can only be used in common modules, where the IDE plugin resolves
     * it to the corresponding class with the resolution capabilities of common modules.
     * </pre>
     */
    public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Class> getOptionalAnnotationClassList() {
      return optionalAnnotationClass_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Class optional_annotation_class = 16;</code>
     *
     * <pre>
     * &#64;OptionalExpectation-annotated annotation classes in this module. This list is only used in the compiler frontend when compiling
     * a second-tier multiplatform module against a multiplatform module which uses optional annotations, not actualized on the JVM.
     * This is not needed in the IDE because optional annotations can only be used in common modules, where the IDE plugin resolves
     * it to the corresponding class with the resolution capabilities of common modules.
     * </pre>
     */
    public java.util.List<? extends org.jetbrains.kotlin.metadata.ProtoBuf.ClassOrBuilder> 
        getOptionalAnnotationClassOrBuilderList() {
      return optionalAnnotationClass_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Class optional_annotation_class = 16;</code>
     *
     * <pre>
     * &#64;OptionalExpectation-annotated annotation classes in this module. This list is only used in the compiler frontend when compiling
     * a second-tier multiplatform module against a multiplatform module which uses optional annotations, not actualized on the JVM.
     * This is not needed in the IDE because optional annotations can only be used in common modules, where the IDE plugin resolves
     * it to the corresponding class with the resolution capabilities of common modules.
     * </pre>
     */
    public int getOptionalAnnotationClassCount() {
      return optionalAnnotationClass_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Class optional_annotation_class = 16;</code>
     *
     * <pre>
     * &#64;OptionalExpectation-annotated annotation classes in this module. This list is only used in the compiler frontend when compiling
     * a second-tier multiplatform module against a multiplatform module which uses optional annotations, not actualized on the JVM.
     * This is not needed in the IDE because optional annotations can only be used in common modules, where the IDE plugin resolves
     * it to the corresponding class with the resolution capabilities of common modules.
     * </pre>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.Class getOptionalAnnotationClass(int index) {
      return optionalAnnotationClass_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.metadata.Class optional_annotation_class = 16;</code>
     *
     * <pre>
     * &#64;OptionalExpectation-annotated annotation classes in this module. This list is only used in the compiler frontend when compiling
     * a second-tier multiplatform module against a multiplatform module which uses optional annotations, not actualized on the JVM.
     * This is not needed in the IDE because optional annotations can only be used in common modules, where the IDE plugin resolves
     * it to the corresponding class with the resolution capabilities of common modules.
     * </pre>
     */
    public org.jetbrains.kotlin.metadata.ProtoBuf.ClassOrBuilder getOptionalAnnotationClassOrBuilder(
        int index) {
      return optionalAnnotationClass_.get(index);
    }

    private void initFields() {
      packageParts_ = java.util.Collections.emptyList();
      metadataParts_ = java.util.Collections.emptyList();
      jvmPackageName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
      stringTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance();
      qualifiedNameTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance();
      annotation_ = java.util.Collections.emptyList();
      optionalAnnotationClass_ = 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 < getPackagePartsCount(); i++) {
        if (!getPackageParts(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getMetadataPartsCount(); i++) {
        if (!getMetadataParts(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasQualifiedNameTable()) {
        if (!getQualifiedNameTable().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getAnnotationCount(); i++) {
        if (!getAnnotation(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getOptionalAnnotationClassCount(); i++) {
        if (!getOptionalAnnotationClass(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 < packageParts_.size(); i++) {
        output.writeMessage(1, packageParts_.get(i));
      }
      for (int i = 0; i < metadataParts_.size(); i++) {
        output.writeMessage(2, metadataParts_.get(i));
      }
      for (int i = 0; i < jvmPackageName_.size(); i++) {
        output.writeBytes(3, jvmPackageName_.getByteString(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(4, stringTable_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(5, qualifiedNameTable_);
      }
      for (int i = 0; i < annotation_.size(); i++) {
        output.writeMessage(6, annotation_.get(i));
      }
      for (int i = 0; i < optionalAnnotationClass_.size(); i++) {
        output.writeMessage(16, optionalAnnotationClass_.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 < packageParts_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, packageParts_.get(i));
      }
      for (int i = 0; i < metadataParts_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, metadataParts_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < jvmPackageName_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(jvmPackageName_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getJvmPackageNameList().size();
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, stringTable_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, qualifiedNameTable_);
      }
      for (int i = 0; i < annotation_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(6, annotation_.get(i));
      }
      for (int i = 0; i < optionalAnnotationClass_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(16, optionalAnnotationClass_.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.jvm.JvmModuleProtoBuf.Module parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.Module 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.jvm.JvmModuleProtoBuf.Module parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.Module 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.jvm.JvmModuleProtoBuf.Module parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.Module 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.jvm.JvmModuleProtoBuf.Module parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.Module 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.jvm.JvmModuleProtoBuf.Module parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.Module 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.jvm.JvmModuleProtoBuf.Module prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        packageParts_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        metadataParts_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        jvmPackageName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        stringTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        qualifiedNameTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000010);
        annotation_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        optionalAnnotationClass_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }

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

      public org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.Module getDefaultInstanceForType() {
        return org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.Module.getDefaultInstance();
      }

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

      public org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.Module buildPartial() {
        org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.Module result = new org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.Module(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          packageParts_ = java.util.Collections.unmodifiableList(packageParts_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.packageParts_ = packageParts_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          metadataParts_ = java.util.Collections.unmodifiableList(metadataParts_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.metadataParts_ = metadataParts_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          jvmPackageName_ = jvmPackageName_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.jvmPackageName_ = jvmPackageName_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000001;
        }
        result.stringTable_ = stringTable_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000002;
        }
        result.qualifiedNameTable_ = qualifiedNameTable_;
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          annotation_ = java.util.Collections.unmodifiableList(annotation_);
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.annotation_ = annotation_;
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          optionalAnnotationClass_ = java.util.Collections.unmodifiableList(optionalAnnotationClass_);
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.optionalAnnotationClass_ = optionalAnnotationClass_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.Module other) {
        if (other == org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.Module.getDefaultInstance()) return this;
        if (!other.packageParts_.isEmpty()) {
          if (packageParts_.isEmpty()) {
            packageParts_ = other.packageParts_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensurePackagePartsIsMutable();
            packageParts_.addAll(other.packageParts_);
          }
          
        }
        if (!other.metadataParts_.isEmpty()) {
          if (metadataParts_.isEmpty()) {
            metadataParts_ = other.metadataParts_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureMetadataPartsIsMutable();
            metadataParts_.addAll(other.metadataParts_);
          }
          
        }
        if (!other.jvmPackageName_.isEmpty()) {
          if (jvmPackageName_.isEmpty()) {
            jvmPackageName_ = other.jvmPackageName_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureJvmPackageNameIsMutable();
            jvmPackageName_.addAll(other.jvmPackageName_);
          }
          
        }
        if (other.hasStringTable()) {
          mergeStringTable(other.getStringTable());
        }
        if (other.hasQualifiedNameTable()) {
          mergeQualifiedNameTable(other.getQualifiedNameTable());
        }
        if (!other.annotation_.isEmpty()) {
          if (annotation_.isEmpty()) {
            annotation_ = other.annotation_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureAnnotationIsMutable();
            annotation_.addAll(other.annotation_);
          }
          
        }
        if (!other.optionalAnnotationClass_.isEmpty()) {
          if (optionalAnnotationClass_.isEmpty()) {
            optionalAnnotationClass_ = other.optionalAnnotationClass_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureOptionalAnnotationClassIsMutable();
            optionalAnnotationClass_.addAll(other.optionalAnnotationClass_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getPackagePartsCount(); i++) {
          if (!getPackageParts(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getMetadataPartsCount(); i++) {
          if (!getMetadataParts(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasQualifiedNameTable()) {
          if (!getQualifiedNameTable().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getAnnotationCount(); i++) {
          if (!getAnnotation(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getOptionalAnnotationClassCount(); i++) {
          if (!getOptionalAnnotationClass(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.jvm.JvmModuleProtoBuf.Module parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.Module) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts> packageParts_ =
        java.util.Collections.emptyList();
      private void ensurePackagePartsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          packageParts_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts>(packageParts_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts package_parts = 1;</code>
       *
       * <pre>
       * Names of .class files for each package
       * </pre>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts> getPackagePartsList() {
        return java.util.Collections.unmodifiableList(packageParts_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts package_parts = 1;</code>
       *
       * <pre>
       * Names of .class files for each package
       * </pre>
       */
      public int getPackagePartsCount() {
        return packageParts_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts package_parts = 1;</code>
       *
       * <pre>
       * Names of .class files for each package
       * </pre>
       */
      public org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts getPackageParts(int index) {
        return packageParts_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts package_parts = 1;</code>
       *
       * <pre>
       * Names of .class files for each package
       * </pre>
       */
      public Builder setPackageParts(
          int index, org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensurePackagePartsIsMutable();
        packageParts_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts package_parts = 1;</code>
       *
       * <pre>
       * Names of .class files for each package
       * </pre>
       */
      public Builder setPackageParts(
          int index, org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts.Builder builderForValue) {
        ensurePackagePartsIsMutable();
        packageParts_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts package_parts = 1;</code>
       *
       * <pre>
       * Names of .class files for each package
       * </pre>
       */
      public Builder addPackageParts(org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensurePackagePartsIsMutable();
        packageParts_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts package_parts = 1;</code>
       *
       * <pre>
       * Names of .class files for each package
       * </pre>
       */
      public Builder addPackageParts(
          int index, org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensurePackagePartsIsMutable();
        packageParts_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts package_parts = 1;</code>
       *
       * <pre>
       * Names of .class files for each package
       * </pre>
       */
      public Builder addPackageParts(
          org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts.Builder builderForValue) {
        ensurePackagePartsIsMutable();
        packageParts_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts package_parts = 1;</code>
       *
       * <pre>
       * Names of .class files for each package
       * </pre>
       */
      public Builder addPackageParts(
          int index, org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts.Builder builderForValue) {
        ensurePackagePartsIsMutable();
        packageParts_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts package_parts = 1;</code>
       *
       * <pre>
       * Names of .class files for each package
       * </pre>
       */
      public Builder addAllPackageParts(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts> values) {
        ensurePackagePartsIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, packageParts_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts package_parts = 1;</code>
       *
       * <pre>
       * Names of .class files for each package
       * </pre>
       */
      public Builder clearPackageParts() {
        packageParts_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts package_parts = 1;</code>
       *
       * <pre>
       * Names of .class files for each package
       * </pre>
       */
      public Builder removePackageParts(int index) {
        ensurePackagePartsIsMutable();
        packageParts_.remove(index);

        return this;
      }

      private java.util.List<org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts> metadataParts_ =
        java.util.Collections.emptyList();
      private void ensureMetadataPartsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          metadataParts_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts>(metadataParts_);
          bitField0_ |= 0x00000002;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts metadata_parts = 2;</code>
       *
       * <pre>
       * Names of .kotlin_metadata files for each package
       * </pre>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts> getMetadataPartsList() {
        return java.util.Collections.unmodifiableList(metadataParts_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts metadata_parts = 2;</code>
       *
       * <pre>
       * Names of .kotlin_metadata files for each package
       * </pre>
       */
      public int getMetadataPartsCount() {
        return metadataParts_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts metadata_parts = 2;</code>
       *
       * <pre>
       * Names of .kotlin_metadata files for each package
       * </pre>
       */
      public org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts getMetadataParts(int index) {
        return metadataParts_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts metadata_parts = 2;</code>
       *
       * <pre>
       * Names of .kotlin_metadata files for each package
       * </pre>
       */
      public Builder setMetadataParts(
          int index, org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureMetadataPartsIsMutable();
        metadataParts_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts metadata_parts = 2;</code>
       *
       * <pre>
       * Names of .kotlin_metadata files for each package
       * </pre>
       */
      public Builder setMetadataParts(
          int index, org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts.Builder builderForValue) {
        ensureMetadataPartsIsMutable();
        metadataParts_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts metadata_parts = 2;</code>
       *
       * <pre>
       * Names of .kotlin_metadata files for each package
       * </pre>
       */
      public Builder addMetadataParts(org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureMetadataPartsIsMutable();
        metadataParts_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts metadata_parts = 2;</code>
       *
       * <pre>
       * Names of .kotlin_metadata files for each package
       * </pre>
       */
      public Builder addMetadataParts(
          int index, org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureMetadataPartsIsMutable();
        metadataParts_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts metadata_parts = 2;</code>
       *
       * <pre>
       * Names of .kotlin_metadata files for each package
       * </pre>
       */
      public Builder addMetadataParts(
          org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts.Builder builderForValue) {
        ensureMetadataPartsIsMutable();
        metadataParts_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts metadata_parts = 2;</code>
       *
       * <pre>
       * Names of .kotlin_metadata files for each package
       * </pre>
       */
      public Builder addMetadataParts(
          int index, org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts.Builder builderForValue) {
        ensureMetadataPartsIsMutable();
        metadataParts_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts metadata_parts = 2;</code>
       *
       * <pre>
       * Names of .kotlin_metadata files for each package
       * </pre>
       */
      public Builder addAllMetadataParts(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts> values) {
        ensureMetadataPartsIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, metadataParts_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts metadata_parts = 2;</code>
       *
       * <pre>
       * Names of .kotlin_metadata files for each package
       * </pre>
       */
      public Builder clearMetadataParts() {
        metadataParts_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.jvm.PackageParts metadata_parts = 2;</code>
       *
       * <pre>
       * Names of .kotlin_metadata files for each package
       * </pre>
       */
      public Builder removeMetadataParts(int index) {
        ensureMetadataPartsIsMutable();
        metadataParts_.remove(index);

        return this;
      }

      private org.jetbrains.kotlin.protobuf.LazyStringList jvmPackageName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
      private void ensureJvmPackageNameIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          jvmPackageName_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(jvmPackageName_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated string jvm_package_name = 3;</code>
       *
       * <pre>
       * Values of &#64;JvmPackageName annotation used in this module; can be referenced in PackageParts#class_with_jvm_package_name_package_id.
       * The names here are dot-separated, e.g. "org.foo.bar"
       * </pre>
       */
      public org.jetbrains.kotlin.protobuf.ProtocolStringList
          getJvmPackageNameList() {
        return jvmPackageName_.getUnmodifiableView();
      }
      /**
       * <code>repeated string jvm_package_name = 3;</code>
       *
       * <pre>
       * Values of &#64;JvmPackageName annotation used in this module; can be referenced in PackageParts#class_with_jvm_package_name_package_id.
       * The names here are dot-separated, e.g. "org.foo.bar"
       * </pre>
       */
      public int getJvmPackageNameCount() {
        return jvmPackageName_.size();
      }
      /**
       * <code>repeated string jvm_package_name = 3;</code>
       *
       * <pre>
       * Values of &#64;JvmPackageName annotation used in this module; can be referenced in PackageParts#class_with_jvm_package_name_package_id.
       * The names here are dot-separated, e.g. "org.foo.bar"
       * </pre>
       */
      public java.lang.String getJvmPackageName(int index) {
        return jvmPackageName_.get(index);
      }
      /**
       * <code>repeated string jvm_package_name = 3;</code>
       *
       * <pre>
       * Values of &#64;JvmPackageName annotation used in this module; can be referenced in PackageParts#class_with_jvm_package_name_package_id.
       * The names here are dot-separated, e.g. "org.foo.bar"
       * </pre>
       */
      public org.jetbrains.kotlin.protobuf.ByteString
          getJvmPackageNameBytes(int index) {
        return jvmPackageName_.getByteString(index);
      }
      /**
       * <code>repeated string jvm_package_name = 3;</code>
       *
       * <pre>
       * Values of &#64;JvmPackageName annotation used in this module; can be referenced in PackageParts#class_with_jvm_package_name_package_id.
       * The names here are dot-separated, e.g. "org.foo.bar"
       * </pre>
       */
      public Builder setJvmPackageName(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureJvmPackageNameIsMutable();
        jvmPackageName_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated string jvm_package_name = 3;</code>
       *
       * <pre>
       * Values of &#64;JvmPackageName annotation used in this module; can be referenced in PackageParts#class_with_jvm_package_name_package_id.
       * The names here are dot-separated, e.g. "org.foo.bar"
       * </pre>
       */
      public Builder addJvmPackageName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureJvmPackageNameIsMutable();
        jvmPackageName_.add(value);
        
        return this;
      }
      /**
       * <code>repeated string jvm_package_name = 3;</code>
       *
       * <pre>
       * Values of &#64;JvmPackageName annotation used in this module; can be referenced in PackageParts#class_with_jvm_package_name_package_id.
       * The names here are dot-separated, e.g. "org.foo.bar"
       * </pre>
       */
      public Builder addAllJvmPackageName(
          java.lang.Iterable<java.lang.String> values) {
        ensureJvmPackageNameIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, jvmPackageName_);
        
        return this;
      }
      /**
       * <code>repeated string jvm_package_name = 3;</code>
       *
       * <pre>
       * Values of &#64;JvmPackageName annotation used in this module; can be referenced in PackageParts#class_with_jvm_package_name_package_id.
       * The names here are dot-separated, e.g. "org.foo.bar"
       * </pre>
       */
      public Builder clearJvmPackageName() {
        jvmPackageName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        
        return this;
      }
      /**
       * <code>repeated string jvm_package_name = 3;</code>
       *
       * <pre>
       * Values of &#64;JvmPackageName annotation used in this module; can be referenced in PackageParts#class_with_jvm_package_name_package_id.
       * The names here are dot-separated, e.g. "org.foo.bar"
       * </pre>
       */
      public Builder addJvmPackageNameBytes(
          org.jetbrains.kotlin.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureJvmPackageNameIsMutable();
        jvmPackageName_.add(value);
        
        return this;
      }

      private org.jetbrains.kotlin.metadata.ProtoBuf.StringTable stringTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.StringTable string_table = 4;</code>
       */
      public boolean hasStringTable() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.StringTable string_table = 4;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.StringTable getStringTable() {
        return stringTable_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.StringTable string_table = 4;</code>
       */
      public Builder setStringTable(org.jetbrains.kotlin.metadata.ProtoBuf.StringTable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        stringTable_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.StringTable string_table = 4;</code>
       */
      public Builder setStringTable(
          org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.Builder builderForValue) {
        stringTable_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.StringTable string_table = 4;</code>
       */
      public Builder mergeStringTable(org.jetbrains.kotlin.metadata.ProtoBuf.StringTable value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            stringTable_ != org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance()) {
          stringTable_ =
            org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.newBuilder(stringTable_).mergeFrom(value).buildPartial();
        } else {
          stringTable_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.StringTable string_table = 4;</code>
       */
      public Builder clearStringTable() {
        stringTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance();

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

      private org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable qualifiedNameTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_name_table = 5;</code>
       */
      public boolean hasQualifiedNameTable() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_name_table = 5;</code>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable getQualifiedNameTable() {
        return qualifiedNameTable_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_name_table = 5;</code>
       */
      public Builder setQualifiedNameTable(org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        qualifiedNameTable_ = value;

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_name_table = 5;</code>
       */
      public Builder setQualifiedNameTable(
          org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.Builder builderForValue) {
        qualifiedNameTable_ = builderForValue.build();

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_name_table = 5;</code>
       */
      public Builder mergeQualifiedNameTable(org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable value) {
        if (((bitField0_ & 0x00000010) == 0x00000010) &&
            qualifiedNameTable_ != org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance()) {
          qualifiedNameTable_ =
            org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.newBuilder(qualifiedNameTable_).mergeFrom(value).buildPartial();
        } else {
          qualifiedNameTable_ = value;
        }

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_name_table = 5;</code>
       */
      public Builder clearQualifiedNameTable() {
        qualifiedNameTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance();

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

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

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6;</code>
       *
       * <pre>
       * Annotations on the whole module
       * </pre>
       */
      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 = 6;</code>
       *
       * <pre>
       * Annotations on the whole module
       * </pre>
       */
      public int getAnnotationCount() {
        return annotation_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6;</code>
       *
       * <pre>
       * Annotations on the whole module
       * </pre>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Annotation getAnnotation(int index) {
        return annotation_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6;</code>
       *
       * <pre>
       * Annotations on the whole module
       * </pre>
       */
      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 = 6;</code>
       *
       * <pre>
       * Annotations on the whole module
       * </pre>
       */
      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 = 6;</code>
       *
       * <pre>
       * Annotations on the whole module
       * </pre>
       */
      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 = 6;</code>
       *
       * <pre>
       * Annotations on the whole module
       * </pre>
       */
      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 = 6;</code>
       *
       * <pre>
       * Annotations on the whole module
       * </pre>
       */
      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 = 6;</code>
       *
       * <pre>
       * Annotations on the whole module
       * </pre>
       */
      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 = 6;</code>
       *
       * <pre>
       * Annotations on the whole module
       * </pre>
       */
      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 = 6;</code>
       *
       * <pre>
       * Annotations on the whole module
       * </pre>
       */
      public Builder clearAnnotation() {
        annotation_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6;</code>
       *
       * <pre>
       * Annotations on the whole module
       * </pre>
       */
      public Builder removeAnnotation(int index) {
        ensureAnnotationIsMutable();
        annotation_.remove(index);

        return this;
      }

      private java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Class> optionalAnnotationClass_ =
        java.util.Collections.emptyList();
      private void ensureOptionalAnnotationClassIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          optionalAnnotationClass_ = new java.util.ArrayList<org.jetbrains.kotlin.metadata.ProtoBuf.Class>(optionalAnnotationClass_);
          bitField0_ |= 0x00000040;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class optional_annotation_class = 16;</code>
       *
       * <pre>
       * &#64;OptionalExpectation-annotated annotation classes in this module. This list is only used in the compiler frontend when compiling
       * a second-tier multiplatform module against a multiplatform module which uses optional annotations, not actualized on the JVM.
       * This is not needed in the IDE because optional annotations can only be used in common modules, where the IDE plugin resolves
       * it to the corresponding class with the resolution capabilities of common modules.
       * </pre>
       */
      public java.util.List<org.jetbrains.kotlin.metadata.ProtoBuf.Class> getOptionalAnnotationClassList() {
        return java.util.Collections.unmodifiableList(optionalAnnotationClass_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class optional_annotation_class = 16;</code>
       *
       * <pre>
       * &#64;OptionalExpectation-annotated annotation classes in this module. This list is only used in the compiler frontend when compiling
       * a second-tier multiplatform module against a multiplatform module which uses optional annotations, not actualized on the JVM.
       * This is not needed in the IDE because optional annotations can only be used in common modules, where the IDE plugin resolves
       * it to the corresponding class with the resolution capabilities of common modules.
       * </pre>
       */
      public int getOptionalAnnotationClassCount() {
        return optionalAnnotationClass_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class optional_annotation_class = 16;</code>
       *
       * <pre>
       * &#64;OptionalExpectation-annotated annotation classes in this module. This list is only used in the compiler frontend when compiling
       * a second-tier multiplatform module against a multiplatform module which uses optional annotations, not actualized on the JVM.
       * This is not needed in the IDE because optional annotations can only be used in common modules, where the IDE plugin resolves
       * it to the corresponding class with the resolution capabilities of common modules.
       * </pre>
       */
      public org.jetbrains.kotlin.metadata.ProtoBuf.Class getOptionalAnnotationClass(int index) {
        return optionalAnnotationClass_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class optional_annotation_class = 16;</code>
       *
       * <pre>
       * &#64;OptionalExpectation-annotated annotation classes in this module. This list is only used in the compiler frontend when compiling
       * a second-tier multiplatform module against a multiplatform module which uses optional annotations, not actualized on the JVM.
       * This is not needed in the IDE because optional annotations can only be used in common modules, where the IDE plugin resolves
       * it to the corresponding class with the resolution capabilities of common modules.
       * </pre>
       */
      public Builder setOptionalAnnotationClass(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Class value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureOptionalAnnotationClassIsMutable();
        optionalAnnotationClass_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class optional_annotation_class = 16;</code>
       *
       * <pre>
       * &#64;OptionalExpectation-annotated annotation classes in this module. This list is only used in the compiler frontend when compiling
       * a second-tier multiplatform module against a multiplatform module which uses optional annotations, not actualized on the JVM.
       * This is not needed in the IDE because optional annotations can only be used in common modules, where the IDE plugin resolves
       * it to the corresponding class with the resolution capabilities of common modules.
       * </pre>
       */
      public Builder setOptionalAnnotationClass(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Class.Builder builderForValue) {
        ensureOptionalAnnotationClassIsMutable();
        optionalAnnotationClass_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class optional_annotation_class = 16;</code>
       *
       * <pre>
       * &#64;OptionalExpectation-annotated annotation classes in this module. This list is only used in the compiler frontend when compiling
       * a second-tier multiplatform module against a multiplatform module which uses optional annotations, not actualized on the JVM.
       * This is not needed in the IDE because optional annotations can only be used in common modules, where the IDE plugin resolves
       * it to the corresponding class with the resolution capabilities of common modules.
       * </pre>
       */
      public Builder addOptionalAnnotationClass(org.jetbrains.kotlin.metadata.ProtoBuf.Class value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureOptionalAnnotationClassIsMutable();
        optionalAnnotationClass_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class optional_annotation_class = 16;</code>
       *
       * <pre>
       * &#64;OptionalExpectation-annotated annotation classes in this module. This list is only used in the compiler frontend when compiling
       * a second-tier multiplatform module against a multiplatform module which uses optional annotations, not actualized on the JVM.
       * This is not needed in the IDE because optional annotations can only be used in common modules, where the IDE plugin resolves
       * it to the corresponding class with the resolution capabilities of common modules.
       * </pre>
       */
      public Builder addOptionalAnnotationClass(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Class value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureOptionalAnnotationClassIsMutable();
        optionalAnnotationClass_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class optional_annotation_class = 16;</code>
       *
       * <pre>
       * &#64;OptionalExpectation-annotated annotation classes in this module. This list is only used in the compiler frontend when compiling
       * a second-tier multiplatform module against a multiplatform module which uses optional annotations, not actualized on the JVM.
       * This is not needed in the IDE because optional annotations can only be used in common modules, where the IDE plugin resolves
       * it to the corresponding class with the resolution capabilities of common modules.
       * </pre>
       */
      public Builder addOptionalAnnotationClass(
          org.jetbrains.kotlin.metadata.ProtoBuf.Class.Builder builderForValue) {
        ensureOptionalAnnotationClassIsMutable();
        optionalAnnotationClass_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class optional_annotation_class = 16;</code>
       *
       * <pre>
       * &#64;OptionalExpectation-annotated annotation classes in this module. This list is only used in the compiler frontend when compiling
       * a second-tier multiplatform module against a multiplatform module which uses optional annotations, not actualized on the JVM.
       * This is not needed in the IDE because optional annotations can only be used in common modules, where the IDE plugin resolves
       * it to the corresponding class with the resolution capabilities of common modules.
       * </pre>
       */
      public Builder addOptionalAnnotationClass(
          int index, org.jetbrains.kotlin.metadata.ProtoBuf.Class.Builder builderForValue) {
        ensureOptionalAnnotationClassIsMutable();
        optionalAnnotationClass_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class optional_annotation_class = 16;</code>
       *
       * <pre>
       * &#64;OptionalExpectation-annotated annotation classes in this module. This list is only used in the compiler frontend when compiling
       * a second-tier multiplatform module against a multiplatform module which uses optional annotations, not actualized on the JVM.
       * This is not needed in the IDE because optional annotations can only be used in common modules, where the IDE plugin resolves
       * it to the corresponding class with the resolution capabilities of common modules.
       * </pre>
       */
      public Builder addAllOptionalAnnotationClass(
          java.lang.Iterable<? extends org.jetbrains.kotlin.metadata.ProtoBuf.Class> values) {
        ensureOptionalAnnotationClassIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, optionalAnnotationClass_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class optional_annotation_class = 16;</code>
       *
       * <pre>
       * &#64;OptionalExpectation-annotated annotation classes in this module. This list is only used in the compiler frontend when compiling
       * a second-tier multiplatform module against a multiplatform module which uses optional annotations, not actualized on the JVM.
       * This is not needed in the IDE because optional annotations can only be used in common modules, where the IDE plugin resolves
       * it to the corresponding class with the resolution capabilities of common modules.
       * </pre>
       */
      public Builder clearOptionalAnnotationClass() {
        optionalAnnotationClass_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.metadata.Class optional_annotation_class = 16;</code>
       *
       * <pre>
       * &#64;OptionalExpectation-annotated annotation classes in this module. This list is only used in the compiler frontend when compiling
       * a second-tier multiplatform module against a multiplatform module which uses optional annotations, not actualized on the JVM.
       * This is not needed in the IDE because optional annotations can only be used in common modules, where the IDE plugin resolves
       * it to the corresponding class with the resolution capabilities of common modules.
       * </pre>
       */
      public Builder removeOptionalAnnotationClass(int index) {
        ensureOptionalAnnotationClassIsMutable();
        optionalAnnotationClass_.remove(index);

        return this;
      }

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

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

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

  public interface PackagePartsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.jvm.PackageParts)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required string package_fq_name = 1;</code>
     *
     * <pre>
     * Dot-separated Kotlin FQ name of the package.
     * </pre>
     */
    boolean hasPackageFqName();
    /**
     * <code>required string package_fq_name = 1;</code>
     *
     * <pre>
     * Dot-separated Kotlin FQ name of the package.
     * </pre>
     */
    java.lang.String getPackageFqName();
    /**
     * <code>required string package_fq_name = 1;</code>
     *
     * <pre>
     * Dot-separated Kotlin FQ name of the package.
     * </pre>
     */
    org.jetbrains.kotlin.protobuf.ByteString
        getPackageFqNameBytes();

    /**
     * <code>repeated string short_class_name = 2;</code>
     *
     * <pre>
     * Short names of files, without extension, present in this package. Only single file facades and multi-file _parts_ are listed here
     * (multi-file facades are not present in this list, they are defined below). Only files whose JVM package name is equal to the
     * Kotlin package name (i.e. it has not been changed with &#64;JvmPackageName) are listed here, the rest are listed in
     * class_with_jvm_package_name_short_name.
     * </pre>
     */
    org.jetbrains.kotlin.protobuf.ProtocolStringList
        getShortClassNameList();
    /**
     * <code>repeated string short_class_name = 2;</code>
     *
     * <pre>
     * Short names of files, without extension, present in this package. Only single file facades and multi-file _parts_ are listed here
     * (multi-file facades are not present in this list, they are defined below). Only files whose JVM package name is equal to the
     * Kotlin package name (i.e. it has not been changed with &#64;JvmPackageName) are listed here, the rest are listed in
     * class_with_jvm_package_name_short_name.
     * </pre>
     */
    int getShortClassNameCount();
    /**
     * <code>repeated string short_class_name = 2;</code>
     *
     * <pre>
     * Short names of files, without extension, present in this package. Only single file facades and multi-file _parts_ are listed here
     * (multi-file facades are not present in this list, they are defined below). Only files whose JVM package name is equal to the
     * Kotlin package name (i.e. it has not been changed with &#64;JvmPackageName) are listed here, the rest are listed in
     * class_with_jvm_package_name_short_name.
     * </pre>
     */
    java.lang.String getShortClassName(int index);
    /**
     * <code>repeated string short_class_name = 2;</code>
     *
     * <pre>
     * Short names of files, without extension, present in this package. Only single file facades and multi-file _parts_ are listed here
     * (multi-file facades are not present in this list, they are defined below). Only files whose JVM package name is equal to the
     * Kotlin package name (i.e. it has not been changed with &#64;JvmPackageName) are listed here, the rest are listed in
     * class_with_jvm_package_name_short_name.
     * </pre>
     */
    org.jetbrains.kotlin.protobuf.ByteString
        getShortClassNameBytes(int index);

    /**
     * <code>repeated int32 multifile_facade_short_name_id = 3 [packed = true];</code>
     *
     * <pre>
     * For each name in short_class_name, index of the name of the corresponding multi-file facade class in multifile_facade_short_name + 1,
     * or 0 if the class is not a multi-file part. If there's no value in this list at some index, the value is assumed to be 0.
     * (e.g. if there are no multi-file classes in the module, this list is not going to exist at all)
     * </pre>
     */
    java.util.List<java.lang.Integer> getMultifileFacadeShortNameIdList();
    /**
     * <code>repeated int32 multifile_facade_short_name_id = 3 [packed = true];</code>
     *
     * <pre>
     * For each name in short_class_name, index of the name of the corresponding multi-file facade class in multifile_facade_short_name + 1,
     * or 0 if the class is not a multi-file part. If there's no value in this list at some index, the value is assumed to be 0.
     * (e.g. if there are no multi-file classes in the module, this list is not going to exist at all)
     * </pre>
     */
    int getMultifileFacadeShortNameIdCount();
    /**
     * <code>repeated int32 multifile_facade_short_name_id = 3 [packed = true];</code>
     *
     * <pre>
     * For each name in short_class_name, index of the name of the corresponding multi-file facade class in multifile_facade_short_name + 1,
     * or 0 if the class is not a multi-file part. If there's no value in this list at some index, the value is assumed to be 0.
     * (e.g. if there are no multi-file classes in the module, this list is not going to exist at all)
     * </pre>
     */
    int getMultifileFacadeShortNameId(int index);

    /**
     * <code>repeated string multifile_facade_short_name = 4;</code>
     *
     * <pre>
     * Short names of multi-file facades, used in multifile_facade_short_name_id to store the part -&gt; facade mapping.
     * The package name of the multi-file facade is package_fq_name if this multi-file facade is not affected by &#64;JvmPackageName,
     * and the JVM package name of any multi-file part otherwise. Note that in the latter case, all parts must have the same JVM package name,
     * otherwise behavior is unspecified.
     * </pre>
     */
    org.jetbrains.kotlin.protobuf.ProtocolStringList
        getMultifileFacadeShortNameList();
    /**
     * <code>repeated string multifile_facade_short_name = 4;</code>
     *
     * <pre>
     * Short names of multi-file facades, used in multifile_facade_short_name_id to store the part -&gt; facade mapping.
     * The package name of the multi-file facade is package_fq_name if this multi-file facade is not affected by &#64;JvmPackageName,
     * and the JVM package name of any multi-file part otherwise. Note that in the latter case, all parts must have the same JVM package name,
     * otherwise behavior is unspecified.
     * </pre>
     */
    int getMultifileFacadeShortNameCount();
    /**
     * <code>repeated string multifile_facade_short_name = 4;</code>
     *
     * <pre>
     * Short names of multi-file facades, used in multifile_facade_short_name_id to store the part -&gt; facade mapping.
     * The package name of the multi-file facade is package_fq_name if this multi-file facade is not affected by &#64;JvmPackageName,
     * and the JVM package name of any multi-file part otherwise. Note that in the latter case, all parts must have the same JVM package name,
     * otherwise behavior is unspecified.
     * </pre>
     */
    java.lang.String getMultifileFacadeShortName(int index);
    /**
     * <code>repeated string multifile_facade_short_name = 4;</code>
     *
     * <pre>
     * Short names of multi-file facades, used in multifile_facade_short_name_id to store the part -&gt; facade mapping.
     * The package name of the multi-file facade is package_fq_name if this multi-file facade is not affected by &#64;JvmPackageName,
     * and the JVM package name of any multi-file part otherwise. Note that in the latter case, all parts must have the same JVM package name,
     * otherwise behavior is unspecified.
     * </pre>
     */
    org.jetbrains.kotlin.protobuf.ByteString
        getMultifileFacadeShortNameBytes(int index);

    /**
     * <code>repeated string class_with_jvm_package_name_short_name = 5;</code>
     *
     * <pre>
     * Short names of files (single file facades and multi-file _parts_), whose JVM package differs from the Kotlin package because of
     * &#64;JvmPackageName. The JVM package name of each file is stored at the same index in class_with_jvm_package_name_package_id.
     * </pre>
     */
    org.jetbrains.kotlin.protobuf.ProtocolStringList
        getClassWithJvmPackageNameShortNameList();
    /**
     * <code>repeated string class_with_jvm_package_name_short_name = 5;</code>
     *
     * <pre>
     * Short names of files (single file facades and multi-file _parts_), whose JVM package differs from the Kotlin package because of
     * &#64;JvmPackageName. The JVM package name of each file is stored at the same index in class_with_jvm_package_name_package_id.
     * </pre>
     */
    int getClassWithJvmPackageNameShortNameCount();
    /**
     * <code>repeated string class_with_jvm_package_name_short_name = 5;</code>
     *
     * <pre>
     * Short names of files (single file facades and multi-file _parts_), whose JVM package differs from the Kotlin package because of
     * &#64;JvmPackageName. The JVM package name of each file is stored at the same index in class_with_jvm_package_name_package_id.
     * </pre>
     */
    java.lang.String getClassWithJvmPackageNameShortName(int index);
    /**
     * <code>repeated string class_with_jvm_package_name_short_name = 5;</code>
     *
     * <pre>
     * Short names of files (single file facades and multi-file _parts_), whose JVM package differs from the Kotlin package because of
     * &#64;JvmPackageName. The JVM package name of each file is stored at the same index in class_with_jvm_package_name_package_id.
     * </pre>
     */
    org.jetbrains.kotlin.protobuf.ByteString
        getClassWithJvmPackageNameShortNameBytes(int index);

    /**
     * <code>repeated int32 class_with_jvm_package_name_multifile_facade_short_name_id = 7 [packed = true];</code>
     *
     * <pre>
     * This list is an addition to class_with_jvm_package_name_short_name exactly almost in the same way as
     * multifile_facade_short_name_id is an addition to short_class_name. The only difference is that this list contains _full_ internal
     * names of multi-file facades whose JVM package differs from the Kotlin package because of &#64;JvmPackageName.
     * For each name in class_with_jvm_package_name_short_name, index of the name of the corresponding multi-file facade class in
     * multifile_facade_short_name + 1, or 0 if the class is not a multi-file part.
     * </pre>
     */
    java.util.List<java.lang.Integer> getClassWithJvmPackageNameMultifileFacadeShortNameIdList();
    /**
     * <code>repeated int32 class_with_jvm_package_name_multifile_facade_short_name_id = 7 [packed = true];</code>
     *
     * <pre>
     * This list is an addition to class_with_jvm_package_name_short_name exactly almost in the same way as
     * multifile_facade_short_name_id is an addition to short_class_name. The only difference is that this list contains _full_ internal
     * names of multi-file facades whose JVM package differs from the Kotlin package because of &#64;JvmPackageName.
     * For each name in class_with_jvm_package_name_short_name, index of the name of the corresponding multi-file facade class in
     * multifile_facade_short_name + 1, or 0 if the class is not a multi-file part.
     * </pre>
     */
    int getClassWithJvmPackageNameMultifileFacadeShortNameIdCount();
    /**
     * <code>repeated int32 class_with_jvm_package_name_multifile_facade_short_name_id = 7 [packed = true];</code>
     *
     * <pre>
     * This list is an addition to class_with_jvm_package_name_short_name exactly almost in the same way as
     * multifile_facade_short_name_id is an addition to short_class_name. The only difference is that this list contains _full_ internal
     * names of multi-file facades whose JVM package differs from the Kotlin package because of &#64;JvmPackageName.
     * For each name in class_with_jvm_package_name_short_name, index of the name of the corresponding multi-file facade class in
     * multifile_facade_short_name + 1, or 0 if the class is not a multi-file part.
     * </pre>
     */
    int getClassWithJvmPackageNameMultifileFacadeShortNameId(int index);

    /**
     * <code>repeated int32 class_with_jvm_package_name_package_id = 6 [packed = true];</code>
     *
     * <pre>
     * For each name in class_with_jvm_package_name_short_name, the index (into PackageTable#jvm_package_name) of the JVM package name.
     * This list should have at least one element, otherwise classes with JVM package names are going to be ignored completely.
     * If there's no value in this list at some index other than 0, the value is assumed to be the same as the value of the last element
     * of this list. The intended use case for this optimization is to have just a list of a single element in the most frequent case
     * when a bunch of files from the same Kotlin package have the same JVM package name.
     * </pre>
     */
    java.util.List<java.lang.Integer> getClassWithJvmPackageNamePackageIdList();
    /**
     * <code>repeated int32 class_with_jvm_package_name_package_id = 6 [packed = true];</code>
     *
     * <pre>
     * For each name in class_with_jvm_package_name_short_name, the index (into PackageTable#jvm_package_name) of the JVM package name.
     * This list should have at least one element, otherwise classes with JVM package names are going to be ignored completely.
     * If there's no value in this list at some index other than 0, the value is assumed to be the same as the value of the last element
     * of this list. The intended use case for this optimization is to have just a list of a single element in the most frequent case
     * when a bunch of files from the same Kotlin package have the same JVM package name.
     * </pre>
     */
    int getClassWithJvmPackageNamePackageIdCount();
    /**
     * <code>repeated int32 class_with_jvm_package_name_package_id = 6 [packed = true];</code>
     *
     * <pre>
     * For each name in class_with_jvm_package_name_short_name, the index (into PackageTable#jvm_package_name) of the JVM package name.
     * This list should have at least one element, otherwise classes with JVM package names are going to be ignored completely.
     * If there's no value in this list at some index other than 0, the value is assumed to be the same as the value of the last element
     * of this list. The intended use case for this optimization is to have just a list of a single element in the most frequent case
     * when a bunch of files from the same Kotlin package have the same JVM package name.
     * </pre>
     */
    int getClassWithJvmPackageNamePackageId(int index);
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.metadata.jvm.PackageParts}
   */
  public static final class PackageParts extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.jvm.PackageParts)
      PackagePartsOrBuilder {
    // Use PackageParts.newBuilder() to construct.
    private PackageParts(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private PackageParts(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public PackageParts getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private PackageParts(
        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();
              bitField0_ |= 0x00000001;
              packageFqName_ = bs;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                shortClassName_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              shortClassName_.add(bs);
              break;
            }
            case 24: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                multifileFacadeShortNameId_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              multifileFacadeShortNameId_.add(input.readInt32());
              break;
            }
            case 26: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                multifileFacadeShortNameId_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              while (input.getBytesUntilLimit() > 0) {
                multifileFacadeShortNameId_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 34: {
              org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                multifileFacadeShortName_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000008;
              }
              multifileFacadeShortName_.add(bs);
              break;
            }
            case 42: {
              org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                classWithJvmPackageNameShortName_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000010;
              }
              classWithJvmPackageNameShortName_.add(bs);
              break;
            }
            case 48: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                classWithJvmPackageNamePackageId_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000040;
              }
              classWithJvmPackageNamePackageId_.add(input.readInt32());
              break;
            }
            case 50: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040) && input.getBytesUntilLimit() > 0) {
                classWithJvmPackageNamePackageId_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000040;
              }
              while (input.getBytesUntilLimit() > 0) {
                classWithJvmPackageNamePackageId_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 56: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                classWithJvmPackageNameMultifileFacadeShortNameId_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000020;
              }
              classWithJvmPackageNameMultifileFacadeShortNameId_.add(input.readInt32());
              break;
            }
            case 58: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020) && input.getBytesUntilLimit() > 0) {
                classWithJvmPackageNameMultifileFacadeShortNameId_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000020;
              }
              while (input.getBytesUntilLimit() > 0) {
                classWithJvmPackageNameMultifileFacadeShortNameId_.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)) {
          shortClassName_ = shortClassName_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          multifileFacadeShortNameId_ = java.util.Collections.unmodifiableList(multifileFacadeShortNameId_);
        }
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          multifileFacadeShortName_ = multifileFacadeShortName_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          classWithJvmPackageNameShortName_ = classWithJvmPackageNameShortName_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          classWithJvmPackageNamePackageId_ = java.util.Collections.unmodifiableList(classWithJvmPackageNamePackageId_);
        }
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          classWithJvmPackageNameMultifileFacadeShortNameId_ = java.util.Collections.unmodifiableList(classWithJvmPackageNameMultifileFacadeShortNameId_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<PackageParts> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<PackageParts>() {
      public PackageParts parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new PackageParts(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int PACKAGE_FQ_NAME_FIELD_NUMBER = 1;
    private java.lang.Object packageFqName_;
    /**
     * <code>required string package_fq_name = 1;</code>
     *
     * <pre>
     * Dot-separated Kotlin FQ name of the package.
     * </pre>
     */
    public boolean hasPackageFqName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string package_fq_name = 1;</code>
     *
     * <pre>
     * Dot-separated Kotlin FQ name of the package.
     * </pre>
     */
    public java.lang.String getPackageFqName() {
      java.lang.Object ref = packageFqName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        org.jetbrains.kotlin.protobuf.ByteString bs = 
            (org.jetbrains.kotlin.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          packageFqName_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string package_fq_name = 1;</code>
     *
     * <pre>
     * Dot-separated Kotlin FQ name of the package.
     * </pre>
     */
    public org.jetbrains.kotlin.protobuf.ByteString
        getPackageFqNameBytes() {
      java.lang.Object ref = packageFqName_;
      if (ref instanceof java.lang.String) {
        org.jetbrains.kotlin.protobuf.ByteString b = 
            org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        packageFqName_ = b;
        return b;
      } else {
        return (org.jetbrains.kotlin.protobuf.ByteString) ref;
      }
    }

    public static final int SHORT_CLASS_NAME_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.protobuf.LazyStringList shortClassName_;
    /**
     * <code>repeated string short_class_name = 2;</code>
     *
     * <pre>
     * Short names of files, without extension, present in this package. Only single file facades and multi-file _parts_ are listed here
     * (multi-file facades are not present in this list, they are defined below). Only files whose JVM package name is equal to the
     * Kotlin package name (i.e. it has not been changed with &#64;JvmPackageName) are listed here, the rest are listed in
     * class_with_jvm_package_name_short_name.
     * </pre>
     */
    public org.jetbrains.kotlin.protobuf.ProtocolStringList
        getShortClassNameList() {
      return shortClassName_;
    }
    /**
     * <code>repeated string short_class_name = 2;</code>
     *
     * <pre>
     * Short names of files, without extension, present in this package. Only single file facades and multi-file _parts_ are listed here
     * (multi-file facades are not present in this list, they are defined below). Only files whose JVM package name is equal to the
     * Kotlin package name (i.e. it has not been changed with &#64;JvmPackageName) are listed here, the rest are listed in
     * class_with_jvm_package_name_short_name.
     * </pre>
     */
    public int getShortClassNameCount() {
      return shortClassName_.size();
    }
    /**
     * <code>repeated string short_class_name = 2;</code>
     *
     * <pre>
     * Short names of files, without extension, present in this package. Only single file facades and multi-file _parts_ are listed here
     * (multi-file facades are not present in this list, they are defined below). Only files whose JVM package name is equal to the
     * Kotlin package name (i.e. it has not been changed with &#64;JvmPackageName) are listed here, the rest are listed in
     * class_with_jvm_package_name_short_name.
     * </pre>
     */
    public java.lang.String getShortClassName(int index) {
      return shortClassName_.get(index);
    }
    /**
     * <code>repeated string short_class_name = 2;</code>
     *
     * <pre>
     * Short names of files, without extension, present in this package. Only single file facades and multi-file _parts_ are listed here
     * (multi-file facades are not present in this list, they are defined below). Only files whose JVM package name is equal to the
     * Kotlin package name (i.e. it has not been changed with &#64;JvmPackageName) are listed here, the rest are listed in
     * class_with_jvm_package_name_short_name.
     * </pre>
     */
    public org.jetbrains.kotlin.protobuf.ByteString
        getShortClassNameBytes(int index) {
      return shortClassName_.getByteString(index);
    }

    public static final int MULTIFILE_FACADE_SHORT_NAME_ID_FIELD_NUMBER = 3;
    private java.util.List<java.lang.Integer> multifileFacadeShortNameId_;
    /**
     * <code>repeated int32 multifile_facade_short_name_id = 3 [packed = true];</code>
     *
     * <pre>
     * For each name in short_class_name, index of the name of the corresponding multi-file facade class in multifile_facade_short_name + 1,
     * or 0 if the class is not a multi-file part. If there's no value in this list at some index, the value is assumed to be 0.
     * (e.g. if there are no multi-file classes in the module, this list is not going to exist at all)
     * </pre>
     */
    public java.util.List<java.lang.Integer>
        getMultifileFacadeShortNameIdList() {
      return multifileFacadeShortNameId_;
    }
    /**
     * <code>repeated int32 multifile_facade_short_name_id = 3 [packed = true];</code>
     *
     * <pre>
     * For each name in short_class_name, index of the name of the corresponding multi-file facade class in multifile_facade_short_name + 1,
     * or 0 if the class is not a multi-file part. If there's no value in this list at some index, the value is assumed to be 0.
     * (e.g. if there are no multi-file classes in the module, this list is not going to exist at all)
     * </pre>
     */
    public int getMultifileFacadeShortNameIdCount() {
      return multifileFacadeShortNameId_.size();
    }
    /**
     * <code>repeated int32 multifile_facade_short_name_id = 3 [packed = true];</code>
     *
     * <pre>
     * For each name in short_class_name, index of the name of the corresponding multi-file facade class in multifile_facade_short_name + 1,
     * or 0 if the class is not a multi-file part. If there's no value in this list at some index, the value is assumed to be 0.
     * (e.g. if there are no multi-file classes in the module, this list is not going to exist at all)
     * </pre>
     */
    public int getMultifileFacadeShortNameId(int index) {
      return multifileFacadeShortNameId_.get(index);
    }
    private int multifileFacadeShortNameIdMemoizedSerializedSize = -1;

    public static final int MULTIFILE_FACADE_SHORT_NAME_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.protobuf.LazyStringList multifileFacadeShortName_;
    /**
     * <code>repeated string multifile_facade_short_name = 4;</code>
     *
     * <pre>
     * Short names of multi-file facades, used in multifile_facade_short_name_id to store the part -&gt; facade mapping.
     * The package name of the multi-file facade is package_fq_name if this multi-file facade is not affected by &#64;JvmPackageName,
     * and the JVM package name of any multi-file part otherwise. Note that in the latter case, all parts must have the same JVM package name,
     * otherwise behavior is unspecified.
     * </pre>
     */
    public org.jetbrains.kotlin.protobuf.ProtocolStringList
        getMultifileFacadeShortNameList() {
      return multifileFacadeShortName_;
    }
    /**
     * <code>repeated string multifile_facade_short_name = 4;</code>
     *
     * <pre>
     * Short names of multi-file facades, used in multifile_facade_short_name_id to store the part -&gt; facade mapping.
     * The package name of the multi-file facade is package_fq_name if this multi-file facade is not affected by &#64;JvmPackageName,
     * and the JVM package name of any multi-file part otherwise. Note that in the latter case, all parts must have the same JVM package name,
     * otherwise behavior is unspecified.
     * </pre>
     */
    public int getMultifileFacadeShortNameCount() {
      return multifileFacadeShortName_.size();
    }
    /**
     * <code>repeated string multifile_facade_short_name = 4;</code>
     *
     * <pre>
     * Short names of multi-file facades, used in multifile_facade_short_name_id to store the part -&gt; facade mapping.
     * The package name of the multi-file facade is package_fq_name if this multi-file facade is not affected by &#64;JvmPackageName,
     * and the JVM package name of any multi-file part otherwise. Note that in the latter case, all parts must have the same JVM package name,
     * otherwise behavior is unspecified.
     * </pre>
     */
    public java.lang.String getMultifileFacadeShortName(int index) {
      return multifileFacadeShortName_.get(index);
    }
    /**
     * <code>repeated string multifile_facade_short_name = 4;</code>
     *
     * <pre>
     * Short names of multi-file facades, used in multifile_facade_short_name_id to store the part -&gt; facade mapping.
     * The package name of the multi-file facade is package_fq_name if this multi-file facade is not affected by &#64;JvmPackageName,
     * and the JVM package name of any multi-file part otherwise. Note that in the latter case, all parts must have the same JVM package name,
     * otherwise behavior is unspecified.
     * </pre>
     */
    public org.jetbrains.kotlin.protobuf.ByteString
        getMultifileFacadeShortNameBytes(int index) {
      return multifileFacadeShortName_.getByteString(index);
    }

    public static final int CLASS_WITH_JVM_PACKAGE_NAME_SHORT_NAME_FIELD_NUMBER = 5;
    private org.jetbrains.kotlin.protobuf.LazyStringList classWithJvmPackageNameShortName_;
    /**
     * <code>repeated string class_with_jvm_package_name_short_name = 5;</code>
     *
     * <pre>
     * Short names of files (single file facades and multi-file _parts_), whose JVM package differs from the Kotlin package because of
     * &#64;JvmPackageName. The JVM package name of each file is stored at the same index in class_with_jvm_package_name_package_id.
     * </pre>
     */
    public org.jetbrains.kotlin.protobuf.ProtocolStringList
        getClassWithJvmPackageNameShortNameList() {
      return classWithJvmPackageNameShortName_;
    }
    /**
     * <code>repeated string class_with_jvm_package_name_short_name = 5;</code>
     *
     * <pre>
     * Short names of files (single file facades and multi-file _parts_), whose JVM package differs from the Kotlin package because of
     * &#64;JvmPackageName. The JVM package name of each file is stored at the same index in class_with_jvm_package_name_package_id.
     * </pre>
     */
    public int getClassWithJvmPackageNameShortNameCount() {
      return classWithJvmPackageNameShortName_.size();
    }
    /**
     * <code>repeated string class_with_jvm_package_name_short_name = 5;</code>
     *
     * <pre>
     * Short names of files (single file facades and multi-file _parts_), whose JVM package differs from the Kotlin package because of
     * &#64;JvmPackageName. The JVM package name of each file is stored at the same index in class_with_jvm_package_name_package_id.
     * </pre>
     */
    public java.lang.String getClassWithJvmPackageNameShortName(int index) {
      return classWithJvmPackageNameShortName_.get(index);
    }
    /**
     * <code>repeated string class_with_jvm_package_name_short_name = 5;</code>
     *
     * <pre>
     * Short names of files (single file facades and multi-file _parts_), whose JVM package differs from the Kotlin package because of
     * &#64;JvmPackageName. The JVM package name of each file is stored at the same index in class_with_jvm_package_name_package_id.
     * </pre>
     */
    public org.jetbrains.kotlin.protobuf.ByteString
        getClassWithJvmPackageNameShortNameBytes(int index) {
      return classWithJvmPackageNameShortName_.getByteString(index);
    }

    public static final int CLASS_WITH_JVM_PACKAGE_NAME_MULTIFILE_FACADE_SHORT_NAME_ID_FIELD_NUMBER = 7;
    private java.util.List<java.lang.Integer> classWithJvmPackageNameMultifileFacadeShortNameId_;
    /**
     * <code>repeated int32 class_with_jvm_package_name_multifile_facade_short_name_id = 7 [packed = true];</code>
     *
     * <pre>
     * This list is an addition to class_with_jvm_package_name_short_name exactly almost in the same way as
     * multifile_facade_short_name_id is an addition to short_class_name. The only difference is that this list contains _full_ internal
     * names of multi-file facades whose JVM package differs from the Kotlin package because of &#64;JvmPackageName.
     * For each name in class_with_jvm_package_name_short_name, index of the name of the corresponding multi-file facade class in
     * multifile_facade_short_name + 1, or 0 if the class is not a multi-file part.
     * </pre>
     */
    public java.util.List<java.lang.Integer>
        getClassWithJvmPackageNameMultifileFacadeShortNameIdList() {
      return classWithJvmPackageNameMultifileFacadeShortNameId_;
    }
    /**
     * <code>repeated int32 class_with_jvm_package_name_multifile_facade_short_name_id = 7 [packed = true];</code>
     *
     * <pre>
     * This list is an addition to class_with_jvm_package_name_short_name exactly almost in the same way as
     * multifile_facade_short_name_id is an addition to short_class_name. The only difference is that this list contains _full_ internal
     * names of multi-file facades whose JVM package differs from the Kotlin package because of &#64;JvmPackageName.
     * For each name in class_with_jvm_package_name_short_name, index of the name of the corresponding multi-file facade class in
     * multifile_facade_short_name + 1, or 0 if the class is not a multi-file part.
     * </pre>
     */
    public int getClassWithJvmPackageNameMultifileFacadeShortNameIdCount() {
      return classWithJvmPackageNameMultifileFacadeShortNameId_.size();
    }
    /**
     * <code>repeated int32 class_with_jvm_package_name_multifile_facade_short_name_id = 7 [packed = true];</code>
     *
     * <pre>
     * This list is an addition to class_with_jvm_package_name_short_name exactly almost in the same way as
     * multifile_facade_short_name_id is an addition to short_class_name. The only difference is that this list contains _full_ internal
     * names of multi-file facades whose JVM package differs from the Kotlin package because of &#64;JvmPackageName.
     * For each name in class_with_jvm_package_name_short_name, index of the name of the corresponding multi-file facade class in
     * multifile_facade_short_name + 1, or 0 if the class is not a multi-file part.
     * </pre>
     */
    public int getClassWithJvmPackageNameMultifileFacadeShortNameId(int index) {
      return classWithJvmPackageNameMultifileFacadeShortNameId_.get(index);
    }
    private int classWithJvmPackageNameMultifileFacadeShortNameIdMemoizedSerializedSize = -1;

    public static final int CLASS_WITH_JVM_PACKAGE_NAME_PACKAGE_ID_FIELD_NUMBER = 6;
    private java.util.List<java.lang.Integer> classWithJvmPackageNamePackageId_;
    /**
     * <code>repeated int32 class_with_jvm_package_name_package_id = 6 [packed = true];</code>
     *
     * <pre>
     * For each name in class_with_jvm_package_name_short_name, the index (into PackageTable#jvm_package_name) of the JVM package name.
     * This list should have at least one element, otherwise classes with JVM package names are going to be ignored completely.
     * If there's no value in this list at some index other than 0, the value is assumed to be the same as the value of the last element
     * of this list. The intended use case for this optimization is to have just a list of a single element in the most frequent case
     * when a bunch of files from the same Kotlin package have the same JVM package name.
     * </pre>
     */
    public java.util.List<java.lang.Integer>
        getClassWithJvmPackageNamePackageIdList() {
      return classWithJvmPackageNamePackageId_;
    }
    /**
     * <code>repeated int32 class_with_jvm_package_name_package_id = 6 [packed = true];</code>
     *
     * <pre>
     * For each name in class_with_jvm_package_name_short_name, the index (into PackageTable#jvm_package_name) of the JVM package name.
     * This list should have at least one element, otherwise classes with JVM package names are going to be ignored completely.
     * If there's no value in this list at some index other than 0, the value is assumed to be the same as the value of the last element
     * of this list. The intended use case for this optimization is to have just a list of a single element in the most frequent case
     * when a bunch of files from the same Kotlin package have the same JVM package name.
     * </pre>
     */
    public int getClassWithJvmPackageNamePackageIdCount() {
      return classWithJvmPackageNamePackageId_.size();
    }
    /**
     * <code>repeated int32 class_with_jvm_package_name_package_id = 6 [packed = true];</code>
     *
     * <pre>
     * For each name in class_with_jvm_package_name_short_name, the index (into PackageTable#jvm_package_name) of the JVM package name.
     * This list should have at least one element, otherwise classes with JVM package names are going to be ignored completely.
     * If there's no value in this list at some index other than 0, the value is assumed to be the same as the value of the last element
     * of this list. The intended use case for this optimization is to have just a list of a single element in the most frequent case
     * when a bunch of files from the same Kotlin package have the same JVM package name.
     * </pre>
     */
    public int getClassWithJvmPackageNamePackageId(int index) {
      return classWithJvmPackageNamePackageId_.get(index);
    }
    private int classWithJvmPackageNamePackageIdMemoizedSerializedSize = -1;

    private void initFields() {
      packageFqName_ = "";
      shortClassName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
      multifileFacadeShortNameId_ = java.util.Collections.emptyList();
      multifileFacadeShortName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
      classWithJvmPackageNameShortName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
      classWithJvmPackageNameMultifileFacadeShortNameId_ = java.util.Collections.emptyList();
      classWithJvmPackageNamePackageId_ = 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 (!hasPackageFqName()) {
        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.writeBytes(1, getPackageFqNameBytes());
      }
      for (int i = 0; i < shortClassName_.size(); i++) {
        output.writeBytes(2, shortClassName_.getByteString(i));
      }
      if (getMultifileFacadeShortNameIdList().size() > 0) {
        output.writeRawVarint32(26);
        output.writeRawVarint32(multifileFacadeShortNameIdMemoizedSerializedSize);
      }
      for (int i = 0; i < multifileFacadeShortNameId_.size(); i++) {
        output.writeInt32NoTag(multifileFacadeShortNameId_.get(i));
      }
      for (int i = 0; i < multifileFacadeShortName_.size(); i++) {
        output.writeBytes(4, multifileFacadeShortName_.getByteString(i));
      }
      for (int i = 0; i < classWithJvmPackageNameShortName_.size(); i++) {
        output.writeBytes(5, classWithJvmPackageNameShortName_.getByteString(i));
      }
      if (getClassWithJvmPackageNamePackageIdList().size() > 0) {
        output.writeRawVarint32(50);
        output.writeRawVarint32(classWithJvmPackageNamePackageIdMemoizedSerializedSize);
      }
      for (int i = 0; i < classWithJvmPackageNamePackageId_.size(); i++) {
        output.writeInt32NoTag(classWithJvmPackageNamePackageId_.get(i));
      }
      if (getClassWithJvmPackageNameMultifileFacadeShortNameIdList().size() > 0) {
        output.writeRawVarint32(58);
        output.writeRawVarint32(classWithJvmPackageNameMultifileFacadeShortNameIdMemoizedSerializedSize);
      }
      for (int i = 0; i < classWithJvmPackageNameMultifileFacadeShortNameId_.size(); i++) {
        output.writeInt32NoTag(classWithJvmPackageNameMultifileFacadeShortNameId_.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
          .computeBytesSize(1, getPackageFqNameBytes());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < shortClassName_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(shortClassName_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getShortClassNameList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < multifileFacadeShortNameId_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(multifileFacadeShortNameId_.get(i));
        }
        size += dataSize;
        if (!getMultifileFacadeShortNameIdList().isEmpty()) {
          size += 1;
          size += org.jetbrains.kotlin.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        multifileFacadeShortNameIdMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < multifileFacadeShortName_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(multifileFacadeShortName_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getMultifileFacadeShortNameList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < classWithJvmPackageNameShortName_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(classWithJvmPackageNameShortName_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getClassWithJvmPackageNameShortNameList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < classWithJvmPackageNamePackageId_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(classWithJvmPackageNamePackageId_.get(i));
        }
        size += dataSize;
        if (!getClassWithJvmPackageNamePackageIdList().isEmpty()) {
          size += 1;
          size += org.jetbrains.kotlin.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        classWithJvmPackageNamePackageIdMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < classWithJvmPackageNameMultifileFacadeShortNameId_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(classWithJvmPackageNameMultifileFacadeShortNameId_.get(i));
        }
        size += dataSize;
        if (!getClassWithJvmPackageNameMultifileFacadeShortNameIdList().isEmpty()) {
          size += 1;
          size += org.jetbrains.kotlin.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        classWithJvmPackageNameMultifileFacadeShortNameIdMemoizedSerializedSize = dataSize;
      }
      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.jvm.JvmModuleProtoBuf.PackageParts parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts 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.jvm.JvmModuleProtoBuf.PackageParts parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts 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.jvm.JvmModuleProtoBuf.PackageParts parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts 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.jvm.JvmModuleProtoBuf.PackageParts parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts 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.jvm.JvmModuleProtoBuf.PackageParts parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts 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.jvm.JvmModuleProtoBuf.PackageParts prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        packageFqName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        shortClassName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        multifileFacadeShortNameId_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        multifileFacadeShortName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        classWithJvmPackageNameShortName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        classWithJvmPackageNameMultifileFacadeShortNameId_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        classWithJvmPackageNamePackageId_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }

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

      public org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts getDefaultInstanceForType() {
        return org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts.getDefaultInstance();
      }

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

      public org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts buildPartial() {
        org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts result = new org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.packageFqName_ = packageFqName_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          shortClassName_ = shortClassName_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.shortClassName_ = shortClassName_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          multifileFacadeShortNameId_ = java.util.Collections.unmodifiableList(multifileFacadeShortNameId_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.multifileFacadeShortNameId_ = multifileFacadeShortNameId_;
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          multifileFacadeShortName_ = multifileFacadeShortName_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.multifileFacadeShortName_ = multifileFacadeShortName_;
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          classWithJvmPackageNameShortName_ = classWithJvmPackageNameShortName_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.classWithJvmPackageNameShortName_ = classWithJvmPackageNameShortName_;
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          classWithJvmPackageNameMultifileFacadeShortNameId_ = java.util.Collections.unmodifiableList(classWithJvmPackageNameMultifileFacadeShortNameId_);
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.classWithJvmPackageNameMultifileFacadeShortNameId_ = classWithJvmPackageNameMultifileFacadeShortNameId_;
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          classWithJvmPackageNamePackageId_ = java.util.Collections.unmodifiableList(classWithJvmPackageNamePackageId_);
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.classWithJvmPackageNamePackageId_ = classWithJvmPackageNamePackageId_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts other) {
        if (other == org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts.getDefaultInstance()) return this;
        if (other.hasPackageFqName()) {
          bitField0_ |= 0x00000001;
          packageFqName_ = other.packageFqName_;
          
        }
        if (!other.shortClassName_.isEmpty()) {
          if (shortClassName_.isEmpty()) {
            shortClassName_ = other.shortClassName_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureShortClassNameIsMutable();
            shortClassName_.addAll(other.shortClassName_);
          }
          
        }
        if (!other.multifileFacadeShortNameId_.isEmpty()) {
          if (multifileFacadeShortNameId_.isEmpty()) {
            multifileFacadeShortNameId_ = other.multifileFacadeShortNameId_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureMultifileFacadeShortNameIdIsMutable();
            multifileFacadeShortNameId_.addAll(other.multifileFacadeShortNameId_);
          }
          
        }
        if (!other.multifileFacadeShortName_.isEmpty()) {
          if (multifileFacadeShortName_.isEmpty()) {
            multifileFacadeShortName_ = other.multifileFacadeShortName_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureMultifileFacadeShortNameIsMutable();
            multifileFacadeShortName_.addAll(other.multifileFacadeShortName_);
          }
          
        }
        if (!other.classWithJvmPackageNameShortName_.isEmpty()) {
          if (classWithJvmPackageNameShortName_.isEmpty()) {
            classWithJvmPackageNameShortName_ = other.classWithJvmPackageNameShortName_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureClassWithJvmPackageNameShortNameIsMutable();
            classWithJvmPackageNameShortName_.addAll(other.classWithJvmPackageNameShortName_);
          }
          
        }
        if (!other.classWithJvmPackageNameMultifileFacadeShortNameId_.isEmpty()) {
          if (classWithJvmPackageNameMultifileFacadeShortNameId_.isEmpty()) {
            classWithJvmPackageNameMultifileFacadeShortNameId_ = other.classWithJvmPackageNameMultifileFacadeShortNameId_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureClassWithJvmPackageNameMultifileFacadeShortNameIdIsMutable();
            classWithJvmPackageNameMultifileFacadeShortNameId_.addAll(other.classWithJvmPackageNameMultifileFacadeShortNameId_);
          }
          
        }
        if (!other.classWithJvmPackageNamePackageId_.isEmpty()) {
          if (classWithJvmPackageNamePackageId_.isEmpty()) {
            classWithJvmPackageNamePackageId_ = other.classWithJvmPackageNamePackageId_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureClassWithJvmPackageNamePackageIdIsMutable();
            classWithJvmPackageNamePackageId_.addAll(other.classWithJvmPackageNamePackageId_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasPackageFqName()) {
          
          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.jvm.JvmModuleProtoBuf.PackageParts parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf.PackageParts) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object packageFqName_ = "";
      /**
       * <code>required string package_fq_name = 1;</code>
       *
       * <pre>
       * Dot-separated Kotlin FQ name of the package.
       * </pre>
       */
      public boolean hasPackageFqName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string package_fq_name = 1;</code>
       *
       * <pre>
       * Dot-separated Kotlin FQ name of the package.
       * </pre>
       */
      public java.lang.String getPackageFqName() {
        java.lang.Object ref = packageFqName_;
        if (!(ref instanceof java.lang.String)) {
          org.jetbrains.kotlin.protobuf.ByteString bs =
              (org.jetbrains.kotlin.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            packageFqName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string package_fq_name = 1;</code>
       *
       * <pre>
       * Dot-separated Kotlin FQ name of the package.
       * </pre>
       */
      public org.jetbrains.kotlin.protobuf.ByteString
          getPackageFqNameBytes() {
        java.lang.Object ref = packageFqName_;
        if (ref instanceof String) {
          org.jetbrains.kotlin.protobuf.ByteString b = 
              org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          packageFqName_ = b;
          return b;
        } else {
          return (org.jetbrains.kotlin.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string package_fq_name = 1;</code>
       *
       * <pre>
       * Dot-separated Kotlin FQ name of the package.
       * </pre>
       */
      public Builder setPackageFqName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        packageFqName_ = value;
        
        return this;
      }
      /**
       * <code>required string package_fq_name = 1;</code>
       *
       * <pre>
       * Dot-separated Kotlin FQ name of the package.
       * </pre>
       */
      public Builder clearPackageFqName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        packageFqName_ = getDefaultInstance().getPackageFqName();
        
        return this;
      }
      /**
       * <code>required string package_fq_name = 1;</code>
       *
       * <pre>
       * Dot-separated Kotlin FQ name of the package.
       * </pre>
       */
      public Builder setPackageFqNameBytes(
          org.jetbrains.kotlin.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        packageFqName_ = value;
        
        return this;
      }

      private org.jetbrains.kotlin.protobuf.LazyStringList shortClassName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
      private void ensureShortClassNameIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          shortClassName_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(shortClassName_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated string short_class_name = 2;</code>
       *
       * <pre>
       * Short names of files, without extension, present in this package. Only single file facades and multi-file _parts_ are listed here
       * (multi-file facades are not present in this list, they are defined below). Only files whose JVM package name is equal to the
       * Kotlin package name (i.e. it has not been changed with &#64;JvmPackageName) are listed here, the rest are listed in
       * class_with_jvm_package_name_short_name.
       * </pre>
       */
      public org.jetbrains.kotlin.protobuf.ProtocolStringList
          getShortClassNameList() {
        return shortClassName_.getUnmodifiableView();
      }
      /**
       * <code>repeated string short_class_name = 2;</code>
       *
       * <pre>
       * Short names of files, without extension, present in this package. Only single file facades and multi-file _parts_ are listed here
       * (multi-file facades are not present in this list, they are defined below). Only files whose JVM package name is equal to the
       * Kotlin package name (i.e. it has not been changed with &#64;JvmPackageName) are listed here, the rest are listed in
       * class_with_jvm_package_name_short_name.
       * </pre>
       */
      public int getShortClassNameCount() {
        return shortClassName_.size();
      }
      /**
       * <code>repeated string short_class_name = 2;</code>
       *
       * <pre>
       * Short names of files, without extension, present in this package. Only single file facades and multi-file _parts_ are listed here
       * (multi-file facades are not present in this list, they are defined below). Only files whose JVM package name is equal to the
       * Kotlin package name (i.e. it has not been changed with &#64;JvmPackageName) are listed here, the rest are listed in
       * class_with_jvm_package_name_short_name.
       * </pre>
       */
      public java.lang.String getShortClassName(int index) {
        return shortClassName_.get(index);
      }
      /**
       * <code>repeated string short_class_name = 2;</code>
       *
       * <pre>
       * Short names of files, without extension, present in this package. Only single file facades and multi-file _parts_ are listed here
       * (multi-file facades are not present in this list, they are defined below). Only files whose JVM package name is equal to the
       * Kotlin package name (i.e. it has not been changed with &#64;JvmPackageName) are listed here, the rest are listed in
       * class_with_jvm_package_name_short_name.
       * </pre>
       */
      public org.jetbrains.kotlin.protobuf.ByteString
          getShortClassNameBytes(int index) {
        return shortClassName_.getByteString(index);
      }
      /**
       * <code>repeated string short_class_name = 2;</code>
       *
       * <pre>
       * Short names of files, without extension, present in this package. Only single file facades and multi-file _parts_ are listed here
       * (multi-file facades are not present in this list, they are defined below). Only files whose JVM package name is equal to the
       * Kotlin package name (i.e. it has not been changed with &#64;JvmPackageName) are listed here, the rest are listed in
       * class_with_jvm_package_name_short_name.
       * </pre>
       */
      public Builder setShortClassName(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureShortClassNameIsMutable();
        shortClassName_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated string short_class_name = 2;</code>
       *
       * <pre>
       * Short names of files, without extension, present in this package. Only single file facades and multi-file _parts_ are listed here
       * (multi-file facades are not present in this list, they are defined below). Only files whose JVM package name is equal to the
       * Kotlin package name (i.e. it has not been changed with &#64;JvmPackageName) are listed here, the rest are listed in
       * class_with_jvm_package_name_short_name.
       * </pre>
       */
      public Builder addShortClassName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureShortClassNameIsMutable();
        shortClassName_.add(value);
        
        return this;
      }
      /**
       * <code>repeated string short_class_name = 2;</code>
       *
       * <pre>
       * Short names of files, without extension, present in this package. Only single file facades and multi-file _parts_ are listed here
       * (multi-file facades are not present in this list, they are defined below). Only files whose JVM package name is equal to the
       * Kotlin package name (i.e. it has not been changed with &#64;JvmPackageName) are listed here, the rest are listed in
       * class_with_jvm_package_name_short_name.
       * </pre>
       */
      public Builder addAllShortClassName(
          java.lang.Iterable<java.lang.String> values) {
        ensureShortClassNameIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, shortClassName_);
        
        return this;
      }
      /**
       * <code>repeated string short_class_name = 2;</code>
       *
       * <pre>
       * Short names of files, without extension, present in this package. Only single file facades and multi-file _parts_ are listed here
       * (multi-file facades are not present in this list, they are defined below). Only files whose JVM package name is equal to the
       * Kotlin package name (i.e. it has not been changed with &#64;JvmPackageName) are listed here, the rest are listed in
       * class_with_jvm_package_name_short_name.
       * </pre>
       */
      public Builder clearShortClassName() {
        shortClassName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        
        return this;
      }
      /**
       * <code>repeated string short_class_name = 2;</code>
       *
       * <pre>
       * Short names of files, without extension, present in this package. Only single file facades and multi-file _parts_ are listed here
       * (multi-file facades are not present in this list, they are defined below). Only files whose JVM package name is equal to the
       * Kotlin package name (i.e. it has not been changed with &#64;JvmPackageName) are listed here, the rest are listed in
       * class_with_jvm_package_name_short_name.
       * </pre>
       */
      public Builder addShortClassNameBytes(
          org.jetbrains.kotlin.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureShortClassNameIsMutable();
        shortClassName_.add(value);
        
        return this;
      }

      private java.util.List<java.lang.Integer> multifileFacadeShortNameId_ = java.util.Collections.emptyList();
      private void ensureMultifileFacadeShortNameIdIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          multifileFacadeShortNameId_ = new java.util.ArrayList<java.lang.Integer>(multifileFacadeShortNameId_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated int32 multifile_facade_short_name_id = 3 [packed = true];</code>
       *
       * <pre>
       * For each name in short_class_name, index of the name of the corresponding multi-file facade class in multifile_facade_short_name + 1,
       * or 0 if the class is not a multi-file part. If there's no value in this list at some index, the value is assumed to be 0.
       * (e.g. if there are no multi-file classes in the module, this list is not going to exist at all)
       * </pre>
       */
      public java.util.List<java.lang.Integer>
          getMultifileFacadeShortNameIdList() {
        return java.util.Collections.unmodifiableList(multifileFacadeShortNameId_);
      }
      /**
       * <code>repeated int32 multifile_facade_short_name_id = 3 [packed = true];</code>
       *
       * <pre>
       * For each name in short_class_name, index of the name of the corresponding multi-file facade class in multifile_facade_short_name + 1,
       * or 0 if the class is not a multi-file part. If there's no value in this list at some index, the value is assumed to be 0.
       * (e.g. if there are no multi-file classes in the module, this list is not going to exist at all)
       * </pre>
       */
      public int getMultifileFacadeShortNameIdCount() {
        return multifileFacadeShortNameId_.size();
      }
      /**
       * <code>repeated int32 multifile_facade_short_name_id = 3 [packed = true];</code>
       *
       * <pre>
       * For each name in short_class_name, index of the name of the corresponding multi-file facade class in multifile_facade_short_name + 1,
       * or 0 if the class is not a multi-file part. If there's no value in this list at some index, the value is assumed to be 0.
       * (e.g. if there are no multi-file classes in the module, this list is not going to exist at all)
       * </pre>
       */
      public int getMultifileFacadeShortNameId(int index) {
        return multifileFacadeShortNameId_.get(index);
      }
      /**
       * <code>repeated int32 multifile_facade_short_name_id = 3 [packed = true];</code>
       *
       * <pre>
       * For each name in short_class_name, index of the name of the corresponding multi-file facade class in multifile_facade_short_name + 1,
       * or 0 if the class is not a multi-file part. If there's no value in this list at some index, the value is assumed to be 0.
       * (e.g. if there are no multi-file classes in the module, this list is not going to exist at all)
       * </pre>
       */
      public Builder setMultifileFacadeShortNameId(
          int index, int value) {
        ensureMultifileFacadeShortNameIdIsMutable();
        multifileFacadeShortNameId_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated int32 multifile_facade_short_name_id = 3 [packed = true];</code>
       *
       * <pre>
       * For each name in short_class_name, index of the name of the corresponding multi-file facade class in multifile_facade_short_name + 1,
       * or 0 if the class is not a multi-file part. If there's no value in this list at some index, the value is assumed to be 0.
       * (e.g. if there are no multi-file classes in the module, this list is not going to exist at all)
       * </pre>
       */
      public Builder addMultifileFacadeShortNameId(int value) {
        ensureMultifileFacadeShortNameIdIsMutable();
        multifileFacadeShortNameId_.add(value);
        
        return this;
      }
      /**
       * <code>repeated int32 multifile_facade_short_name_id = 3 [packed = true];</code>
       *
       * <pre>
       * For each name in short_class_name, index of the name of the corresponding multi-file facade class in multifile_facade_short_name + 1,
       * or 0 if the class is not a multi-file part. If there's no value in this list at some index, the value is assumed to be 0.
       * (e.g. if there are no multi-file classes in the module, this list is not going to exist at all)
       * </pre>
       */
      public Builder addAllMultifileFacadeShortNameId(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureMultifileFacadeShortNameIdIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, multifileFacadeShortNameId_);
        
        return this;
      }
      /**
       * <code>repeated int32 multifile_facade_short_name_id = 3 [packed = true];</code>
       *
       * <pre>
       * For each name in short_class_name, index of the name of the corresponding multi-file facade class in multifile_facade_short_name + 1,
       * or 0 if the class is not a multi-file part. If there's no value in this list at some index, the value is assumed to be 0.
       * (e.g. if there are no multi-file classes in the module, this list is not going to exist at all)
       * </pre>
       */
      public Builder clearMultifileFacadeShortNameId() {
        multifileFacadeShortNameId_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        
        return this;
      }

      private org.jetbrains.kotlin.protobuf.LazyStringList multifileFacadeShortName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
      private void ensureMultifileFacadeShortNameIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          multifileFacadeShortName_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(multifileFacadeShortName_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <code>repeated string multifile_facade_short_name = 4;</code>
       *
       * <pre>
       * Short names of multi-file facades, used in multifile_facade_short_name_id to store the part -&gt; facade mapping.
       * The package name of the multi-file facade is package_fq_name if this multi-file facade is not affected by &#64;JvmPackageName,
       * and the JVM package name of any multi-file part otherwise. Note that in the latter case, all parts must have the same JVM package name,
       * otherwise behavior is unspecified.
       * </pre>
       */
      public org.jetbrains.kotlin.protobuf.ProtocolStringList
          getMultifileFacadeShortNameList() {
        return multifileFacadeShortName_.getUnmodifiableView();
      }
      /**
       * <code>repeated string multifile_facade_short_name = 4;</code>
       *
       * <pre>
       * Short names of multi-file facades, used in multifile_facade_short_name_id to store the part -&gt; facade mapping.
       * The package name of the multi-file facade is package_fq_name if this multi-file facade is not affected by &#64;JvmPackageName,
       * and the JVM package name of any multi-file part otherwise. Note that in the latter case, all parts must have the same JVM package name,
       * otherwise behavior is unspecified.
       * </pre>
       */
      public int getMultifileFacadeShortNameCount() {
        return multifileFacadeShortName_.size();
      }
      /**
       * <code>repeated string multifile_facade_short_name = 4;</code>
       *
       * <pre>
       * Short names of multi-file facades, used in multifile_facade_short_name_id to store the part -&gt; facade mapping.
       * The package name of the multi-file facade is package_fq_name if this multi-file facade is not affected by &#64;JvmPackageName,
       * and the JVM package name of any multi-file part otherwise. Note that in the latter case, all parts must have the same JVM package name,
       * otherwise behavior is unspecified.
       * </pre>
       */
      public java.lang.String getMultifileFacadeShortName(int index) {
        return multifileFacadeShortName_.get(index);
      }
      /**
       * <code>repeated string multifile_facade_short_name = 4;</code>
       *
       * <pre>
       * Short names of multi-file facades, used in multifile_facade_short_name_id to store the part -&gt; facade mapping.
       * The package name of the multi-file facade is package_fq_name if this multi-file facade is not affected by &#64;JvmPackageName,
       * and the JVM package name of any multi-file part otherwise. Note that in the latter case, all parts must have the same JVM package name,
       * otherwise behavior is unspecified.
       * </pre>
       */
      public org.jetbrains.kotlin.protobuf.ByteString
          getMultifileFacadeShortNameBytes(int index) {
        return multifileFacadeShortName_.getByteString(index);
      }
      /**
       * <code>repeated string multifile_facade_short_name = 4;</code>
       *
       * <pre>
       * Short names of multi-file facades, used in multifile_facade_short_name_id to store the part -&gt; facade mapping.
       * The package name of the multi-file facade is package_fq_name if this multi-file facade is not affected by &#64;JvmPackageName,
       * and the JVM package name of any multi-file part otherwise. Note that in the latter case, all parts must have the same JVM package name,
       * otherwise behavior is unspecified.
       * </pre>
       */
      public Builder setMultifileFacadeShortName(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureMultifileFacadeShortNameIsMutable();
        multifileFacadeShortName_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated string multifile_facade_short_name = 4;</code>
       *
       * <pre>
       * Short names of multi-file facades, used in multifile_facade_short_name_id to store the part -&gt; facade mapping.
       * The package name of the multi-file facade is package_fq_name if this multi-file facade is not affected by &#64;JvmPackageName,
       * and the JVM package name of any multi-file part otherwise. Note that in the latter case, all parts must have the same JVM package name,
       * otherwise behavior is unspecified.
       * </pre>
       */
      public Builder addMultifileFacadeShortName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureMultifileFacadeShortNameIsMutable();
        multifileFacadeShortName_.add(value);
        
        return this;
      }
      /**
       * <code>repeated string multifile_facade_short_name = 4;</code>
       *
       * <pre>
       * Short names of multi-file facades, used in multifile_facade_short_name_id to store the part -&gt; facade mapping.
       * The package name of the multi-file facade is package_fq_name if this multi-file facade is not affected by &#64;JvmPackageName,
       * and the JVM package name of any multi-file part otherwise. Note that in the latter case, all parts must have the same JVM package name,
       * otherwise behavior is unspecified.
       * </pre>
       */
      public Builder addAllMultifileFacadeShortName(
          java.lang.Iterable<java.lang.String> values) {
        ensureMultifileFacadeShortNameIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, multifileFacadeShortName_);
        
        return this;
      }
      /**
       * <code>repeated string multifile_facade_short_name = 4;</code>
       *
       * <pre>
       * Short names of multi-file facades, used in multifile_facade_short_name_id to store the part -&gt; facade mapping.
       * The package name of the multi-file facade is package_fq_name if this multi-file facade is not affected by &#64;JvmPackageName,
       * and the JVM package name of any multi-file part otherwise. Note that in the latter case, all parts must have the same JVM package name,
       * otherwise behavior is unspecified.
       * </pre>
       */
      public Builder clearMultifileFacadeShortName() {
        multifileFacadeShortName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        
        return this;
      }
      /**
       * <code>repeated string multifile_facade_short_name = 4;</code>
       *
       * <pre>
       * Short names of multi-file facades, used in multifile_facade_short_name_id to store the part -&gt; facade mapping.
       * The package name of the multi-file facade is package_fq_name if this multi-file facade is not affected by &#64;JvmPackageName,
       * and the JVM package name of any multi-file part otherwise. Note that in the latter case, all parts must have the same JVM package name,
       * otherwise behavior is unspecified.
       * </pre>
       */
      public Builder addMultifileFacadeShortNameBytes(
          org.jetbrains.kotlin.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureMultifileFacadeShortNameIsMutable();
        multifileFacadeShortName_.add(value);
        
        return this;
      }

      private org.jetbrains.kotlin.protobuf.LazyStringList classWithJvmPackageNameShortName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
      private void ensureClassWithJvmPackageNameShortNameIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          classWithJvmPackageNameShortName_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(classWithJvmPackageNameShortName_);
          bitField0_ |= 0x00000010;
         }
      }
      /**
       * <code>repeated string class_with_jvm_package_name_short_name = 5;</code>
       *
       * <pre>
       * Short names of files (single file facades and multi-file _parts_), whose JVM package differs from the Kotlin package because of
       * &#64;JvmPackageName. The JVM package name of each file is stored at the same index in class_with_jvm_package_name_package_id.
       * </pre>
       */
      public org.jetbrains.kotlin.protobuf.ProtocolStringList
          getClassWithJvmPackageNameShortNameList() {
        return classWithJvmPackageNameShortName_.getUnmodifiableView();
      }
      /**
       * <code>repeated string class_with_jvm_package_name_short_name = 5;</code>
       *
       * <pre>
       * Short names of files (single file facades and multi-file _parts_), whose JVM package differs from the Kotlin package because of
       * &#64;JvmPackageName. The JVM package name of each file is stored at the same index in class_with_jvm_package_name_package_id.
       * </pre>
       */
      public int getClassWithJvmPackageNameShortNameCount() {
        return classWithJvmPackageNameShortName_.size();
      }
      /**
       * <code>repeated string class_with_jvm_package_name_short_name = 5;</code>
       *
       * <pre>
       * Short names of files (single file facades and multi-file _parts_), whose JVM package differs from the Kotlin package because of
       * &#64;JvmPackageName. The JVM package name of each file is stored at the same index in class_with_jvm_package_name_package_id.
       * </pre>
       */
      public java.lang.String getClassWithJvmPackageNameShortName(int index) {
        return classWithJvmPackageNameShortName_.get(index);
      }
      /**
       * <code>repeated string class_with_jvm_package_name_short_name = 5;</code>
       *
       * <pre>
       * Short names of files (single file facades and multi-file _parts_), whose JVM package differs from the Kotlin package because of
       * &#64;JvmPackageName. The JVM package name of each file is stored at the same index in class_with_jvm_package_name_package_id.
       * </pre>
       */
      public org.jetbrains.kotlin.protobuf.ByteString
          getClassWithJvmPackageNameShortNameBytes(int index) {
        return classWithJvmPackageNameShortName_.getByteString(index);
      }
      /**
       * <code>repeated string class_with_jvm_package_name_short_name = 5;</code>
       *
       * <pre>
       * Short names of files (single file facades and multi-file _parts_), whose JVM package differs from the Kotlin package because of
       * &#64;JvmPackageName. The JVM package name of each file is stored at the same index in class_with_jvm_package_name_package_id.
       * </pre>
       */
      public Builder setClassWithJvmPackageNameShortName(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureClassWithJvmPackageNameShortNameIsMutable();
        classWithJvmPackageNameShortName_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated string class_with_jvm_package_name_short_name = 5;</code>
       *
       * <pre>
       * Short names of files (single file facades and multi-file _parts_), whose JVM package differs from the Kotlin package because of
       * &#64;JvmPackageName. The JVM package name of each file is stored at the same index in class_with_jvm_package_name_package_id.
       * </pre>
       */
      public Builder addClassWithJvmPackageNameShortName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureClassWithJvmPackageNameShortNameIsMutable();
        classWithJvmPackageNameShortName_.add(value);
        
        return this;
      }
      /**
       * <code>repeated string class_with_jvm_package_name_short_name = 5;</code>
       *
       * <pre>
       * Short names of files (single file facades and multi-file _parts_), whose JVM package differs from the Kotlin package because of
       * &#64;JvmPackageName. The JVM package name of each file is stored at the same index in class_with_jvm_package_name_package_id.
       * </pre>
       */
      public Builder addAllClassWithJvmPackageNameShortName(
          java.lang.Iterable<java.lang.String> values) {
        ensureClassWithJvmPackageNameShortNameIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, classWithJvmPackageNameShortName_);
        
        return this;
      }
      /**
       * <code>repeated string class_with_jvm_package_name_short_name = 5;</code>
       *
       * <pre>
       * Short names of files (single file facades and multi-file _parts_), whose JVM package differs from the Kotlin package because of
       * &#64;JvmPackageName. The JVM package name of each file is stored at the same index in class_with_jvm_package_name_package_id.
       * </pre>
       */
      public Builder clearClassWithJvmPackageNameShortName() {
        classWithJvmPackageNameShortName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        
        return this;
      }
      /**
       * <code>repeated string class_with_jvm_package_name_short_name = 5;</code>
       *
       * <pre>
       * Short names of files (single file facades and multi-file _parts_), whose JVM package differs from the Kotlin package because of
       * &#64;JvmPackageName. The JVM package name of each file is stored at the same index in class_with_jvm_package_name_package_id.
       * </pre>
       */
      public Builder addClassWithJvmPackageNameShortNameBytes(
          org.jetbrains.kotlin.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureClassWithJvmPackageNameShortNameIsMutable();
        classWithJvmPackageNameShortName_.add(value);
        
        return this;
      }

      private java.util.List<java.lang.Integer> classWithJvmPackageNameMultifileFacadeShortNameId_ = java.util.Collections.emptyList();
      private void ensureClassWithJvmPackageNameMultifileFacadeShortNameIdIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          classWithJvmPackageNameMultifileFacadeShortNameId_ = new java.util.ArrayList<java.lang.Integer>(classWithJvmPackageNameMultifileFacadeShortNameId_);
          bitField0_ |= 0x00000020;
         }
      }
      /**
       * <code>repeated int32 class_with_jvm_package_name_multifile_facade_short_name_id = 7 [packed = true];</code>
       *
       * <pre>
       * This list is an addition to class_with_jvm_package_name_short_name exactly almost in the same way as
       * multifile_facade_short_name_id is an addition to short_class_name. The only difference is that this list contains _full_ internal
       * names of multi-file facades whose JVM package differs from the Kotlin package because of &#64;JvmPackageName.
       * For each name in class_with_jvm_package_name_short_name, index of the name of the corresponding multi-file facade class in
       * multifile_facade_short_name + 1, or 0 if the class is not a multi-file part.
       * </pre>
       */
      public java.util.List<java.lang.Integer>
          getClassWithJvmPackageNameMultifileFacadeShortNameIdList() {
        return java.util.Collections.unmodifiableList(classWithJvmPackageNameMultifileFacadeShortNameId_);
      }
      /**
       * <code>repeated int32 class_with_jvm_package_name_multifile_facade_short_name_id = 7 [packed = true];</code>
       *
       * <pre>
       * This list is an addition to class_with_jvm_package_name_short_name exactly almost in the same way as
       * multifile_facade_short_name_id is an addition to short_class_name. The only difference is that this list contains _full_ internal
       * names of multi-file facades whose JVM package differs from the Kotlin package because of &#64;JvmPackageName.
       * For each name in class_with_jvm_package_name_short_name, index of the name of the corresponding multi-file facade class in
       * multifile_facade_short_name + 1, or 0 if the class is not a multi-file part.
       * </pre>
       */
      public int getClassWithJvmPackageNameMultifileFacadeShortNameIdCount() {
        return classWithJvmPackageNameMultifileFacadeShortNameId_.size();
      }
      /**
       * <code>repeated int32 class_with_jvm_package_name_multifile_facade_short_name_id = 7 [packed = true];</code>
       *
       * <pre>
       * This list is an addition to class_with_jvm_package_name_short_name exactly almost in the same way as
       * multifile_facade_short_name_id is an addition to short_class_name. The only difference is that this list contains _full_ internal
       * names of multi-file facades whose JVM package differs from the Kotlin package because of &#64;JvmPackageName.
       * For each name in class_with_jvm_package_name_short_name, index of the name of the corresponding multi-file facade class in
       * multifile_facade_short_name + 1, or 0 if the class is not a multi-file part.
       * </pre>
       */
      public int getClassWithJvmPackageNameMultifileFacadeShortNameId(int index) {
        return classWithJvmPackageNameMultifileFacadeShortNameId_.get(index);
      }
      /**
       * <code>repeated int32 class_with_jvm_package_name_multifile_facade_short_name_id = 7 [packed = true];</code>
       *
       * <pre>
       * This list is an addition to class_with_jvm_package_name_short_name exactly almost in the same way as
       * multifile_facade_short_name_id is an addition to short_class_name. The only difference is that this list contains _full_ internal
       * names of multi-file facades whose JVM package differs from the Kotlin package because of &#64;JvmPackageName.
       * For each name in class_with_jvm_package_name_short_name, index of the name of the corresponding multi-file facade class in
       * multifile_facade_short_name + 1, or 0 if the class is not a multi-file part.
       * </pre>
       */
      public Builder setClassWithJvmPackageNameMultifileFacadeShortNameId(
          int index, int value) {
        ensureClassWithJvmPackageNameMultifileFacadeShortNameIdIsMutable();
        classWithJvmPackageNameMultifileFacadeShortNameId_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated int32 class_with_jvm_package_name_multifile_facade_short_name_id = 7 [packed = true];</code>
       *
       * <pre>
       * This list is an addition to class_with_jvm_package_name_short_name exactly almost in the same way as
       * multifile_facade_short_name_id is an addition to short_class_name. The only difference is that this list contains _full_ internal
       * names of multi-file facades whose JVM package differs from the Kotlin package because of &#64;JvmPackageName.
       * For each name in class_with_jvm_package_name_short_name, index of the name of the corresponding multi-file facade class in
       * multifile_facade_short_name + 1, or 0 if the class is not a multi-file part.
       * </pre>
       */
      public Builder addClassWithJvmPackageNameMultifileFacadeShortNameId(int value) {
        ensureClassWithJvmPackageNameMultifileFacadeShortNameIdIsMutable();
        classWithJvmPackageNameMultifileFacadeShortNameId_.add(value);
        
        return this;
      }
      /**
       * <code>repeated int32 class_with_jvm_package_name_multifile_facade_short_name_id = 7 [packed = true];</code>
       *
       * <pre>
       * This list is an addition to class_with_jvm_package_name_short_name exactly almost in the same way as
       * multifile_facade_short_name_id is an addition to short_class_name. The only difference is that this list contains _full_ internal
       * names of multi-file facades whose JVM package differs from the Kotlin package because of &#64;JvmPackageName.
       * For each name in class_with_jvm_package_name_short_name, index of the name of the corresponding multi-file facade class in
       * multifile_facade_short_name + 1, or 0 if the class is not a multi-file part.
       * </pre>
       */
      public Builder addAllClassWithJvmPackageNameMultifileFacadeShortNameId(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureClassWithJvmPackageNameMultifileFacadeShortNameIdIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, classWithJvmPackageNameMultifileFacadeShortNameId_);
        
        return this;
      }
      /**
       * <code>repeated int32 class_with_jvm_package_name_multifile_facade_short_name_id = 7 [packed = true];</code>
       *
       * <pre>
       * This list is an addition to class_with_jvm_package_name_short_name exactly almost in the same way as
       * multifile_facade_short_name_id is an addition to short_class_name. The only difference is that this list contains _full_ internal
       * names of multi-file facades whose JVM package differs from the Kotlin package because of &#64;JvmPackageName.
       * For each name in class_with_jvm_package_name_short_name, index of the name of the corresponding multi-file facade class in
       * multifile_facade_short_name + 1, or 0 if the class is not a multi-file part.
       * </pre>
       */
      public Builder clearClassWithJvmPackageNameMultifileFacadeShortNameId() {
        classWithJvmPackageNameMultifileFacadeShortNameId_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        
        return this;
      }

      private java.util.List<java.lang.Integer> classWithJvmPackageNamePackageId_ = java.util.Collections.emptyList();
      private void ensureClassWithJvmPackageNamePackageIdIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          classWithJvmPackageNamePackageId_ = new java.util.ArrayList<java.lang.Integer>(classWithJvmPackageNamePackageId_);
          bitField0_ |= 0x00000040;
         }
      }
      /**
       * <code>repeated int32 class_with_jvm_package_name_package_id = 6 [packed = true];</code>
       *
       * <pre>
       * For each name in class_with_jvm_package_name_short_name, the index (into PackageTable#jvm_package_name) of the JVM package name.
       * This list should have at least one element, otherwise classes with JVM package names are going to be ignored completely.
       * If there's no value in this list at some index other than 0, the value is assumed to be the same as the value of the last element
       * of this list. The intended use case for this optimization is to have just a list of a single element in the most frequent case
       * when a bunch of files from the same Kotlin package have the same JVM package name.
       * </pre>
       */
      public java.util.List<java.lang.Integer>
          getClassWithJvmPackageNamePackageIdList() {
        return java.util.Collections.unmodifiableList(classWithJvmPackageNamePackageId_);
      }
      /**
       * <code>repeated int32 class_with_jvm_package_name_package_id = 6 [packed = true];</code>
       *
       * <pre>
       * For each name in class_with_jvm_package_name_short_name, the index (into PackageTable#jvm_package_name) of the JVM package name.
       * This list should have at least one element, otherwise classes with JVM package names are going to be ignored completely.
       * If there's no value in this list at some index other than 0, the value is assumed to be the same as the value of the last element
       * of this list. The intended use case for this optimization is to have just a list of a single element in the most frequent case
       * when a bunch of files from the same Kotlin package have the same JVM package name.
       * </pre>
       */
      public int getClassWithJvmPackageNamePackageIdCount() {
        return classWithJvmPackageNamePackageId_.size();
      }
      /**
       * <code>repeated int32 class_with_jvm_package_name_package_id = 6 [packed = true];</code>
       *
       * <pre>
       * For each name in class_with_jvm_package_name_short_name, the index (into PackageTable#jvm_package_name) of the JVM package name.
       * This list should have at least one element, otherwise classes with JVM package names are going to be ignored completely.
       * If there's no value in this list at some index other than 0, the value is assumed to be the same as the value of the last element
       * of this list. The intended use case for this optimization is to have just a list of a single element in the most frequent case
       * when a bunch of files from the same Kotlin package have the same JVM package name.
       * </pre>
       */
      public int getClassWithJvmPackageNamePackageId(int index) {
        return classWithJvmPackageNamePackageId_.get(index);
      }
      /**
       * <code>repeated int32 class_with_jvm_package_name_package_id = 6 [packed = true];</code>
       *
       * <pre>
       * For each name in class_with_jvm_package_name_short_name, the index (into PackageTable#jvm_package_name) of the JVM package name.
       * This list should have at least one element, otherwise classes with JVM package names are going to be ignored completely.
       * If there's no value in this list at some index other than 0, the value is assumed to be the same as the value of the last element
       * of this list. The intended use case for this optimization is to have just a list of a single element in the most frequent case
       * when a bunch of files from the same Kotlin package have the same JVM package name.
       * </pre>
       */
      public Builder setClassWithJvmPackageNamePackageId(
          int index, int value) {
        ensureClassWithJvmPackageNamePackageIdIsMutable();
        classWithJvmPackageNamePackageId_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated int32 class_with_jvm_package_name_package_id = 6 [packed = true];</code>
       *
       * <pre>
       * For each name in class_with_jvm_package_name_short_name, the index (into PackageTable#jvm_package_name) of the JVM package name.
       * This list should have at least one element, otherwise classes with JVM package names are going to be ignored completely.
       * If there's no value in this list at some index other than 0, the value is assumed to be the same as the value of the last element
       * of this list. The intended use case for this optimization is to have just a list of a single element in the most frequent case
       * when a bunch of files from the same Kotlin package have the same JVM package name.
       * </pre>
       */
      public Builder addClassWithJvmPackageNamePackageId(int value) {
        ensureClassWithJvmPackageNamePackageIdIsMutable();
        classWithJvmPackageNamePackageId_.add(value);
        
        return this;
      }
      /**
       * <code>repeated int32 class_with_jvm_package_name_package_id = 6 [packed = true];</code>
       *
       * <pre>
       * For each name in class_with_jvm_package_name_short_name, the index (into PackageTable#jvm_package_name) of the JVM package name.
       * This list should have at least one element, otherwise classes with JVM package names are going to be ignored completely.
       * If there's no value in this list at some index other than 0, the value is assumed to be the same as the value of the last element
       * of this list. The intended use case for this optimization is to have just a list of a single element in the most frequent case
       * when a bunch of files from the same Kotlin package have the same JVM package name.
       * </pre>
       */
      public Builder addAllClassWithJvmPackageNamePackageId(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureClassWithJvmPackageNamePackageIdIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, classWithJvmPackageNamePackageId_);
        
        return this;
      }
      /**
       * <code>repeated int32 class_with_jvm_package_name_package_id = 6 [packed = true];</code>
       *
       * <pre>
       * For each name in class_with_jvm_package_name_short_name, the index (into PackageTable#jvm_package_name) of the JVM package name.
       * This list should have at least one element, otherwise classes with JVM package names are going to be ignored completely.
       * If there's no value in this list at some index other than 0, the value is assumed to be the same as the value of the last element
       * of this list. The intended use case for this optimization is to have just a list of a single element in the most frequent case
       * when a bunch of files from the same Kotlin package have the same JVM package name.
       * </pre>
       */
      public Builder clearClassWithJvmPackageNamePackageId() {
        classWithJvmPackageNamePackageId_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        
        return this;
      }

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

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

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


  static {
  }

  // @@protoc_insertion_point(outer_class_scope)
}