// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: compiler/ir/serialization.jvm/src/JvmIr.proto

package org.jetbrains.kotlin.backend.jvm.serialization.proto;

public final class JvmIr {
  private JvmIr() {}
  public static void registerAllExtensions(
      org.jetbrains.kotlin.protobuf.ExtensionRegistryLite registry) {
  }
  public interface XStatementOrExpressionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement statement = 1;</code>
     */
    boolean hasStatement();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement statement = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement getStatement();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression expression = 2;</code>
     */
    boolean hasExpression();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression expression = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression getExpression();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression}
   */
  public static final class XStatementOrExpression extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression)
      XStatementOrExpressionOrBuilder {
    // Use XStatementOrExpression.newBuilder() to construct.
    private XStatementOrExpression(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private XStatementOrExpression(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public XStatementOrExpression getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private XStatementOrExpression(
        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.backend.common.serialization.proto.IrStatement.Builder subBuilder = null;
              if (kindCase_ == 1) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement) kind_).toBuilder();
              }
              kind_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement) kind_);
                kind_ = subBuilder.buildPartial();
              }
              kindCase_ = 1;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression.Builder subBuilder = null;
              if (kindCase_ == 2) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression) kind_).toBuilder();
              }
              kind_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression) kind_);
                kind_ = subBuilder.buildPartial();
              }
              kindCase_ = 2;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<XStatementOrExpression> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<XStatementOrExpression>() {
      public XStatementOrExpression parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new XStatementOrExpression(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    private int kindCase_ = 0;
    private java.lang.Object kind_;
    public enum KindCase
        implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
      STATEMENT(1),
      EXPRESSION(2),
      KIND_NOT_SET(0);
      private int value = 0;
      private KindCase(int value) {
        this.value = value;
      }
      public static KindCase valueOf(int value) {
        switch (value) {
          case 1: return STATEMENT;
          case 2: return EXPRESSION;
          case 0: return KIND_NOT_SET;
          default: throw new java.lang.IllegalArgumentException(
            "Value is undefined for this oneof enum.");
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public KindCase
    getKindCase() {
      return KindCase.valueOf(
          kindCase_);
    }

    public static final int STATEMENT_FIELD_NUMBER = 1;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement statement = 1;</code>
     */
    public boolean hasStatement() {
      return kindCase_ == 1;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement statement = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement getStatement() {
      if (kindCase_ == 1) {
         return (org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement) kind_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement.getDefaultInstance();
    }

    public static final int EXPRESSION_FIELD_NUMBER = 2;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression expression = 2;</code>
     */
    public boolean hasExpression() {
      return kindCase_ == 2;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression expression = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression getExpression() {
      if (kindCase_ == 2) {
         return (org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression) kind_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression.getDefaultInstance();
    }

    private void initFields() {
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (hasStatement()) {
        if (!getStatement().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasExpression()) {
        if (!getExpression().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (kindCase_ == 1) {
        output.writeMessage(1, (org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement) kind_);
      }
      if (kindCase_ == 2) {
        output.writeMessage(2, (org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression) kind_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (kindCase_ == 1) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, (org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement) kind_);
      }
      if (kindCase_ == 2) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, (org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression) kind_);
      }
      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.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression 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.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression 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.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression 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.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression 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.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression 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.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression)
        org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpressionOrBuilder {
      // Construct using org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        kindCase_ = 0;
        kind_ = null;
        return this;
      }

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

      public org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression build() {
        org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression buildPartial() {
        org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression result = new org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (kindCase_ == 1) {
          result.kind_ = kind_;
        }
        if (kindCase_ == 2) {
          result.kind_ = kind_;
        }
        result.bitField0_ = to_bitField0_;
        result.kindCase_ = kindCase_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression other) {
        if (other == org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression.getDefaultInstance()) return this;
        switch (other.getKindCase()) {
          case STATEMENT: {
            mergeStatement(other.getStatement());
            break;
          }
          case EXPRESSION: {
            mergeExpression(other.getExpression());
            break;
          }
          case KIND_NOT_SET: {
            break;
          }
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (hasStatement()) {
          if (!getStatement().isInitialized()) {
            
            return false;
          }
        }
        if (hasExpression()) {
          if (!getExpression().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.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int kindCase_ = 0;
      private java.lang.Object kind_;
      public KindCase
          getKindCase() {
        return KindCase.valueOf(
            kindCase_);
      }

      public Builder clearKind() {
        kindCase_ = 0;
        kind_ = null;
        return this;
      }

      private int bitField0_;

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement statement = 1;</code>
       */
      public boolean hasStatement() {
        return kindCase_ == 1;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement statement = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement getStatement() {
        if (kindCase_ == 1) {
          return (org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement) kind_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement statement = 1;</code>
       */
      public Builder setStatement(org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        kind_ = value;

        kindCase_ = 1;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement statement = 1;</code>
       */
      public Builder setStatement(
          org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement.Builder builderForValue) {
        kind_ = builderForValue.build();

        kindCase_ = 1;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement statement = 1;</code>
       */
      public Builder mergeStatement(org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement value) {
        if (kindCase_ == 1 &&
            kind_ != org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement.getDefaultInstance()) {
          kind_ = org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement.newBuilder((org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement) kind_)
              .mergeFrom(value).buildPartial();
        } else {
          kind_ = value;
        }

        kindCase_ = 1;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrStatement statement = 1;</code>
       */
      public Builder clearStatement() {
        if (kindCase_ == 1) {
          kindCase_ = 0;
          kind_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression expression = 2;</code>
       */
      public boolean hasExpression() {
        return kindCase_ == 2;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression expression = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression getExpression() {
        if (kindCase_ == 2) {
          return (org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression) kind_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression expression = 2;</code>
       */
      public Builder setExpression(org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        kind_ = value;

        kindCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression expression = 2;</code>
       */
      public Builder setExpression(
          org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression.Builder builderForValue) {
        kind_ = builderForValue.build();

        kindCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression expression = 2;</code>
       */
      public Builder mergeExpression(org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression value) {
        if (kindCase_ == 2 &&
            kind_ != org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression.getDefaultInstance()) {
          kind_ = org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression.newBuilder((org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression) kind_)
              .mergeFrom(value).buildPartial();
        } else {
          kind_ = value;
        }

        kindCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression expression = 2;</code>
       */
      public Builder clearExpression() {
        if (kindCase_ == 2) {
          kindCase_ = 0;
          kind_ = null;
          
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression)
  }

  public interface ClassOrFileOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.jvm.serialization.proto.ClassOrFile)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration declaration = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration> 
        getDeclarationList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration declaration = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration getDeclaration(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration declaration = 1;</code>
     */
    int getDeclarationCount();

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrType type = 2;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.proto.IrType> 
        getTypeList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrType type = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.proto.IrType getType(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrType type = 2;</code>
     */
    int getTypeCount();

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature signature = 3;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature> 
        getSignatureList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature signature = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature getSignature(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature signature = 3;</code>
     */
    int getSignatureCount();

    /**
     * <code>repeated string string = 4;</code>
     */
    org.jetbrains.kotlin.protobuf.ProtocolStringList
        getStringList();
    /**
     * <code>repeated string string = 4;</code>
     */
    int getStringCount();
    /**
     * <code>repeated string string = 4;</code>
     */
    java.lang.String getString(int index);
    /**
     * <code>repeated string string = 4;</code>
     */
    org.jetbrains.kotlin.protobuf.ByteString
        getStringBytes(int index);

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression body = 5;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression> 
        getBodyList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression body = 5;</code>
     */
    org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression getBody(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression body = 5;</code>
     */
    int getBodyCount();

    /**
     * <code>repeated string debug_info = 6;</code>
     */
    org.jetbrains.kotlin.protobuf.ProtocolStringList
        getDebugInfoList();
    /**
     * <code>repeated string debug_info = 6;</code>
     */
    int getDebugInfoCount();
    /**
     * <code>repeated string debug_info = 6;</code>
     */
    java.lang.String getDebugInfo(int index);
    /**
     * <code>repeated string debug_info = 6;</code>
     */
    org.jetbrains.kotlin.protobuf.ByteString
        getDebugInfoBytes(int index);

    /**
     * <code>required string file_facade_fq_name = 7;</code>
     */
    boolean hasFileFacadeFqName();
    /**
     * <code>required string file_facade_fq_name = 7;</code>
     */
    java.lang.String getFileFacadeFqName();
    /**
     * <code>required string file_facade_fq_name = 7;</code>
     */
    org.jetbrains.kotlin.protobuf.ByteString
        getFileFacadeFqNameBytes();

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry file_entry = 8;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry> 
        getFileEntryList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry file_entry = 8;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry getFileEntry(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry file_entry = 8;</code>
     */
    int getFileEntryCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.jvm.serialization.proto.ClassOrFile}
   */
  public static final class ClassOrFile extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.jvm.serialization.proto.ClassOrFile)
      ClassOrFileOrBuilder {
    // Use ClassOrFile.newBuilder() to construct.
    private ClassOrFile(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ClassOrFile(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public ClassOrFile getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private ClassOrFile(
        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)) {
                declaration_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration>();
                mutable_bitField0_ |= 0x00000001;
              }
              declaration_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration.PARSER, extensionRegistry));
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                type_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.proto.IrType>();
                mutable_bitField0_ |= 0x00000002;
              }
              type_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.proto.IrType.PARSER, extensionRegistry));
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                signature_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature>();
                mutable_bitField0_ |= 0x00000004;
              }
              signature_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature.PARSER, extensionRegistry));
              break;
            }
            case 34: {
              org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                string_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000008;
              }
              string_.add(bs);
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                body_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression>();
                mutable_bitField0_ |= 0x00000010;
              }
              body_.add(input.readMessage(org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression.PARSER, extensionRegistry));
              break;
            }
            case 50: {
              org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                debugInfo_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000020;
              }
              debugInfo_.add(bs);
              break;
            }
            case 58: {
              org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              fileFacadeFqName_ = bs;
              break;
            }
            case 66: {
              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                fileEntry_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry>();
                mutable_bitField0_ |= 0x00000080;
              }
              fileEntry_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry.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)) {
          declaration_ = java.util.Collections.unmodifiableList(declaration_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          type_ = java.util.Collections.unmodifiableList(type_);
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          signature_ = java.util.Collections.unmodifiableList(signature_);
        }
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          string_ = string_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          body_ = java.util.Collections.unmodifiableList(body_);
        }
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          debugInfo_ = debugInfo_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
          fileEntry_ = java.util.Collections.unmodifiableList(fileEntry_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<ClassOrFile> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<ClassOrFile>() {
      public ClassOrFile parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new ClassOrFile(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int DECLARATION_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration> declaration_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration declaration = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration> getDeclarationList() {
      return declaration_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration declaration = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationOrBuilder> 
        getDeclarationOrBuilderList() {
      return declaration_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration declaration = 1;</code>
     */
    public int getDeclarationCount() {
      return declaration_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration declaration = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration getDeclaration(int index) {
      return declaration_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration declaration = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationOrBuilder getDeclarationOrBuilder(
        int index) {
      return declaration_.get(index);
    }

    public static final int TYPE_FIELD_NUMBER = 2;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.proto.IrType> type_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrType type = 2;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.proto.IrType> getTypeList() {
      return type_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrType type = 2;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.proto.IrTypeOrBuilder> 
        getTypeOrBuilderList() {
      return type_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrType type = 2;</code>
     */
    public int getTypeCount() {
      return type_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrType type = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.proto.IrType getType(int index) {
      return type_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrType type = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.proto.IrTypeOrBuilder getTypeOrBuilder(
        int index) {
      return type_.get(index);
    }

    public static final int SIGNATURE_FIELD_NUMBER = 3;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature> signature_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature signature = 3;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature> getSignatureList() {
      return signature_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature signature = 3;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.proto.IdSignatureOrBuilder> 
        getSignatureOrBuilderList() {
      return signature_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature signature = 3;</code>
     */
    public int getSignatureCount() {
      return signature_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature signature = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature getSignature(int index) {
      return signature_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature signature = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.proto.IdSignatureOrBuilder getSignatureOrBuilder(
        int index) {
      return signature_.get(index);
    }

    public static final int STRING_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.protobuf.LazyStringList string_;
    /**
     * <code>repeated string string = 4;</code>
     */
    public org.jetbrains.kotlin.protobuf.ProtocolStringList
        getStringList() {
      return string_;
    }
    /**
     * <code>repeated string string = 4;</code>
     */
    public int getStringCount() {
      return string_.size();
    }
    /**
     * <code>repeated string string = 4;</code>
     */
    public java.lang.String getString(int index) {
      return string_.get(index);
    }
    /**
     * <code>repeated string string = 4;</code>
     */
    public org.jetbrains.kotlin.protobuf.ByteString
        getStringBytes(int index) {
      return string_.getByteString(index);
    }

    public static final int BODY_FIELD_NUMBER = 5;
    private java.util.List<org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression> body_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression body = 5;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression> getBodyList() {
      return body_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression body = 5;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpressionOrBuilder> 
        getBodyOrBuilderList() {
      return body_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression body = 5;</code>
     */
    public int getBodyCount() {
      return body_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression body = 5;</code>
     */
    public org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression getBody(int index) {
      return body_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression body = 5;</code>
     */
    public org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpressionOrBuilder getBodyOrBuilder(
        int index) {
      return body_.get(index);
    }

    public static final int DEBUG_INFO_FIELD_NUMBER = 6;
    private org.jetbrains.kotlin.protobuf.LazyStringList debugInfo_;
    /**
     * <code>repeated string debug_info = 6;</code>
     */
    public org.jetbrains.kotlin.protobuf.ProtocolStringList
        getDebugInfoList() {
      return debugInfo_;
    }
    /**
     * <code>repeated string debug_info = 6;</code>
     */
    public int getDebugInfoCount() {
      return debugInfo_.size();
    }
    /**
     * <code>repeated string debug_info = 6;</code>
     */
    public java.lang.String getDebugInfo(int index) {
      return debugInfo_.get(index);
    }
    /**
     * <code>repeated string debug_info = 6;</code>
     */
    public org.jetbrains.kotlin.protobuf.ByteString
        getDebugInfoBytes(int index) {
      return debugInfo_.getByteString(index);
    }

    public static final int FILE_FACADE_FQ_NAME_FIELD_NUMBER = 7;
    private java.lang.Object fileFacadeFqName_;
    /**
     * <code>required string file_facade_fq_name = 7;</code>
     */
    public boolean hasFileFacadeFqName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string file_facade_fq_name = 7;</code>
     */
    public java.lang.String getFileFacadeFqName() {
      java.lang.Object ref = fileFacadeFqName_;
      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()) {
          fileFacadeFqName_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string file_facade_fq_name = 7;</code>
     */
    public org.jetbrains.kotlin.protobuf.ByteString
        getFileFacadeFqNameBytes() {
      java.lang.Object ref = fileFacadeFqName_;
      if (ref instanceof java.lang.String) {
        org.jetbrains.kotlin.protobuf.ByteString b = 
            org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fileFacadeFqName_ = b;
        return b;
      } else {
        return (org.jetbrains.kotlin.protobuf.ByteString) ref;
      }
    }

    public static final int FILE_ENTRY_FIELD_NUMBER = 8;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry> fileEntry_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry file_entry = 8;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry> getFileEntryList() {
      return fileEntry_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry file_entry = 8;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.proto.FileEntryOrBuilder> 
        getFileEntryOrBuilderList() {
      return fileEntry_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry file_entry = 8;</code>
     */
    public int getFileEntryCount() {
      return fileEntry_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry file_entry = 8;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry getFileEntry(int index) {
      return fileEntry_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry file_entry = 8;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.proto.FileEntryOrBuilder getFileEntryOrBuilder(
        int index) {
      return fileEntry_.get(index);
    }

    private void initFields() {
      declaration_ = java.util.Collections.emptyList();
      type_ = java.util.Collections.emptyList();
      signature_ = java.util.Collections.emptyList();
      string_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
      body_ = java.util.Collections.emptyList();
      debugInfo_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
      fileFacadeFqName_ = "";
      fileEntry_ = 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 (!hasFileFacadeFqName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getDeclarationCount(); i++) {
        if (!getDeclaration(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getTypeCount(); i++) {
        if (!getType(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getSignatureCount(); i++) {
        if (!getSignature(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getBodyCount(); i++) {
        if (!getBody(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getFileEntryCount(); i++) {
        if (!getFileEntry(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 < declaration_.size(); i++) {
        output.writeMessage(1, declaration_.get(i));
      }
      for (int i = 0; i < type_.size(); i++) {
        output.writeMessage(2, type_.get(i));
      }
      for (int i = 0; i < signature_.size(); i++) {
        output.writeMessage(3, signature_.get(i));
      }
      for (int i = 0; i < string_.size(); i++) {
        output.writeBytes(4, string_.getByteString(i));
      }
      for (int i = 0; i < body_.size(); i++) {
        output.writeMessage(5, body_.get(i));
      }
      for (int i = 0; i < debugInfo_.size(); i++) {
        output.writeBytes(6, debugInfo_.getByteString(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(7, getFileFacadeFqNameBytes());
      }
      for (int i = 0; i < fileEntry_.size(); i++) {
        output.writeMessage(8, fileEntry_.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 < declaration_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, declaration_.get(i));
      }
      for (int i = 0; i < type_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, type_.get(i));
      }
      for (int i = 0; i < signature_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, signature_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < string_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(string_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getStringList().size();
      }
      for (int i = 0; i < body_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, body_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < debugInfo_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(debugInfo_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getDebugInfoList().size();
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBytesSize(7, getFileFacadeFqNameBytes());
      }
      for (int i = 0; i < fileEntry_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(8, fileEntry_.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.backend.jvm.serialization.proto.JvmIr.ClassOrFile parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.ClassOrFile 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.backend.jvm.serialization.proto.JvmIr.ClassOrFile parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.ClassOrFile 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.backend.jvm.serialization.proto.JvmIr.ClassOrFile parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.ClassOrFile 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.backend.jvm.serialization.proto.JvmIr.ClassOrFile parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.ClassOrFile 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.backend.jvm.serialization.proto.JvmIr.ClassOrFile parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.ClassOrFile 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.backend.jvm.serialization.proto.JvmIr.ClassOrFile prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.backend.jvm.serialization.proto.ClassOrFile}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.ClassOrFile, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.backend.jvm.serialization.proto.ClassOrFile)
        org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.ClassOrFileOrBuilder {
      // Construct using org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.ClassOrFile.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        declaration_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        signature_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        string_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        body_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        debugInfo_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        fileFacadeFqName_ = "";
        bitField0_ = (bitField0_ & ~0x00000040);
        fileEntry_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.ClassOrFile getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.ClassOrFile.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.ClassOrFile build() {
        org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.ClassOrFile result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.ClassOrFile buildPartial() {
        org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.ClassOrFile result = new org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.ClassOrFile(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          declaration_ = java.util.Collections.unmodifiableList(declaration_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.declaration_ = declaration_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          type_ = java.util.Collections.unmodifiableList(type_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.type_ = type_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          signature_ = java.util.Collections.unmodifiableList(signature_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.signature_ = signature_;
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          string_ = string_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.string_ = string_;
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          body_ = java.util.Collections.unmodifiableList(body_);
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.body_ = body_;
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          debugInfo_ = debugInfo_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.debugInfo_ = debugInfo_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000001;
        }
        result.fileFacadeFqName_ = fileFacadeFqName_;
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          fileEntry_ = java.util.Collections.unmodifiableList(fileEntry_);
          bitField0_ = (bitField0_ & ~0x00000080);
        }
        result.fileEntry_ = fileEntry_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.ClassOrFile other) {
        if (other == org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.ClassOrFile.getDefaultInstance()) return this;
        if (!other.declaration_.isEmpty()) {
          if (declaration_.isEmpty()) {
            declaration_ = other.declaration_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureDeclarationIsMutable();
            declaration_.addAll(other.declaration_);
          }
          
        }
        if (!other.type_.isEmpty()) {
          if (type_.isEmpty()) {
            type_ = other.type_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureTypeIsMutable();
            type_.addAll(other.type_);
          }
          
        }
        if (!other.signature_.isEmpty()) {
          if (signature_.isEmpty()) {
            signature_ = other.signature_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureSignatureIsMutable();
            signature_.addAll(other.signature_);
          }
          
        }
        if (!other.string_.isEmpty()) {
          if (string_.isEmpty()) {
            string_ = other.string_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureStringIsMutable();
            string_.addAll(other.string_);
          }
          
        }
        if (!other.body_.isEmpty()) {
          if (body_.isEmpty()) {
            body_ = other.body_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureBodyIsMutable();
            body_.addAll(other.body_);
          }
          
        }
        if (!other.debugInfo_.isEmpty()) {
          if (debugInfo_.isEmpty()) {
            debugInfo_ = other.debugInfo_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureDebugInfoIsMutable();
            debugInfo_.addAll(other.debugInfo_);
          }
          
        }
        if (other.hasFileFacadeFqName()) {
          bitField0_ |= 0x00000040;
          fileFacadeFqName_ = other.fileFacadeFqName_;
          
        }
        if (!other.fileEntry_.isEmpty()) {
          if (fileEntry_.isEmpty()) {
            fileEntry_ = other.fileEntry_;
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            ensureFileEntryIsMutable();
            fileEntry_.addAll(other.fileEntry_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasFileFacadeFqName()) {
          
          return false;
        }
        for (int i = 0; i < getDeclarationCount(); i++) {
          if (!getDeclaration(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getTypeCount(); i++) {
          if (!getType(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getSignatureCount(); i++) {
          if (!getSignature(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getBodyCount(); i++) {
          if (!getBody(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getFileEntryCount(); i++) {
          if (!getFileEntry(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.backend.jvm.serialization.proto.JvmIr.ClassOrFile parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.ClassOrFile) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration> declaration_ =
        java.util.Collections.emptyList();
      private void ensureDeclarationIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          declaration_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration>(declaration_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration declaration = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration> getDeclarationList() {
        return java.util.Collections.unmodifiableList(declaration_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration declaration = 1;</code>
       */
      public int getDeclarationCount() {
        return declaration_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration declaration = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration getDeclaration(int index) {
        return declaration_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration declaration = 1;</code>
       */
      public Builder setDeclaration(
          int index, org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureDeclarationIsMutable();
        declaration_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration declaration = 1;</code>
       */
      public Builder setDeclaration(
          int index, org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration.Builder builderForValue) {
        ensureDeclarationIsMutable();
        declaration_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration declaration = 1;</code>
       */
      public Builder addDeclaration(org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureDeclarationIsMutable();
        declaration_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration declaration = 1;</code>
       */
      public Builder addDeclaration(
          int index, org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureDeclarationIsMutable();
        declaration_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration declaration = 1;</code>
       */
      public Builder addDeclaration(
          org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration.Builder builderForValue) {
        ensureDeclarationIsMutable();
        declaration_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration declaration = 1;</code>
       */
      public Builder addDeclaration(
          int index, org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration.Builder builderForValue) {
        ensureDeclarationIsMutable();
        declaration_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration declaration = 1;</code>
       */
      public Builder addAllDeclaration(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration> values) {
        ensureDeclarationIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, declaration_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration declaration = 1;</code>
       */
      public Builder clearDeclaration() {
        declaration_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclaration declaration = 1;</code>
       */
      public Builder removeDeclaration(int index) {
        ensureDeclarationIsMutable();
        declaration_.remove(index);

        return this;
      }

      private java.util.List<org.jetbrains.kotlin.backend.common.serialization.proto.IrType> type_ =
        java.util.Collections.emptyList();
      private void ensureTypeIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          type_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.proto.IrType>(type_);
          bitField0_ |= 0x00000002;
         }
      }

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

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrType type = 2;</code>
       */
      public Builder setType(
          int index, org.jetbrains.kotlin.backend.common.serialization.proto.IrType.Builder builderForValue) {
        ensureTypeIsMutable();
        type_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrType type = 2;</code>
       */
      public Builder addType(org.jetbrains.kotlin.backend.common.serialization.proto.IrType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeIsMutable();
        type_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrType type = 2;</code>
       */
      public Builder addType(
          int index, org.jetbrains.kotlin.backend.common.serialization.proto.IrType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeIsMutable();
        type_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrType type = 2;</code>
       */
      public Builder addType(
          org.jetbrains.kotlin.backend.common.serialization.proto.IrType.Builder builderForValue) {
        ensureTypeIsMutable();
        type_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrType type = 2;</code>
       */
      public Builder addType(
          int index, org.jetbrains.kotlin.backend.common.serialization.proto.IrType.Builder builderForValue) {
        ensureTypeIsMutable();
        type_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrType type = 2;</code>
       */
      public Builder addAllType(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.proto.IrType> values) {
        ensureTypeIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, type_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrType type = 2;</code>
       */
      public Builder clearType() {
        type_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrType type = 2;</code>
       */
      public Builder removeType(int index) {
        ensureTypeIsMutable();
        type_.remove(index);

        return this;
      }

      private java.util.List<org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature> signature_ =
        java.util.Collections.emptyList();
      private void ensureSignatureIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          signature_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature>(signature_);
          bitField0_ |= 0x00000004;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature signature = 3;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature> getSignatureList() {
        return java.util.Collections.unmodifiableList(signature_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature signature = 3;</code>
       */
      public int getSignatureCount() {
        return signature_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature signature = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature getSignature(int index) {
        return signature_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature signature = 3;</code>
       */
      public Builder setSignature(
          int index, org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSignatureIsMutable();
        signature_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature signature = 3;</code>
       */
      public Builder setSignature(
          int index, org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature.Builder builderForValue) {
        ensureSignatureIsMutable();
        signature_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature signature = 3;</code>
       */
      public Builder addSignature(org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSignatureIsMutable();
        signature_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature signature = 3;</code>
       */
      public Builder addSignature(
          int index, org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSignatureIsMutable();
        signature_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature signature = 3;</code>
       */
      public Builder addSignature(
          org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature.Builder builderForValue) {
        ensureSignatureIsMutable();
        signature_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature signature = 3;</code>
       */
      public Builder addSignature(
          int index, org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature.Builder builderForValue) {
        ensureSignatureIsMutable();
        signature_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature signature = 3;</code>
       */
      public Builder addAllSignature(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature> values) {
        ensureSignatureIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, signature_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature signature = 3;</code>
       */
      public Builder clearSignature() {
        signature_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature signature = 3;</code>
       */
      public Builder removeSignature(int index) {
        ensureSignatureIsMutable();
        signature_.remove(index);

        return this;
      }

      private org.jetbrains.kotlin.protobuf.LazyStringList string_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
      private void ensureStringIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          string_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(string_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <code>repeated string string = 4;</code>
       */
      public org.jetbrains.kotlin.protobuf.ProtocolStringList
          getStringList() {
        return string_.getUnmodifiableView();
      }
      /**
       * <code>repeated string string = 4;</code>
       */
      public int getStringCount() {
        return string_.size();
      }
      /**
       * <code>repeated string string = 4;</code>
       */
      public java.lang.String getString(int index) {
        return string_.get(index);
      }
      /**
       * <code>repeated string string = 4;</code>
       */
      public org.jetbrains.kotlin.protobuf.ByteString
          getStringBytes(int index) {
        return string_.getByteString(index);
      }
      /**
       * <code>repeated string string = 4;</code>
       */
      public Builder setString(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStringIsMutable();
        string_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated string string = 4;</code>
       */
      public Builder addString(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStringIsMutable();
        string_.add(value);
        
        return this;
      }
      /**
       * <code>repeated string string = 4;</code>
       */
      public Builder addAllString(
          java.lang.Iterable<java.lang.String> values) {
        ensureStringIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, string_);
        
        return this;
      }
      /**
       * <code>repeated string string = 4;</code>
       */
      public Builder clearString() {
        string_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        
        return this;
      }
      /**
       * <code>repeated string string = 4;</code>
       */
      public Builder addStringBytes(
          org.jetbrains.kotlin.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStringIsMutable();
        string_.add(value);
        
        return this;
      }

      private java.util.List<org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression> body_ =
        java.util.Collections.emptyList();
      private void ensureBodyIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          body_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression>(body_);
          bitField0_ |= 0x00000010;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression body = 5;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression> getBodyList() {
        return java.util.Collections.unmodifiableList(body_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression body = 5;</code>
       */
      public int getBodyCount() {
        return body_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression body = 5;</code>
       */
      public org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression getBody(int index) {
        return body_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression body = 5;</code>
       */
      public Builder setBody(
          int index, org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureBodyIsMutable();
        body_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression body = 5;</code>
       */
      public Builder setBody(
          int index, org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression.Builder builderForValue) {
        ensureBodyIsMutable();
        body_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression body = 5;</code>
       */
      public Builder addBody(org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureBodyIsMutable();
        body_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression body = 5;</code>
       */
      public Builder addBody(
          int index, org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureBodyIsMutable();
        body_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression body = 5;</code>
       */
      public Builder addBody(
          org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression.Builder builderForValue) {
        ensureBodyIsMutable();
        body_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression body = 5;</code>
       */
      public Builder addBody(
          int index, org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression.Builder builderForValue) {
        ensureBodyIsMutable();
        body_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression body = 5;</code>
       */
      public Builder addAllBody(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr.XStatementOrExpression> values) {
        ensureBodyIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, body_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression body = 5;</code>
       */
      public Builder clearBody() {
        body_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.jvm.serialization.proto.XStatementOrExpression body = 5;</code>
       */
      public Builder removeBody(int index) {
        ensureBodyIsMutable();
        body_.remove(index);

        return this;
      }

      private org.jetbrains.kotlin.protobuf.LazyStringList debugInfo_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDebugInfoIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          debugInfo_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(debugInfo_);
          bitField0_ |= 0x00000020;
         }
      }
      /**
       * <code>repeated string debug_info = 6;</code>
       */
      public org.jetbrains.kotlin.protobuf.ProtocolStringList
          getDebugInfoList() {
        return debugInfo_.getUnmodifiableView();
      }
      /**
       * <code>repeated string debug_info = 6;</code>
       */
      public int getDebugInfoCount() {
        return debugInfo_.size();
      }
      /**
       * <code>repeated string debug_info = 6;</code>
       */
      public java.lang.String getDebugInfo(int index) {
        return debugInfo_.get(index);
      }
      /**
       * <code>repeated string debug_info = 6;</code>
       */
      public org.jetbrains.kotlin.protobuf.ByteString
          getDebugInfoBytes(int index) {
        return debugInfo_.getByteString(index);
      }
      /**
       * <code>repeated string debug_info = 6;</code>
       */
      public Builder setDebugInfo(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDebugInfoIsMutable();
        debugInfo_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated string debug_info = 6;</code>
       */
      public Builder addDebugInfo(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDebugInfoIsMutable();
        debugInfo_.add(value);
        
        return this;
      }
      /**
       * <code>repeated string debug_info = 6;</code>
       */
      public Builder addAllDebugInfo(
          java.lang.Iterable<java.lang.String> values) {
        ensureDebugInfoIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, debugInfo_);
        
        return this;
      }
      /**
       * <code>repeated string debug_info = 6;</code>
       */
      public Builder clearDebugInfo() {
        debugInfo_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        
        return this;
      }
      /**
       * <code>repeated string debug_info = 6;</code>
       */
      public Builder addDebugInfoBytes(
          org.jetbrains.kotlin.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDebugInfoIsMutable();
        debugInfo_.add(value);
        
        return this;
      }

      private java.lang.Object fileFacadeFqName_ = "";
      /**
       * <code>required string file_facade_fq_name = 7;</code>
       */
      public boolean hasFileFacadeFqName() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>required string file_facade_fq_name = 7;</code>
       */
      public java.lang.String getFileFacadeFqName() {
        java.lang.Object ref = fileFacadeFqName_;
        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()) {
            fileFacadeFqName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string file_facade_fq_name = 7;</code>
       */
      public org.jetbrains.kotlin.protobuf.ByteString
          getFileFacadeFqNameBytes() {
        java.lang.Object ref = fileFacadeFqName_;
        if (ref instanceof String) {
          org.jetbrains.kotlin.protobuf.ByteString b = 
              org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fileFacadeFqName_ = b;
          return b;
        } else {
          return (org.jetbrains.kotlin.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string file_facade_fq_name = 7;</code>
       */
      public Builder setFileFacadeFqName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        fileFacadeFqName_ = value;
        
        return this;
      }
      /**
       * <code>required string file_facade_fq_name = 7;</code>
       */
      public Builder clearFileFacadeFqName() {
        bitField0_ = (bitField0_ & ~0x00000040);
        fileFacadeFqName_ = getDefaultInstance().getFileFacadeFqName();
        
        return this;
      }
      /**
       * <code>required string file_facade_fq_name = 7;</code>
       */
      public Builder setFileFacadeFqNameBytes(
          org.jetbrains.kotlin.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        fileFacadeFqName_ = value;
        
        return this;
      }

      private java.util.List<org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry> fileEntry_ =
        java.util.Collections.emptyList();
      private void ensureFileEntryIsMutable() {
        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
          fileEntry_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry>(fileEntry_);
          bitField0_ |= 0x00000080;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry file_entry = 8;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry> getFileEntryList() {
        return java.util.Collections.unmodifiableList(fileEntry_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry file_entry = 8;</code>
       */
      public int getFileEntryCount() {
        return fileEntry_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry file_entry = 8;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry getFileEntry(int index) {
        return fileEntry_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry file_entry = 8;</code>
       */
      public Builder setFileEntry(
          int index, org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFileEntryIsMutable();
        fileEntry_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry file_entry = 8;</code>
       */
      public Builder setFileEntry(
          int index, org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry.Builder builderForValue) {
        ensureFileEntryIsMutable();
        fileEntry_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry file_entry = 8;</code>
       */
      public Builder addFileEntry(org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFileEntryIsMutable();
        fileEntry_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry file_entry = 8;</code>
       */
      public Builder addFileEntry(
          int index, org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFileEntryIsMutable();
        fileEntry_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry file_entry = 8;</code>
       */
      public Builder addFileEntry(
          org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry.Builder builderForValue) {
        ensureFileEntryIsMutable();
        fileEntry_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry file_entry = 8;</code>
       */
      public Builder addFileEntry(
          int index, org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry.Builder builderForValue) {
        ensureFileEntryIsMutable();
        fileEntry_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry file_entry = 8;</code>
       */
      public Builder addAllFileEntry(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry> values) {
        ensureFileEntryIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, fileEntry_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry file_entry = 8;</code>
       */
      public Builder clearFileEntry() {
        fileEntry_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry file_entry = 8;</code>
       */
      public Builder removeFileEntry(int index) {
        ensureFileEntryIsMutable();
        fileEntry_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.jvm.serialization.proto.ClassOrFile)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.jvm.serialization.proto.ClassOrFile)
  }


  static {
  }

  // @@protoc_insertion_point(outer_class_scope)
}