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

package org.jetbrains.kotlin.backend.common.serialization;

public final class KotlinIr {
  private KotlinIr() {}
  public static void registerAllExtensions(
      org.jetbrains.kotlin.protobuf.ExtensionRegistryLite registry) {
  }
  /**
   * Protobuf enum {@code org.jetbrains.kotlin.backend.common.serialization.KnownOrigin}
   */
  public enum KnownOrigin
      implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
    /**
     * <code>CUSTOM = 1;</code>
     */
    CUSTOM(0, 1),
    /**
     * <code>DEFINED = 2;</code>
     */
    DEFINED(1, 2),
    /**
     * <code>FAKE_OVERRIDE = 3;</code>
     */
    FAKE_OVERRIDE(2, 3),
    /**
     * <code>FOR_LOOP_ITERATOR = 4;</code>
     */
    FOR_LOOP_ITERATOR(3, 4),
    /**
     * <code>FOR_LOOP_VARIABLE = 5;</code>
     */
    FOR_LOOP_VARIABLE(4, 5),
    /**
     * <code>FOR_LOOP_IMPLICIT_VARIABLE = 6;</code>
     */
    FOR_LOOP_IMPLICIT_VARIABLE(5, 6),
    /**
     * <code>PROPERTY_BACKING_FIELD = 7;</code>
     */
    PROPERTY_BACKING_FIELD(6, 7),
    /**
     * <code>DEFAULT_PROPERTY_ACCESSOR = 8;</code>
     */
    DEFAULT_PROPERTY_ACCESSOR(7, 8),
    /**
     * <code>DELEGATE = 9;</code>
     */
    DELEGATE(8, 9),
    /**
     * <code>DELEGATED_PROPERTY_ACCESSOR = 10;</code>
     */
    DELEGATED_PROPERTY_ACCESSOR(9, 10),
    /**
     * <code>DELEGATED_MEMBER = 11;</code>
     */
    DELEGATED_MEMBER(10, 11),
    /**
     * <code>ENUM_CLASS_SPECIAL_MEMBER = 12;</code>
     */
    ENUM_CLASS_SPECIAL_MEMBER(11, 12),
    /**
     * <code>FUNCTION_FOR_DEFAULT_PARAMETER = 13;</code>
     */
    FUNCTION_FOR_DEFAULT_PARAMETER(12, 13),
    /**
     * <code>FILE_CLASS = 14;</code>
     */
    FILE_CLASS(13, 14),
    /**
     * <code>GENERATED_DATA_CLASS_MEMBER = 15;</code>
     */
    GENERATED_DATA_CLASS_MEMBER(14, 15),
    /**
     * <code>GENERATED_INLINE_CLASS_MEMBER = 16;</code>
     */
    GENERATED_INLINE_CLASS_MEMBER(15, 16),
    /**
     * <code>LOCAL_FUNCTION_FOR_LAMBDA = 17;</code>
     */
    LOCAL_FUNCTION_FOR_LAMBDA(16, 17),
    /**
     * <code>CATCH_PARAMETER = 19;</code>
     */
    CATCH_PARAMETER(17, 19),
    /**
     * <code>INSTANCE_RECEIVER = 20;</code>
     */
    INSTANCE_RECEIVER(18, 20),
    /**
     * <code>PRIMARY_CONSTRUCTOR_PARAMETER = 21;</code>
     */
    PRIMARY_CONSTRUCTOR_PARAMETER(19, 21),
    /**
     * <code>IR_TEMPORARY_VARIABLE = 22;</code>
     */
    IR_TEMPORARY_VARIABLE(20, 22),
    /**
     * <code>IR_EXTERNAL_DECLARATION_STUB = 23;</code>
     */
    IR_EXTERNAL_DECLARATION_STUB(21, 23),
    /**
     * <code>IR_EXTERNAL_JAVA_DECLARATION_STUB = 24;</code>
     */
    IR_EXTERNAL_JAVA_DECLARATION_STUB(22, 24),
    /**
     * <code>IR_BUILTINS_STUB = 25;</code>
     */
    IR_BUILTINS_STUB(23, 25),
    /**
     * <code>BRIDGE = 26;</code>
     */
    BRIDGE(24, 26),
    /**
     * <code>FIELD_FOR_ENUM_ENTRY = 27;</code>
     */
    FIELD_FOR_ENUM_ENTRY(25, 27),
    /**
     * <code>FIELD_FOR_ENUM_VALUES = 28;</code>
     */
    FIELD_FOR_ENUM_VALUES(26, 28),
    /**
     * <code>FIELD_FOR_OBJECT_INSTANCE = 29;</code>
     */
    FIELD_FOR_OBJECT_INSTANCE(27, 29),
    ;

    /**
     * <code>CUSTOM = 1;</code>
     */
    public static final int CUSTOM_VALUE = 1;
    /**
     * <code>DEFINED = 2;</code>
     */
    public static final int DEFINED_VALUE = 2;
    /**
     * <code>FAKE_OVERRIDE = 3;</code>
     */
    public static final int FAKE_OVERRIDE_VALUE = 3;
    /**
     * <code>FOR_LOOP_ITERATOR = 4;</code>
     */
    public static final int FOR_LOOP_ITERATOR_VALUE = 4;
    /**
     * <code>FOR_LOOP_VARIABLE = 5;</code>
     */
    public static final int FOR_LOOP_VARIABLE_VALUE = 5;
    /**
     * <code>FOR_LOOP_IMPLICIT_VARIABLE = 6;</code>
     */
    public static final int FOR_LOOP_IMPLICIT_VARIABLE_VALUE = 6;
    /**
     * <code>PROPERTY_BACKING_FIELD = 7;</code>
     */
    public static final int PROPERTY_BACKING_FIELD_VALUE = 7;
    /**
     * <code>DEFAULT_PROPERTY_ACCESSOR = 8;</code>
     */
    public static final int DEFAULT_PROPERTY_ACCESSOR_VALUE = 8;
    /**
     * <code>DELEGATE = 9;</code>
     */
    public static final int DELEGATE_VALUE = 9;
    /**
     * <code>DELEGATED_PROPERTY_ACCESSOR = 10;</code>
     */
    public static final int DELEGATED_PROPERTY_ACCESSOR_VALUE = 10;
    /**
     * <code>DELEGATED_MEMBER = 11;</code>
     */
    public static final int DELEGATED_MEMBER_VALUE = 11;
    /**
     * <code>ENUM_CLASS_SPECIAL_MEMBER = 12;</code>
     */
    public static final int ENUM_CLASS_SPECIAL_MEMBER_VALUE = 12;
    /**
     * <code>FUNCTION_FOR_DEFAULT_PARAMETER = 13;</code>
     */
    public static final int FUNCTION_FOR_DEFAULT_PARAMETER_VALUE = 13;
    /**
     * <code>FILE_CLASS = 14;</code>
     */
    public static final int FILE_CLASS_VALUE = 14;
    /**
     * <code>GENERATED_DATA_CLASS_MEMBER = 15;</code>
     */
    public static final int GENERATED_DATA_CLASS_MEMBER_VALUE = 15;
    /**
     * <code>GENERATED_INLINE_CLASS_MEMBER = 16;</code>
     */
    public static final int GENERATED_INLINE_CLASS_MEMBER_VALUE = 16;
    /**
     * <code>LOCAL_FUNCTION_FOR_LAMBDA = 17;</code>
     */
    public static final int LOCAL_FUNCTION_FOR_LAMBDA_VALUE = 17;
    /**
     * <code>CATCH_PARAMETER = 19;</code>
     */
    public static final int CATCH_PARAMETER_VALUE = 19;
    /**
     * <code>INSTANCE_RECEIVER = 20;</code>
     */
    public static final int INSTANCE_RECEIVER_VALUE = 20;
    /**
     * <code>PRIMARY_CONSTRUCTOR_PARAMETER = 21;</code>
     */
    public static final int PRIMARY_CONSTRUCTOR_PARAMETER_VALUE = 21;
    /**
     * <code>IR_TEMPORARY_VARIABLE = 22;</code>
     */
    public static final int IR_TEMPORARY_VARIABLE_VALUE = 22;
    /**
     * <code>IR_EXTERNAL_DECLARATION_STUB = 23;</code>
     */
    public static final int IR_EXTERNAL_DECLARATION_STUB_VALUE = 23;
    /**
     * <code>IR_EXTERNAL_JAVA_DECLARATION_STUB = 24;</code>
     */
    public static final int IR_EXTERNAL_JAVA_DECLARATION_STUB_VALUE = 24;
    /**
     * <code>IR_BUILTINS_STUB = 25;</code>
     */
    public static final int IR_BUILTINS_STUB_VALUE = 25;
    /**
     * <code>BRIDGE = 26;</code>
     */
    public static final int BRIDGE_VALUE = 26;
    /**
     * <code>FIELD_FOR_ENUM_ENTRY = 27;</code>
     */
    public static final int FIELD_FOR_ENUM_ENTRY_VALUE = 27;
    /**
     * <code>FIELD_FOR_ENUM_VALUES = 28;</code>
     */
    public static final int FIELD_FOR_ENUM_VALUES_VALUE = 28;
    /**
     * <code>FIELD_FOR_OBJECT_INSTANCE = 29;</code>
     */
    public static final int FIELD_FOR_OBJECT_INSTANCE_VALUE = 29;


    public final int getNumber() { return value; }

    public static KnownOrigin valueOf(int value) {
      switch (value) {
        case 1: return CUSTOM;
        case 2: return DEFINED;
        case 3: return FAKE_OVERRIDE;
        case 4: return FOR_LOOP_ITERATOR;
        case 5: return FOR_LOOP_VARIABLE;
        case 6: return FOR_LOOP_IMPLICIT_VARIABLE;
        case 7: return PROPERTY_BACKING_FIELD;
        case 8: return DEFAULT_PROPERTY_ACCESSOR;
        case 9: return DELEGATE;
        case 10: return DELEGATED_PROPERTY_ACCESSOR;
        case 11: return DELEGATED_MEMBER;
        case 12: return ENUM_CLASS_SPECIAL_MEMBER;
        case 13: return FUNCTION_FOR_DEFAULT_PARAMETER;
        case 14: return FILE_CLASS;
        case 15: return GENERATED_DATA_CLASS_MEMBER;
        case 16: return GENERATED_INLINE_CLASS_MEMBER;
        case 17: return LOCAL_FUNCTION_FOR_LAMBDA;
        case 19: return CATCH_PARAMETER;
        case 20: return INSTANCE_RECEIVER;
        case 21: return PRIMARY_CONSTRUCTOR_PARAMETER;
        case 22: return IR_TEMPORARY_VARIABLE;
        case 23: return IR_EXTERNAL_DECLARATION_STUB;
        case 24: return IR_EXTERNAL_JAVA_DECLARATION_STUB;
        case 25: return IR_BUILTINS_STUB;
        case 26: return BRIDGE;
        case 27: return FIELD_FOR_ENUM_ENTRY;
        case 28: return FIELD_FOR_ENUM_VALUES;
        case 29: return FIELD_FOR_OBJECT_INSTANCE;
        default: return null;
      }
    }

    public static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<KnownOrigin>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<KnownOrigin>
        internalValueMap =
          new org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<KnownOrigin>() {
            public KnownOrigin findValueByNumber(int number) {
              return KnownOrigin.valueOf(number);
            }
          };

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.backend.common.serialization.KnownOrigin)
  }

  /**
   * Protobuf enum {@code org.jetbrains.kotlin.backend.common.serialization.IrSymbolKind}
   */
  public enum IrSymbolKind
      implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
    /**
     * <code>FUNCTION_SYMBOL = 1;</code>
     */
    FUNCTION_SYMBOL(0, 1),
    /**
     * <code>CONSTRUCTOR_SYMBOL = 2;</code>
     */
    CONSTRUCTOR_SYMBOL(1, 2),
    /**
     * <code>ENUM_ENTRY_SYMBOL = 3;</code>
     */
    ENUM_ENTRY_SYMBOL(2, 3),
    /**
     * <code>FIELD_SYMBOL = 4;</code>
     */
    FIELD_SYMBOL(3, 4),
    /**
     * <code>VALUE_PARAMETER_SYMBOL = 5;</code>
     */
    VALUE_PARAMETER_SYMBOL(4, 5),
    /**
     * <code>RETURNABLE_BLOCK_SYMBOL = 6;</code>
     */
    RETURNABLE_BLOCK_SYMBOL(5, 6),
    /**
     * <code>CLASS_SYMBOL = 7;</code>
     */
    CLASS_SYMBOL(6, 7),
    /**
     * <code>TYPE_PARAMETER_SYMBOL = 8;</code>
     */
    TYPE_PARAMETER_SYMBOL(7, 8),
    /**
     * <code>VARIABLE_SYMBOL = 9;</code>
     */
    VARIABLE_SYMBOL(8, 9),
    /**
     * <code>ANONYMOUS_INIT_SYMBOL = 10;</code>
     */
    ANONYMOUS_INIT_SYMBOL(9, 10),
    /**
     * <code>STANDALONE_FIELD_SYMBOL = 11;</code>
     *
     * <pre>
     * For fields without properties. WrappedFieldDescriptor, rather than WrappedPropertyDescriptor.
     * </pre>
     */
    STANDALONE_FIELD_SYMBOL(10, 11),
    /**
     * <code>RECEIVER_PARAMETER_SYMBOL = 12;</code>
     *
     * <pre>
     * ReceiverParameterDescriptor rather than ValueParameterDescriptor.
     * </pre>
     */
    RECEIVER_PARAMETER_SYMBOL(11, 12),
    /**
     * <code>PROPERTY_SYMBOL = 13;</code>
     */
    PROPERTY_SYMBOL(12, 13),
    /**
     * <code>LOCAL_DELEGATED_PROPERTY_SYMBOL = 14;</code>
     */
    LOCAL_DELEGATED_PROPERTY_SYMBOL(13, 14),
    ;

    /**
     * <code>FUNCTION_SYMBOL = 1;</code>
     */
    public static final int FUNCTION_SYMBOL_VALUE = 1;
    /**
     * <code>CONSTRUCTOR_SYMBOL = 2;</code>
     */
    public static final int CONSTRUCTOR_SYMBOL_VALUE = 2;
    /**
     * <code>ENUM_ENTRY_SYMBOL = 3;</code>
     */
    public static final int ENUM_ENTRY_SYMBOL_VALUE = 3;
    /**
     * <code>FIELD_SYMBOL = 4;</code>
     */
    public static final int FIELD_SYMBOL_VALUE = 4;
    /**
     * <code>VALUE_PARAMETER_SYMBOL = 5;</code>
     */
    public static final int VALUE_PARAMETER_SYMBOL_VALUE = 5;
    /**
     * <code>RETURNABLE_BLOCK_SYMBOL = 6;</code>
     */
    public static final int RETURNABLE_BLOCK_SYMBOL_VALUE = 6;
    /**
     * <code>CLASS_SYMBOL = 7;</code>
     */
    public static final int CLASS_SYMBOL_VALUE = 7;
    /**
     * <code>TYPE_PARAMETER_SYMBOL = 8;</code>
     */
    public static final int TYPE_PARAMETER_SYMBOL_VALUE = 8;
    /**
     * <code>VARIABLE_SYMBOL = 9;</code>
     */
    public static final int VARIABLE_SYMBOL_VALUE = 9;
    /**
     * <code>ANONYMOUS_INIT_SYMBOL = 10;</code>
     */
    public static final int ANONYMOUS_INIT_SYMBOL_VALUE = 10;
    /**
     * <code>STANDALONE_FIELD_SYMBOL = 11;</code>
     *
     * <pre>
     * For fields without properties. WrappedFieldDescriptor, rather than WrappedPropertyDescriptor.
     * </pre>
     */
    public static final int STANDALONE_FIELD_SYMBOL_VALUE = 11;
    /**
     * <code>RECEIVER_PARAMETER_SYMBOL = 12;</code>
     *
     * <pre>
     * ReceiverParameterDescriptor rather than ValueParameterDescriptor.
     * </pre>
     */
    public static final int RECEIVER_PARAMETER_SYMBOL_VALUE = 12;
    /**
     * <code>PROPERTY_SYMBOL = 13;</code>
     */
    public static final int PROPERTY_SYMBOL_VALUE = 13;
    /**
     * <code>LOCAL_DELEGATED_PROPERTY_SYMBOL = 14;</code>
     */
    public static final int LOCAL_DELEGATED_PROPERTY_SYMBOL_VALUE = 14;


    public final int getNumber() { return value; }

    public static IrSymbolKind valueOf(int value) {
      switch (value) {
        case 1: return FUNCTION_SYMBOL;
        case 2: return CONSTRUCTOR_SYMBOL;
        case 3: return ENUM_ENTRY_SYMBOL;
        case 4: return FIELD_SYMBOL;
        case 5: return VALUE_PARAMETER_SYMBOL;
        case 6: return RETURNABLE_BLOCK_SYMBOL;
        case 7: return CLASS_SYMBOL;
        case 8: return TYPE_PARAMETER_SYMBOL;
        case 9: return VARIABLE_SYMBOL;
        case 10: return ANONYMOUS_INIT_SYMBOL;
        case 11: return STANDALONE_FIELD_SYMBOL;
        case 12: return RECEIVER_PARAMETER_SYMBOL;
        case 13: return PROPERTY_SYMBOL;
        case 14: return LOCAL_DELEGATED_PROPERTY_SYMBOL;
        default: return null;
      }
    }

    public static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<IrSymbolKind>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<IrSymbolKind>
        internalValueMap =
          new org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<IrSymbolKind>() {
            public IrSymbolKind findValueByNumber(int number) {
              return IrSymbolKind.valueOf(number);
            }
          };

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.backend.common.serialization.IrSymbolKind)
  }

  /**
   * Protobuf enum {@code org.jetbrains.kotlin.backend.common.serialization.IrTypeVariance}
   *
   * <pre>
   * Should we import metadata variance, or better stay separate?
   * </pre>
   */
  public enum IrTypeVariance
      implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
    /**
     * <code>IN = 0;</code>
     */
    IN(0, 0),
    /**
     * <code>OUT = 1;</code>
     */
    OUT(1, 1),
    /**
     * <code>INV = 2;</code>
     */
    INV(2, 2),
    ;

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


    public final int getNumber() { return value; }

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

    public static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<IrTypeVariance>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<IrTypeVariance>
        internalValueMap =
          new org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<IrTypeVariance>() {
            public IrTypeVariance findValueByNumber(int number) {
              return IrTypeVariance.valueOf(number);
            }
          };

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.backend.common.serialization.IrTypeVariance)
  }

  /**
   * Protobuf enum {@code org.jetbrains.kotlin.backend.common.serialization.IrTypeOperator}
   */
  public enum IrTypeOperator
      implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
    /**
     * <code>CAST = 1;</code>
     */
    CAST(0, 1),
    /**
     * <code>IMPLICIT_CAST = 2;</code>
     */
    IMPLICIT_CAST(1, 2),
    /**
     * <code>IMPLICIT_NOTNULL = 3;</code>
     */
    IMPLICIT_NOTNULL(2, 3),
    /**
     * <code>IMPLICIT_COERCION_TO_UNIT = 4;</code>
     */
    IMPLICIT_COERCION_TO_UNIT(3, 4),
    /**
     * <code>IMPLICIT_INTEGER_COERCION = 5;</code>
     */
    IMPLICIT_INTEGER_COERCION(4, 5),
    /**
     * <code>SAFE_CAST = 6;</code>
     */
    SAFE_CAST(5, 6),
    /**
     * <code>INSTANCEOF = 7;</code>
     */
    INSTANCEOF(6, 7),
    /**
     * <code>NOT_INSTANCEOF = 8;</code>
     */
    NOT_INSTANCEOF(7, 8),
    /**
     * <code>SAM_CONVERSION = 9;</code>
     */
    SAM_CONVERSION(8, 9),
    /**
     * <code>IMPLICIT_DYNAMIC_CAST = 10;</code>
     */
    IMPLICIT_DYNAMIC_CAST(9, 10),
    ;

    /**
     * <code>CAST = 1;</code>
     */
    public static final int CAST_VALUE = 1;
    /**
     * <code>IMPLICIT_CAST = 2;</code>
     */
    public static final int IMPLICIT_CAST_VALUE = 2;
    /**
     * <code>IMPLICIT_NOTNULL = 3;</code>
     */
    public static final int IMPLICIT_NOTNULL_VALUE = 3;
    /**
     * <code>IMPLICIT_COERCION_TO_UNIT = 4;</code>
     */
    public static final int IMPLICIT_COERCION_TO_UNIT_VALUE = 4;
    /**
     * <code>IMPLICIT_INTEGER_COERCION = 5;</code>
     */
    public static final int IMPLICIT_INTEGER_COERCION_VALUE = 5;
    /**
     * <code>SAFE_CAST = 6;</code>
     */
    public static final int SAFE_CAST_VALUE = 6;
    /**
     * <code>INSTANCEOF = 7;</code>
     */
    public static final int INSTANCEOF_VALUE = 7;
    /**
     * <code>NOT_INSTANCEOF = 8;</code>
     */
    public static final int NOT_INSTANCEOF_VALUE = 8;
    /**
     * <code>SAM_CONVERSION = 9;</code>
     */
    public static final int SAM_CONVERSION_VALUE = 9;
    /**
     * <code>IMPLICIT_DYNAMIC_CAST = 10;</code>
     */
    public static final int IMPLICIT_DYNAMIC_CAST_VALUE = 10;


    public final int getNumber() { return value; }

    public static IrTypeOperator valueOf(int value) {
      switch (value) {
        case 1: return CAST;
        case 2: return IMPLICIT_CAST;
        case 3: return IMPLICIT_NOTNULL;
        case 4: return IMPLICIT_COERCION_TO_UNIT;
        case 5: return IMPLICIT_INTEGER_COERCION;
        case 6: return SAFE_CAST;
        case 7: return INSTANCEOF;
        case 8: return NOT_INSTANCEOF;
        case 9: return SAM_CONVERSION;
        case 10: return IMPLICIT_DYNAMIC_CAST;
        default: return null;
      }
    }

    public static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<IrTypeOperator>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<IrTypeOperator>
        internalValueMap =
          new org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<IrTypeOperator>() {
            public IrTypeOperator findValueByNumber(int number) {
              return IrTypeOperator.valueOf(number);
            }
          };

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.backend.common.serialization.IrTypeOperator)
  }

  /**
   * Protobuf enum {@code org.jetbrains.kotlin.backend.common.serialization.ClassKind}
   */
  public enum ClassKind
      implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
    /**
     * <code>CLASS = 1;</code>
     */
    CLASS(0, 1),
    /**
     * <code>INTERFACE = 2;</code>
     */
    INTERFACE(1, 2),
    /**
     * <code>ENUM_CLASS = 3;</code>
     */
    ENUM_CLASS(2, 3),
    /**
     * <code>ENUM_ENTRY = 4;</code>
     */
    ENUM_ENTRY(3, 4),
    /**
     * <code>ANNOTATION_CLASS = 5;</code>
     */
    ANNOTATION_CLASS(4, 5),
    /**
     * <code>OBJECT = 6;</code>
     */
    OBJECT(5, 6),
    ;

    /**
     * <code>CLASS = 1;</code>
     */
    public static final int CLASS_VALUE = 1;
    /**
     * <code>INTERFACE = 2;</code>
     */
    public static final int INTERFACE_VALUE = 2;
    /**
     * <code>ENUM_CLASS = 3;</code>
     */
    public static final int ENUM_CLASS_VALUE = 3;
    /**
     * <code>ENUM_ENTRY = 4;</code>
     */
    public static final int ENUM_ENTRY_VALUE = 4;
    /**
     * <code>ANNOTATION_CLASS = 5;</code>
     */
    public static final int ANNOTATION_CLASS_VALUE = 5;
    /**
     * <code>OBJECT = 6;</code>
     */
    public static final int OBJECT_VALUE = 6;


    public final int getNumber() { return value; }

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

    public static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<ClassKind>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<ClassKind>
        internalValueMap =
          new org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<ClassKind>() {
            public ClassKind findValueByNumber(int number) {
              return ClassKind.valueOf(number);
            }
          };

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.backend.common.serialization.ClassKind)
  }

  /**
   * Protobuf enum {@code org.jetbrains.kotlin.backend.common.serialization.ModalityKind}
   *
   * <pre>
   * It is ModalityKind to not clash with Modality in descriptor metadata.
   * </pre>
   */
  public enum ModalityKind
      implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
    /**
     * <code>FINAL_MODALITY = 1;</code>
     */
    FINAL_MODALITY(0, 1),
    /**
     * <code>SEALED_MODALITY = 2;</code>
     */
    SEALED_MODALITY(1, 2),
    /**
     * <code>OPEN_MODALITY = 3;</code>
     */
    OPEN_MODALITY(2, 3),
    /**
     * <code>ABSTRACT_MODALITY = 4;</code>
     */
    ABSTRACT_MODALITY(3, 4),
    ;

    /**
     * <code>FINAL_MODALITY = 1;</code>
     */
    public static final int FINAL_MODALITY_VALUE = 1;
    /**
     * <code>SEALED_MODALITY = 2;</code>
     */
    public static final int SEALED_MODALITY_VALUE = 2;
    /**
     * <code>OPEN_MODALITY = 3;</code>
     */
    public static final int OPEN_MODALITY_VALUE = 3;
    /**
     * <code>ABSTRACT_MODALITY = 4;</code>
     */
    public static final int ABSTRACT_MODALITY_VALUE = 4;


    public final int getNumber() { return value; }

    public static ModalityKind valueOf(int value) {
      switch (value) {
        case 1: return FINAL_MODALITY;
        case 2: return SEALED_MODALITY;
        case 3: return OPEN_MODALITY;
        case 4: return ABSTRACT_MODALITY;
        default: return null;
      }
    }

    public static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<ModalityKind>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<ModalityKind>
        internalValueMap =
          new org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<ModalityKind>() {
            public ModalityKind findValueByNumber(int number) {
              return ModalityKind.valueOf(number);
            }
          };

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.backend.common.serialization.ModalityKind)
  }

  /**
   * Protobuf enum {@code org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBodyKind}
   */
  public enum IrSyntheticBodyKind
      implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
    /**
     * <code>ENUM_VALUES = 1;</code>
     */
    ENUM_VALUES(0, 1),
    /**
     * <code>ENUM_VALUEOF = 2;</code>
     */
    ENUM_VALUEOF(1, 2),
    ;

    /**
     * <code>ENUM_VALUES = 1;</code>
     */
    public static final int ENUM_VALUES_VALUE = 1;
    /**
     * <code>ENUM_VALUEOF = 2;</code>
     */
    public static final int ENUM_VALUEOF_VALUE = 2;


    public final int getNumber() { return value; }

    public static IrSyntheticBodyKind valueOf(int value) {
      switch (value) {
        case 1: return ENUM_VALUES;
        case 2: return ENUM_VALUEOF;
        default: return null;
      }
    }

    public static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<IrSyntheticBodyKind>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<IrSyntheticBodyKind>
        internalValueMap =
          new org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<IrSyntheticBodyKind>() {
            public IrSyntheticBodyKind findValueByNumber(int number) {
              return IrSyntheticBodyKind.valueOf(number);
            }
          };

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBodyKind)
  }

  public interface DescriptorReferenceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.DescriptorReference)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String package_fq_name = 1;</code>
     */
    boolean hasPackageFqName();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String package_fq_name = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getPackageFqName();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String class_fq_name = 2;</code>
     */
    boolean hasClassFqName();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String class_fq_name = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getClassFqName();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 3;</code>
     */
    boolean hasName();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.UniqId uniq_id = 4;</code>
     */
    boolean hasUniqId();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.UniqId uniq_id = 4;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId getUniqId();

    /**
     * <code>optional bool is_getter = 5 [default = false];</code>
     */
    boolean hasIsGetter();
    /**
     * <code>optional bool is_getter = 5 [default = false];</code>
     */
    boolean getIsGetter();

    /**
     * <code>optional bool is_setter = 6 [default = false];</code>
     */
    boolean hasIsSetter();
    /**
     * <code>optional bool is_setter = 6 [default = false];</code>
     */
    boolean getIsSetter();

    /**
     * <code>optional bool is_backing_field = 7 [default = false];</code>
     */
    boolean hasIsBackingField();
    /**
     * <code>optional bool is_backing_field = 7 [default = false];</code>
     */
    boolean getIsBackingField();

    /**
     * <code>optional bool is_fake_override = 8 [default = false];</code>
     */
    boolean hasIsFakeOverride();
    /**
     * <code>optional bool is_fake_override = 8 [default = false];</code>
     */
    boolean getIsFakeOverride();

    /**
     * <code>optional bool is_default_constructor = 9 [default = false];</code>
     */
    boolean hasIsDefaultConstructor();
    /**
     * <code>optional bool is_default_constructor = 9 [default = false];</code>
     */
    boolean getIsDefaultConstructor();

    /**
     * <code>optional bool is_enum_entry = 10 [default = false];</code>
     */
    boolean hasIsEnumEntry();
    /**
     * <code>optional bool is_enum_entry = 10 [default = false];</code>
     */
    boolean getIsEnumEntry();

    /**
     * <code>optional bool is_enum_special = 11 [default = false];</code>
     */
    boolean hasIsEnumSpecial();
    /**
     * <code>optional bool is_enum_special = 11 [default = false];</code>
     */
    boolean getIsEnumSpecial();

    /**
     * <code>optional bool is_type_parameter = 12 [default = false];</code>
     */
    boolean hasIsTypeParameter();
    /**
     * <code>optional bool is_type_parameter = 12 [default = false];</code>
     */
    boolean getIsTypeParameter();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.DescriptorReference}
   */
  public static final class DescriptorReference extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.DescriptorReference)
      DescriptorReferenceOrBuilder {
    // Use DescriptorReference.newBuilder() to construct.
    private DescriptorReference(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private DescriptorReference(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public DescriptorReference getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private DescriptorReference(
        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);
      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.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = packageFqName_.toBuilder();
              }
              packageFqName_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(packageFqName_);
                packageFqName_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = classFqName_.toBuilder();
              }
              classFqName_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(classFqName_);
                classFqName_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = name_.toBuilder();
              }
              name_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(name_);
                name_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 34: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = uniqId_.toBuilder();
              }
              uniqId_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(uniqId_);
                uniqId_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              isGetter_ = input.readBool();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              isSetter_ = input.readBool();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000040;
              isBackingField_ = input.readBool();
              break;
            }
            case 64: {
              bitField0_ |= 0x00000080;
              isFakeOverride_ = input.readBool();
              break;
            }
            case 72: {
              bitField0_ |= 0x00000100;
              isDefaultConstructor_ = input.readBool();
              break;
            }
            case 80: {
              bitField0_ |= 0x00000200;
              isEnumEntry_ = input.readBool();
              break;
            }
            case 88: {
              bitField0_ |= 0x00000400;
              isEnumSpecial_ = input.readBool();
              break;
            }
            case 96: {
              bitField0_ |= 0x00000800;
              isTypeParameter_ = input.readBool();
              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<DescriptorReference> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<DescriptorReference>() {
      public DescriptorReference parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new DescriptorReference(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int PACKAGE_FQ_NAME_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String packageFqName_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String package_fq_name = 1;</code>
     */
    public boolean hasPackageFqName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String package_fq_name = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getPackageFqName() {
      return packageFqName_;
    }

    public static final int CLASS_FQ_NAME_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String classFqName_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String class_fq_name = 2;</code>
     */
    public boolean hasClassFqName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String class_fq_name = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getClassFqName() {
      return classFqName_;
    }

    public static final int NAME_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 3;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
      return name_;
    }

    public static final int UNIQ_ID_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId uniqId_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.UniqId uniq_id = 4;</code>
     */
    public boolean hasUniqId() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.UniqId uniq_id = 4;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId getUniqId() {
      return uniqId_;
    }

    public static final int IS_GETTER_FIELD_NUMBER = 5;
    private boolean isGetter_;
    /**
     * <code>optional bool is_getter = 5 [default = false];</code>
     */
    public boolean hasIsGetter() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional bool is_getter = 5 [default = false];</code>
     */
    public boolean getIsGetter() {
      return isGetter_;
    }

    public static final int IS_SETTER_FIELD_NUMBER = 6;
    private boolean isSetter_;
    /**
     * <code>optional bool is_setter = 6 [default = false];</code>
     */
    public boolean hasIsSetter() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional bool is_setter = 6 [default = false];</code>
     */
    public boolean getIsSetter() {
      return isSetter_;
    }

    public static final int IS_BACKING_FIELD_FIELD_NUMBER = 7;
    private boolean isBackingField_;
    /**
     * <code>optional bool is_backing_field = 7 [default = false];</code>
     */
    public boolean hasIsBackingField() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional bool is_backing_field = 7 [default = false];</code>
     */
    public boolean getIsBackingField() {
      return isBackingField_;
    }

    public static final int IS_FAKE_OVERRIDE_FIELD_NUMBER = 8;
    private boolean isFakeOverride_;
    /**
     * <code>optional bool is_fake_override = 8 [default = false];</code>
     */
    public boolean hasIsFakeOverride() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>optional bool is_fake_override = 8 [default = false];</code>
     */
    public boolean getIsFakeOverride() {
      return isFakeOverride_;
    }

    public static final int IS_DEFAULT_CONSTRUCTOR_FIELD_NUMBER = 9;
    private boolean isDefaultConstructor_;
    /**
     * <code>optional bool is_default_constructor = 9 [default = false];</code>
     */
    public boolean hasIsDefaultConstructor() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * <code>optional bool is_default_constructor = 9 [default = false];</code>
     */
    public boolean getIsDefaultConstructor() {
      return isDefaultConstructor_;
    }

    public static final int IS_ENUM_ENTRY_FIELD_NUMBER = 10;
    private boolean isEnumEntry_;
    /**
     * <code>optional bool is_enum_entry = 10 [default = false];</code>
     */
    public boolean hasIsEnumEntry() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    /**
     * <code>optional bool is_enum_entry = 10 [default = false];</code>
     */
    public boolean getIsEnumEntry() {
      return isEnumEntry_;
    }

    public static final int IS_ENUM_SPECIAL_FIELD_NUMBER = 11;
    private boolean isEnumSpecial_;
    /**
     * <code>optional bool is_enum_special = 11 [default = false];</code>
     */
    public boolean hasIsEnumSpecial() {
      return ((bitField0_ & 0x00000400) == 0x00000400);
    }
    /**
     * <code>optional bool is_enum_special = 11 [default = false];</code>
     */
    public boolean getIsEnumSpecial() {
      return isEnumSpecial_;
    }

    public static final int IS_TYPE_PARAMETER_FIELD_NUMBER = 12;
    private boolean isTypeParameter_;
    /**
     * <code>optional bool is_type_parameter = 12 [default = false];</code>
     */
    public boolean hasIsTypeParameter() {
      return ((bitField0_ & 0x00000800) == 0x00000800);
    }
    /**
     * <code>optional bool is_type_parameter = 12 [default = false];</code>
     */
    public boolean getIsTypeParameter() {
      return isTypeParameter_;
    }

    private void initFields() {
      packageFqName_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      classFqName_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      uniqId_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.getDefaultInstance();
      isGetter_ = false;
      isSetter_ = false;
      isBackingField_ = false;
      isFakeOverride_ = false;
      isDefaultConstructor_ = false;
      isEnumEntry_ = false;
      isEnumSpecial_ = false;
      isTypeParameter_ = false;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasPackageFqName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasClassFqName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getPackageFqName().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getClassFqName().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getName().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasUniqId()) {
        if (!getUniqId().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, packageFqName_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, classFqName_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, name_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, uniqId_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBool(5, isGetter_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBool(6, isSetter_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBool(7, isBackingField_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeBool(8, isFakeOverride_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeBool(9, isDefaultConstructor_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeBool(10, isEnumEntry_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        output.writeBool(11, isEnumSpecial_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        output.writeBool(12, isTypeParameter_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, packageFqName_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, classFqName_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, name_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, uniqId_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(5, isGetter_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(6, isSetter_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(7, isBackingField_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(8, isFakeOverride_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(9, isDefaultConstructor_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(10, isEnumEntry_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(11, isEnumSpecial_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(12, isTypeParameter_);
      }
      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.common.serialization.KotlinIr.DescriptorReference parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference 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.common.serialization.KotlinIr.DescriptorReference parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference 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.common.serialization.KotlinIr.DescriptorReference parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference 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.common.serialization.KotlinIr.DescriptorReference parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference 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.common.serialization.KotlinIr.DescriptorReference parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference 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.common.serialization.KotlinIr.DescriptorReference prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        packageFqName_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        classFqName_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        uniqId_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        isGetter_ = false;
        bitField0_ = (bitField0_ & ~0x00000010);
        isSetter_ = false;
        bitField0_ = (bitField0_ & ~0x00000020);
        isBackingField_ = false;
        bitField0_ = (bitField0_ & ~0x00000040);
        isFakeOverride_ = false;
        bitField0_ = (bitField0_ & ~0x00000080);
        isDefaultConstructor_ = false;
        bitField0_ = (bitField0_ & ~0x00000100);
        isEnumEntry_ = false;
        bitField0_ = (bitField0_ & ~0x00000200);
        isEnumSpecial_ = false;
        bitField0_ = (bitField0_ & ~0x00000400);
        isTypeParameter_ = false;
        bitField0_ = (bitField0_ & ~0x00000800);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.packageFqName_ = packageFqName_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.classFqName_ = classFqName_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.uniqId_ = uniqId_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.isGetter_ = isGetter_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.isSetter_ = isSetter_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.isBackingField_ = isBackingField_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.isFakeOverride_ = isFakeOverride_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000100;
        }
        result.isDefaultConstructor_ = isDefaultConstructor_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000200;
        }
        result.isEnumEntry_ = isEnumEntry_;
        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
          to_bitField0_ |= 0x00000400;
        }
        result.isEnumSpecial_ = isEnumSpecial_;
        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
          to_bitField0_ |= 0x00000800;
        }
        result.isTypeParameter_ = isTypeParameter_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference.getDefaultInstance()) return this;
        if (other.hasPackageFqName()) {
          mergePackageFqName(other.getPackageFqName());
        }
        if (other.hasClassFqName()) {
          mergeClassFqName(other.getClassFqName());
        }
        if (other.hasName()) {
          mergeName(other.getName());
        }
        if (other.hasUniqId()) {
          mergeUniqId(other.getUniqId());
        }
        if (other.hasIsGetter()) {
          setIsGetter(other.getIsGetter());
        }
        if (other.hasIsSetter()) {
          setIsSetter(other.getIsSetter());
        }
        if (other.hasIsBackingField()) {
          setIsBackingField(other.getIsBackingField());
        }
        if (other.hasIsFakeOverride()) {
          setIsFakeOverride(other.getIsFakeOverride());
        }
        if (other.hasIsDefaultConstructor()) {
          setIsDefaultConstructor(other.getIsDefaultConstructor());
        }
        if (other.hasIsEnumEntry()) {
          setIsEnumEntry(other.getIsEnumEntry());
        }
        if (other.hasIsEnumSpecial()) {
          setIsEnumSpecial(other.getIsEnumSpecial());
        }
        if (other.hasIsTypeParameter()) {
          setIsTypeParameter(other.getIsTypeParameter());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasPackageFqName()) {
          
          return false;
        }
        if (!hasClassFqName()) {
          
          return false;
        }
        if (!hasName()) {
          
          return false;
        }
        if (!getPackageFqName().isInitialized()) {
          
          return false;
        }
        if (!getClassFqName().isInitialized()) {
          
          return false;
        }
        if (!getName().isInitialized()) {
          
          return false;
        }
        if (hasUniqId()) {
          if (!getUniqId().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.common.serialization.KotlinIr.DescriptorReference parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String packageFqName_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String package_fq_name = 1;</code>
       */
      public boolean hasPackageFqName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String package_fq_name = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getPackageFqName() {
        return packageFqName_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String package_fq_name = 1;</code>
       */
      public Builder setPackageFqName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        packageFqName_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String package_fq_name = 1;</code>
       */
      public Builder setPackageFqName(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        packageFqName_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String package_fq_name = 1;</code>
       */
      public Builder mergePackageFqName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            packageFqName_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          packageFqName_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(packageFqName_).mergeFrom(value).buildPartial();
        } else {
          packageFqName_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String package_fq_name = 1;</code>
       */
      public Builder clearPackageFqName() {
        packageFqName_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String classFqName_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String class_fq_name = 2;</code>
       */
      public boolean hasClassFqName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String class_fq_name = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getClassFqName() {
        return classFqName_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String class_fq_name = 2;</code>
       */
      public Builder setClassFqName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        classFqName_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String class_fq_name = 2;</code>
       */
      public Builder setClassFqName(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        classFqName_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String class_fq_name = 2;</code>
       */
      public Builder mergeClassFqName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            classFqName_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          classFqName_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(classFqName_).mergeFrom(value).buildPartial();
        } else {
          classFqName_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String class_fq_name = 2;</code>
       */
      public Builder clearClassFqName() {
        classFqName_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 3;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
        return name_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 3;</code>
       */
      public Builder setName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        name_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 3;</code>
       */
      public Builder setName(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        name_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 3;</code>
       */
      public Builder mergeName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            name_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          name_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(name_).mergeFrom(value).buildPartial();
        } else {
          name_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 3;</code>
       */
      public Builder clearName() {
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId uniqId_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.UniqId uniq_id = 4;</code>
       */
      public boolean hasUniqId() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.UniqId uniq_id = 4;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId getUniqId() {
        return uniqId_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.UniqId uniq_id = 4;</code>
       */
      public Builder setUniqId(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId value) {
        if (value == null) {
          throw new NullPointerException();
        }
        uniqId_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.UniqId uniq_id = 4;</code>
       */
      public Builder setUniqId(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.Builder builderForValue) {
        uniqId_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.UniqId uniq_id = 4;</code>
       */
      public Builder mergeUniqId(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            uniqId_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.getDefaultInstance()) {
          uniqId_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.newBuilder(uniqId_).mergeFrom(value).buildPartial();
        } else {
          uniqId_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.UniqId uniq_id = 4;</code>
       */
      public Builder clearUniqId() {
        uniqId_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.getDefaultInstance();

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

      private boolean isGetter_ ;
      /**
       * <code>optional bool is_getter = 5 [default = false];</code>
       */
      public boolean hasIsGetter() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional bool is_getter = 5 [default = false];</code>
       */
      public boolean getIsGetter() {
        return isGetter_;
      }
      /**
       * <code>optional bool is_getter = 5 [default = false];</code>
       */
      public Builder setIsGetter(boolean value) {
        bitField0_ |= 0x00000010;
        isGetter_ = value;
        
        return this;
      }
      /**
       * <code>optional bool is_getter = 5 [default = false];</code>
       */
      public Builder clearIsGetter() {
        bitField0_ = (bitField0_ & ~0x00000010);
        isGetter_ = false;
        
        return this;
      }

      private boolean isSetter_ ;
      /**
       * <code>optional bool is_setter = 6 [default = false];</code>
       */
      public boolean hasIsSetter() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional bool is_setter = 6 [default = false];</code>
       */
      public boolean getIsSetter() {
        return isSetter_;
      }
      /**
       * <code>optional bool is_setter = 6 [default = false];</code>
       */
      public Builder setIsSetter(boolean value) {
        bitField0_ |= 0x00000020;
        isSetter_ = value;
        
        return this;
      }
      /**
       * <code>optional bool is_setter = 6 [default = false];</code>
       */
      public Builder clearIsSetter() {
        bitField0_ = (bitField0_ & ~0x00000020);
        isSetter_ = false;
        
        return this;
      }

      private boolean isBackingField_ ;
      /**
       * <code>optional bool is_backing_field = 7 [default = false];</code>
       */
      public boolean hasIsBackingField() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional bool is_backing_field = 7 [default = false];</code>
       */
      public boolean getIsBackingField() {
        return isBackingField_;
      }
      /**
       * <code>optional bool is_backing_field = 7 [default = false];</code>
       */
      public Builder setIsBackingField(boolean value) {
        bitField0_ |= 0x00000040;
        isBackingField_ = value;
        
        return this;
      }
      /**
       * <code>optional bool is_backing_field = 7 [default = false];</code>
       */
      public Builder clearIsBackingField() {
        bitField0_ = (bitField0_ & ~0x00000040);
        isBackingField_ = false;
        
        return this;
      }

      private boolean isFakeOverride_ ;
      /**
       * <code>optional bool is_fake_override = 8 [default = false];</code>
       */
      public boolean hasIsFakeOverride() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional bool is_fake_override = 8 [default = false];</code>
       */
      public boolean getIsFakeOverride() {
        return isFakeOverride_;
      }
      /**
       * <code>optional bool is_fake_override = 8 [default = false];</code>
       */
      public Builder setIsFakeOverride(boolean value) {
        bitField0_ |= 0x00000080;
        isFakeOverride_ = value;
        
        return this;
      }
      /**
       * <code>optional bool is_fake_override = 8 [default = false];</code>
       */
      public Builder clearIsFakeOverride() {
        bitField0_ = (bitField0_ & ~0x00000080);
        isFakeOverride_ = false;
        
        return this;
      }

      private boolean isDefaultConstructor_ ;
      /**
       * <code>optional bool is_default_constructor = 9 [default = false];</code>
       */
      public boolean hasIsDefaultConstructor() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>optional bool is_default_constructor = 9 [default = false];</code>
       */
      public boolean getIsDefaultConstructor() {
        return isDefaultConstructor_;
      }
      /**
       * <code>optional bool is_default_constructor = 9 [default = false];</code>
       */
      public Builder setIsDefaultConstructor(boolean value) {
        bitField0_ |= 0x00000100;
        isDefaultConstructor_ = value;
        
        return this;
      }
      /**
       * <code>optional bool is_default_constructor = 9 [default = false];</code>
       */
      public Builder clearIsDefaultConstructor() {
        bitField0_ = (bitField0_ & ~0x00000100);
        isDefaultConstructor_ = false;
        
        return this;
      }

      private boolean isEnumEntry_ ;
      /**
       * <code>optional bool is_enum_entry = 10 [default = false];</code>
       */
      public boolean hasIsEnumEntry() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <code>optional bool is_enum_entry = 10 [default = false];</code>
       */
      public boolean getIsEnumEntry() {
        return isEnumEntry_;
      }
      /**
       * <code>optional bool is_enum_entry = 10 [default = false];</code>
       */
      public Builder setIsEnumEntry(boolean value) {
        bitField0_ |= 0x00000200;
        isEnumEntry_ = value;
        
        return this;
      }
      /**
       * <code>optional bool is_enum_entry = 10 [default = false];</code>
       */
      public Builder clearIsEnumEntry() {
        bitField0_ = (bitField0_ & ~0x00000200);
        isEnumEntry_ = false;
        
        return this;
      }

      private boolean isEnumSpecial_ ;
      /**
       * <code>optional bool is_enum_special = 11 [default = false];</code>
       */
      public boolean hasIsEnumSpecial() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * <code>optional bool is_enum_special = 11 [default = false];</code>
       */
      public boolean getIsEnumSpecial() {
        return isEnumSpecial_;
      }
      /**
       * <code>optional bool is_enum_special = 11 [default = false];</code>
       */
      public Builder setIsEnumSpecial(boolean value) {
        bitField0_ |= 0x00000400;
        isEnumSpecial_ = value;
        
        return this;
      }
      /**
       * <code>optional bool is_enum_special = 11 [default = false];</code>
       */
      public Builder clearIsEnumSpecial() {
        bitField0_ = (bitField0_ & ~0x00000400);
        isEnumSpecial_ = false;
        
        return this;
      }

      private boolean isTypeParameter_ ;
      /**
       * <code>optional bool is_type_parameter = 12 [default = false];</code>
       */
      public boolean hasIsTypeParameter() {
        return ((bitField0_ & 0x00000800) == 0x00000800);
      }
      /**
       * <code>optional bool is_type_parameter = 12 [default = false];</code>
       */
      public boolean getIsTypeParameter() {
        return isTypeParameter_;
      }
      /**
       * <code>optional bool is_type_parameter = 12 [default = false];</code>
       */
      public Builder setIsTypeParameter(boolean value) {
        bitField0_ |= 0x00000800;
        isTypeParameter_ = value;
        
        return this;
      }
      /**
       * <code>optional bool is_type_parameter = 12 [default = false];</code>
       */
      public Builder clearIsTypeParameter() {
        bitField0_ = (bitField0_ & ~0x00000800);
        isTypeParameter_ = false;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.DescriptorReference)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.DescriptorReference)
  }

  public interface UniqIdOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.UniqId)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required uint64 index = 1;</code>
     */
    boolean hasIndex();
    /**
     * <code>required uint64 index = 1;</code>
     */
    long getIndex();

    /**
     * <code>required bool isLocal = 2;</code>
     */
    boolean hasIsLocal();
    /**
     * <code>required bool isLocal = 2;</code>
     */
    boolean getIsLocal();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.UniqId}
   */
  public static final class UniqId extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.UniqId)
      UniqIdOrBuilder {
    // Use UniqId.newBuilder() to construct.
    private UniqId(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private UniqId(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public UniqId getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private UniqId(
        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);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              index_ = input.readUInt64();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              isLocal_ = input.readBool();
              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<UniqId> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<UniqId>() {
      public UniqId parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new UniqId(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int INDEX_FIELD_NUMBER = 1;
    private long index_;
    /**
     * <code>required uint64 index = 1;</code>
     */
    public boolean hasIndex() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required uint64 index = 1;</code>
     */
    public long getIndex() {
      return index_;
    }

    public static final int ISLOCAL_FIELD_NUMBER = 2;
    private boolean isLocal_;
    /**
     * <code>required bool isLocal = 2;</code>
     */
    public boolean hasIsLocal() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required bool isLocal = 2;</code>
     */
    public boolean getIsLocal() {
      return isLocal_;
    }

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

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt64(1, index_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBool(2, isLocal_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeUInt64Size(1, index_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(2, isLocal_);
      }
      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.common.serialization.KotlinIr.UniqId parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId 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.common.serialization.KotlinIr.UniqId parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId 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.common.serialization.KotlinIr.UniqId parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId 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.common.serialization.KotlinIr.UniqId parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId 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.common.serialization.KotlinIr.UniqId parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId 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.common.serialization.KotlinIr.UniqId prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        index_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        isLocal_ = false;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.index_ = index_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.isLocal_ = isLocal_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.getDefaultInstance()) return this;
        if (other.hasIndex()) {
          setIndex(other.getIndex());
        }
        if (other.hasIsLocal()) {
          setIsLocal(other.getIsLocal());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasIndex()) {
          
          return false;
        }
        if (!hasIsLocal()) {
          
          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.common.serialization.KotlinIr.UniqId parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long index_ ;
      /**
       * <code>required uint64 index = 1;</code>
       */
      public boolean hasIndex() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required uint64 index = 1;</code>
       */
      public long getIndex() {
        return index_;
      }
      /**
       * <code>required uint64 index = 1;</code>
       */
      public Builder setIndex(long value) {
        bitField0_ |= 0x00000001;
        index_ = value;
        
        return this;
      }
      /**
       * <code>required uint64 index = 1;</code>
       */
      public Builder clearIndex() {
        bitField0_ = (bitField0_ & ~0x00000001);
        index_ = 0L;
        
        return this;
      }

      private boolean isLocal_ ;
      /**
       * <code>required bool isLocal = 2;</code>
       */
      public boolean hasIsLocal() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required bool isLocal = 2;</code>
       */
      public boolean getIsLocal() {
        return isLocal_;
      }
      /**
       * <code>required bool isLocal = 2;</code>
       */
      public Builder setIsLocal(boolean value) {
        bitField0_ |= 0x00000002;
        isLocal_ = value;
        
        return this;
      }
      /**
       * <code>required bool isLocal = 2;</code>
       */
      public Builder clearIsLocal() {
        bitField0_ = (bitField0_ & ~0x00000002);
        isLocal_ = false;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.UniqId)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.UniqId)
  }

  public interface CoordinatesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.Coordinates)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required int32 start_offset = 1;</code>
     */
    boolean hasStartOffset();
    /**
     * <code>required int32 start_offset = 1;</code>
     */
    int getStartOffset();

    /**
     * <code>required int32 end_offset = 2;</code>
     */
    boolean hasEndOffset();
    /**
     * <code>required int32 end_offset = 2;</code>
     */
    int getEndOffset();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.Coordinates}
   */
  public static final class Coordinates extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.Coordinates)
      CoordinatesOrBuilder {
    // Use Coordinates.newBuilder() to construct.
    private Coordinates(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Coordinates(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Coordinates getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Coordinates(
        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);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              startOffset_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              endOffset_ = input.readInt32();
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Coordinates> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Coordinates>() {
      public Coordinates parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Coordinates(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int START_OFFSET_FIELD_NUMBER = 1;
    private int startOffset_;
    /**
     * <code>required int32 start_offset = 1;</code>
     */
    public boolean hasStartOffset() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 start_offset = 1;</code>
     */
    public int getStartOffset() {
      return startOffset_;
    }

    public static final int END_OFFSET_FIELD_NUMBER = 2;
    private int endOffset_;
    /**
     * <code>required int32 end_offset = 2;</code>
     */
    public boolean hasEndOffset() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 end_offset = 2;</code>
     */
    public int getEndOffset() {
      return endOffset_;
    }

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

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, startOffset_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, endOffset_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, startOffset_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(2, endOffset_);
      }
      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.common.serialization.KotlinIr.Coordinates parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates 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.common.serialization.KotlinIr.Coordinates parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates 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.common.serialization.KotlinIr.Coordinates parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates 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.common.serialization.KotlinIr.Coordinates parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates 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.common.serialization.KotlinIr.Coordinates parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates 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.common.serialization.KotlinIr.Coordinates prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        startOffset_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        endOffset_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.startOffset_ = startOffset_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.endOffset_ = endOffset_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance()) return this;
        if (other.hasStartOffset()) {
          setStartOffset(other.getStartOffset());
        }
        if (other.hasEndOffset()) {
          setEndOffset(other.getEndOffset());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasStartOffset()) {
          
          return false;
        }
        if (!hasEndOffset()) {
          
          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.common.serialization.KotlinIr.Coordinates parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int startOffset_ ;
      /**
       * <code>required int32 start_offset = 1;</code>
       */
      public boolean hasStartOffset() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 start_offset = 1;</code>
       */
      public int getStartOffset() {
        return startOffset_;
      }
      /**
       * <code>required int32 start_offset = 1;</code>
       */
      public Builder setStartOffset(int value) {
        bitField0_ |= 0x00000001;
        startOffset_ = value;
        
        return this;
      }
      /**
       * <code>required int32 start_offset = 1;</code>
       */
      public Builder clearStartOffset() {
        bitField0_ = (bitField0_ & ~0x00000001);
        startOffset_ = 0;
        
        return this;
      }

      private int endOffset_ ;
      /**
       * <code>required int32 end_offset = 2;</code>
       */
      public boolean hasEndOffset() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 end_offset = 2;</code>
       */
      public int getEndOffset() {
        return endOffset_;
      }
      /**
       * <code>required int32 end_offset = 2;</code>
       */
      public Builder setEndOffset(int value) {
        bitField0_ |= 0x00000002;
        endOffset_ = value;
        
        return this;
      }
      /**
       * <code>required int32 end_offset = 2;</code>
       */
      public Builder clearEndOffset() {
        bitField0_ = (bitField0_ & ~0x00000002);
        endOffset_ = 0;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.Coordinates)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.Coordinates)
  }

  public interface VisibilityOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.Visibility)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
     */
    boolean hasName();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.Visibility}
   */
  public static final class Visibility extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.Visibility)
      VisibilityOrBuilder {
    // Use Visibility.newBuilder() to construct.
    private Visibility(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Visibility(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Visibility getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Visibility(
        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);
      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.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = name_.toBuilder();
              }
              name_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(name_);
                name_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              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<Visibility> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Visibility>() {
      public Visibility parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Visibility(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
      return name_;
    }

    private void initFields() {
      name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, name_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, name_);
      }
      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.common.serialization.KotlinIr.Visibility parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility 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.common.serialization.KotlinIr.Visibility parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility 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.common.serialization.KotlinIr.Visibility parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility 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.common.serialization.KotlinIr.Visibility parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility 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.common.serialization.KotlinIr.Visibility parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility 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.common.serialization.KotlinIr.Visibility prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance()) return this;
        if (other.hasName()) {
          mergeName(other.getName());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasName()) {
          
          return false;
        }
        if (!getName().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.common.serialization.KotlinIr.Visibility parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
        return name_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public Builder setName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        name_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public Builder setName(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        name_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public Builder mergeName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            name_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          name_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(name_).mergeFrom(value).buildPartial();
        } else {
          name_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public Builder clearName() {
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.Visibility)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.Visibility)
  }

  public interface IrStatementOriginOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
     */
    boolean hasName();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin}
   */
  public static final class IrStatementOrigin extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin)
      IrStatementOriginOrBuilder {
    // Use IrStatementOrigin.newBuilder() to construct.
    private IrStatementOrigin(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrStatementOrigin(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrStatementOrigin getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrStatementOrigin(
        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);
      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.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = name_.toBuilder();
              }
              name_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(name_);
                name_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              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<IrStatementOrigin> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrStatementOrigin>() {
      public IrStatementOrigin parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrStatementOrigin(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
      return name_;
    }

    private void initFields() {
      name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, name_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, name_);
      }
      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.common.serialization.KotlinIr.IrStatementOrigin parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin 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.common.serialization.KotlinIr.IrStatementOrigin parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin 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.common.serialization.KotlinIr.IrStatementOrigin parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin 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.common.serialization.KotlinIr.IrStatementOrigin parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin 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.common.serialization.KotlinIr.IrStatementOrigin parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin 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.common.serialization.KotlinIr.IrStatementOrigin prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance()) return this;
        if (other.hasName()) {
          mergeName(other.getName());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasName()) {
          
          return false;
        }
        if (!getName().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.common.serialization.KotlinIr.IrStatementOrigin parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
        return name_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public Builder setName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        name_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public Builder setName(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        name_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public Builder mergeName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            name_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          name_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(name_).mergeFrom(value).buildPartial();
        } else {
          name_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public Builder clearName() {
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin)
  }

  public interface IrDeclarationOriginOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrDeclarationOrigin)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.KnownOrigin origin = 1;</code>
     */
    boolean hasOrigin();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.KnownOrigin origin = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.KnownOrigin getOrigin();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String custom = 2;</code>
     */
    boolean hasCustom();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String custom = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getCustom();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrDeclarationOrigin}
   */
  public static final class IrDeclarationOrigin extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrDeclarationOrigin)
      IrDeclarationOriginOrBuilder {
    // Use IrDeclarationOrigin.newBuilder() to construct.
    private IrDeclarationOrigin(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrDeclarationOrigin(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrDeclarationOrigin getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrDeclarationOrigin(
        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);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.KnownOrigin value = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.KnownOrigin.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                eitherCase_ = 1;
                either_ = value;
              }
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder subBuilder = null;
              if (eitherCase_ == 2) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String) either_).toBuilder();
              }
              either_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String) either_);
                either_ = subBuilder.buildPartial();
              }
              eitherCase_ = 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<IrDeclarationOrigin> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrDeclarationOrigin>() {
      public IrDeclarationOrigin parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrDeclarationOrigin(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    private int eitherCase_ = 0;
    private java.lang.Object either_;
    public enum EitherCase
        implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
      ORIGIN(1),
      CUSTOM(2),
      EITHER_NOT_SET(0);
      private int value = 0;
      private EitherCase(int value) {
        this.value = value;
      }
      public static EitherCase valueOf(int value) {
        switch (value) {
          case 1: return ORIGIN;
          case 2: return CUSTOM;
          case 0: return EITHER_NOT_SET;
          default: throw new java.lang.IllegalArgumentException(
            "Value is undefined for this oneof enum.");
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public EitherCase
    getEitherCase() {
      return EitherCase.valueOf(
          eitherCase_);
    }

    public static final int ORIGIN_FIELD_NUMBER = 1;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.KnownOrigin origin = 1;</code>
     */
    public boolean hasOrigin() {
      return eitherCase_ == 1;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.KnownOrigin origin = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.KnownOrigin getOrigin() {
      if (eitherCase_ == 1) {
        return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.KnownOrigin) either_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.KnownOrigin.CUSTOM;
    }

    public static final int CUSTOM_FIELD_NUMBER = 2;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String custom = 2;</code>
     */
    public boolean hasCustom() {
      return eitherCase_ == 2;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String custom = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getCustom() {
      if (eitherCase_ == 2) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String) either_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.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 (hasCustom()) {
        if (!getCustom().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (eitherCase_ == 1) {
        output.writeEnum(1, ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.KnownOrigin) either_).getNumber());
      }
      if (eitherCase_ == 2) {
        output.writeMessage(2, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String) either_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (eitherCase_ == 1) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(1, ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.KnownOrigin) either_).getNumber());
      }
      if (eitherCase_ == 2) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String) either_);
      }
      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.common.serialization.KotlinIr.IrDeclarationOrigin parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin 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.common.serialization.KotlinIr.IrDeclarationOrigin parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin 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.common.serialization.KotlinIr.IrDeclarationOrigin parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin 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.common.serialization.KotlinIr.IrDeclarationOrigin parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin 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.common.serialization.KotlinIr.IrDeclarationOrigin parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin 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.common.serialization.KotlinIr.IrDeclarationOrigin prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        eitherCase_ = 0;
        either_ = null;
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (eitherCase_ == 1) {
          result.either_ = either_;
        }
        if (eitherCase_ == 2) {
          result.either_ = either_;
        }
        result.bitField0_ = to_bitField0_;
        result.eitherCase_ = eitherCase_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin.getDefaultInstance()) return this;
        switch (other.getEitherCase()) {
          case ORIGIN: {
            setOrigin(other.getOrigin());
            break;
          }
          case CUSTOM: {
            mergeCustom(other.getCustom());
            break;
          }
          case EITHER_NOT_SET: {
            break;
          }
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (hasCustom()) {
          if (!getCustom().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.common.serialization.KotlinIr.IrDeclarationOrigin parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int eitherCase_ = 0;
      private java.lang.Object either_;
      public EitherCase
          getEitherCase() {
        return EitherCase.valueOf(
            eitherCase_);
      }

      public Builder clearEither() {
        eitherCase_ = 0;
        either_ = null;
        return this;
      }

      private int bitField0_;

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.KnownOrigin origin = 1;</code>
       */
      public boolean hasOrigin() {
        return eitherCase_ == 1;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.KnownOrigin origin = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.KnownOrigin getOrigin() {
        if (eitherCase_ == 1) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.KnownOrigin) either_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.KnownOrigin.CUSTOM;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.KnownOrigin origin = 1;</code>
       */
      public Builder setOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.KnownOrigin value) {
        if (value == null) {
          throw new NullPointerException();
        }
        eitherCase_ = 1;
        either_ = value;
        
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.KnownOrigin origin = 1;</code>
       */
      public Builder clearOrigin() {
        if (eitherCase_ == 1) {
          eitherCase_ = 0;
          either_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String custom = 2;</code>
       */
      public boolean hasCustom() {
        return eitherCase_ == 2;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String custom = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getCustom() {
        if (eitherCase_ == 2) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String) either_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String custom = 2;</code>
       */
      public Builder setCustom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        either_ = value;

        eitherCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String custom = 2;</code>
       */
      public Builder setCustom(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        either_ = builderForValue.build();

        eitherCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String custom = 2;</code>
       */
      public Builder mergeCustom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (eitherCase_ == 2 &&
            either_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          either_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String) either_)
              .mergeFrom(value).buildPartial();
        } else {
          either_ = value;
        }

        eitherCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String custom = 2;</code>
       */
      public Builder clearCustom() {
        if (eitherCase_ == 2) {
          eitherCase_ = 0;
          either_ = null;
          
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrDeclarationOrigin)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrDeclarationOrigin)
  }

  public interface IrDeclarationContainerOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrDeclarationContainer)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrDeclaration declaration = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration> 
        getDeclarationList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrDeclaration declaration = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration getDeclaration(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrDeclaration declaration = 1;</code>
     */
    int getDeclarationCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrDeclarationContainer}
   */
  public static final class IrDeclarationContainer extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrDeclarationContainer)
      IrDeclarationContainerOrBuilder {
    // Use IrDeclarationContainer.newBuilder() to construct.
    private IrDeclarationContainer(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrDeclarationContainer(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrDeclarationContainer getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrDeclarationContainer(
        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);
      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.KotlinIr.IrDeclaration>();
                mutable_bitField0_ |= 0x00000001;
              }
              declaration_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration.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_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrDeclarationContainer> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrDeclarationContainer>() {
      public IrDeclarationContainer parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrDeclarationContainer(input, extensionRegistry);
      }
    };

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

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

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

      for (int i = 0; i < getDeclarationCount(); i++) {
        if (!getDeclaration(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));
      }
      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));
      }
      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.common.serialization.KotlinIr.IrDeclarationContainer parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer 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.common.serialization.KotlinIr.IrDeclarationContainer parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer 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.common.serialization.KotlinIr.IrDeclarationContainer parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer 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.common.serialization.KotlinIr.IrDeclarationContainer parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer 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.common.serialization.KotlinIr.IrDeclarationContainer parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer 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.common.serialization.KotlinIr.IrDeclarationContainer prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrDeclarationContainer}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.backend.common.serialization.IrDeclarationContainer)
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainerOrBuilder {
      // Construct using org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer.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);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          declaration_ = java.util.Collections.unmodifiableList(declaration_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.declaration_ = declaration_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer.getDefaultInstance()) return this;
        if (!other.declaration_.isEmpty()) {
          if (declaration_.isEmpty()) {
            declaration_ = other.declaration_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureDeclarationIsMutable();
            declaration_.addAll(other.declaration_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getDeclarationCount(); i++) {
          if (!getDeclaration(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.common.serialization.KotlinIr.IrDeclarationContainer parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer) 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.KotlinIr.IrDeclaration> declaration_ =
        java.util.Collections.emptyList();
      private void ensureDeclarationIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          declaration_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration>(declaration_);
          bitField0_ |= 0x00000001;
         }
      }

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

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

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

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

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

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

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

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

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrDeclarationContainer)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrDeclarationContainer)
  }

  public interface FileEntryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.FileEntry)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
     */
    boolean hasName();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName();

    /**
     * <code>repeated int32 line_start_offsets = 2;</code>
     */
    java.util.List<java.lang.Integer> getLineStartOffsetsList();
    /**
     * <code>repeated int32 line_start_offsets = 2;</code>
     */
    int getLineStartOffsetsCount();
    /**
     * <code>repeated int32 line_start_offsets = 2;</code>
     */
    int getLineStartOffsets(int index);
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.FileEntry}
   */
  public static final class FileEntry extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.FileEntry)
      FileEntryOrBuilder {
    // Use FileEntry.newBuilder() to construct.
    private FileEntry(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private FileEntry(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public FileEntry getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private FileEntry(
        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);
      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.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = name_.toBuilder();
              }
              name_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(name_);
                name_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 16: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                lineStartOffsets_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000002;
              }
              lineStartOffsets_.add(input.readInt32());
              break;
            }
            case 18: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                lineStartOffsets_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000002;
              }
              while (input.getBytesUntilLimit() > 0) {
                lineStartOffsets_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          lineStartOffsets_ = java.util.Collections.unmodifiableList(lineStartOffsets_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<FileEntry> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<FileEntry>() {
      public FileEntry parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new FileEntry(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
      return name_;
    }

    public static final int LINE_START_OFFSETS_FIELD_NUMBER = 2;
    private java.util.List<java.lang.Integer> lineStartOffsets_;
    /**
     * <code>repeated int32 line_start_offsets = 2;</code>
     */
    public java.util.List<java.lang.Integer>
        getLineStartOffsetsList() {
      return lineStartOffsets_;
    }
    /**
     * <code>repeated int32 line_start_offsets = 2;</code>
     */
    public int getLineStartOffsetsCount() {
      return lineStartOffsets_.size();
    }
    /**
     * <code>repeated int32 line_start_offsets = 2;</code>
     */
    public int getLineStartOffsets(int index) {
      return lineStartOffsets_.get(index);
    }

    private void initFields() {
      name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      lineStartOffsets_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

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

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, name_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < lineStartOffsets_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(lineStartOffsets_.get(i));
        }
        size += dataSize;
        size += 1 * getLineStartOffsetsList().size();
      }
      size += unknownFields.size();
      memoizedSerializedSize = size;
      return size;
    }

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

    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry 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.common.serialization.KotlinIr.FileEntry parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry 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.common.serialization.KotlinIr.FileEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry 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.common.serialization.KotlinIr.FileEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry 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.common.serialization.KotlinIr.FileEntry parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry 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.common.serialization.KotlinIr.FileEntry prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        lineStartOffsets_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          lineStartOffsets_ = java.util.Collections.unmodifiableList(lineStartOffsets_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.lineStartOffsets_ = lineStartOffsets_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry.getDefaultInstance()) return this;
        if (other.hasName()) {
          mergeName(other.getName());
        }
        if (!other.lineStartOffsets_.isEmpty()) {
          if (lineStartOffsets_.isEmpty()) {
            lineStartOffsets_ = other.lineStartOffsets_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureLineStartOffsetsIsMutable();
            lineStartOffsets_.addAll(other.lineStartOffsets_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasName()) {
          
          return false;
        }
        if (!getName().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.common.serialization.KotlinIr.FileEntry parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
        return name_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public Builder setName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        name_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public Builder setName(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        name_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public Builder mergeName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            name_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          name_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(name_).mergeFrom(value).buildPartial();
        } else {
          name_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public Builder clearName() {
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

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

      private java.util.List<java.lang.Integer> lineStartOffsets_ = java.util.Collections.emptyList();
      private void ensureLineStartOffsetsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          lineStartOffsets_ = new java.util.ArrayList<java.lang.Integer>(lineStartOffsets_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated int32 line_start_offsets = 2;</code>
       */
      public java.util.List<java.lang.Integer>
          getLineStartOffsetsList() {
        return java.util.Collections.unmodifiableList(lineStartOffsets_);
      }
      /**
       * <code>repeated int32 line_start_offsets = 2;</code>
       */
      public int getLineStartOffsetsCount() {
        return lineStartOffsets_.size();
      }
      /**
       * <code>repeated int32 line_start_offsets = 2;</code>
       */
      public int getLineStartOffsets(int index) {
        return lineStartOffsets_.get(index);
      }
      /**
       * <code>repeated int32 line_start_offsets = 2;</code>
       */
      public Builder setLineStartOffsets(
          int index, int value) {
        ensureLineStartOffsetsIsMutable();
        lineStartOffsets_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated int32 line_start_offsets = 2;</code>
       */
      public Builder addLineStartOffsets(int value) {
        ensureLineStartOffsetsIsMutable();
        lineStartOffsets_.add(value);
        
        return this;
      }
      /**
       * <code>repeated int32 line_start_offsets = 2;</code>
       */
      public Builder addAllLineStartOffsets(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureLineStartOffsetsIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, lineStartOffsets_);
        
        return this;
      }
      /**
       * <code>repeated int32 line_start_offsets = 2;</code>
       */
      public Builder clearLineStartOffsets() {
        lineStartOffsets_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.FileEntry)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.FileEntry)
  }

  public interface IrFileOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrFile)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.UniqId declaration_id = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId> 
        getDeclarationIdList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.UniqId declaration_id = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId getDeclarationId(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.UniqId declaration_id = 1;</code>
     */
    int getDeclarationIdCount();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.FileEntry file_entry = 2;</code>
     */
    boolean hasFileEntry();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.FileEntry file_entry = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry getFileEntry();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String fq_name = 3;</code>
     */
    boolean hasFqName();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String fq_name = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getFqName();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 4;</code>
     */
    boolean hasAnnotations();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 4;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations getAnnotations();

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol explicitly_exported_to_compiler = 5;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol> 
        getExplicitlyExportedToCompilerList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol explicitly_exported_to_compiler = 5;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getExplicitlyExportedToCompiler(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol explicitly_exported_to_compiler = 5;</code>
     */
    int getExplicitlyExportedToCompilerCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrFile}
   */
  public static final class IrFile extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrFile)
      IrFileOrBuilder {
    // Use IrFile.newBuilder() to construct.
    private IrFile(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrFile(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrFile getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrFile(
        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);
      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)) {
                declarationId_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId>();
                mutable_bitField0_ |= 0x00000001;
              }
              declarationId_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.PARSER, extensionRegistry));
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = fileEntry_.toBuilder();
              }
              fileEntry_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(fileEntry_);
                fileEntry_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = fqName_.toBuilder();
              }
              fqName_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(fqName_);
                fqName_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 34: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = annotations_.toBuilder();
              }
              annotations_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(annotations_);
                annotations_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                explicitlyExportedToCompiler_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol>();
                mutable_bitField0_ |= 0x00000010;
              }
              explicitlyExportedToCompiler_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.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)) {
          declarationId_ = java.util.Collections.unmodifiableList(declarationId_);
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          explicitlyExportedToCompiler_ = java.util.Collections.unmodifiableList(explicitlyExportedToCompiler_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrFile> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrFile>() {
      public IrFile parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrFile(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int DECLARATION_ID_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId> declarationId_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.UniqId declaration_id = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId> getDeclarationIdList() {
      return declarationId_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.UniqId declaration_id = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqIdOrBuilder> 
        getDeclarationIdOrBuilderList() {
      return declarationId_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.UniqId declaration_id = 1;</code>
     */
    public int getDeclarationIdCount() {
      return declarationId_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.UniqId declaration_id = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId getDeclarationId(int index) {
      return declarationId_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.UniqId declaration_id = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqIdOrBuilder getDeclarationIdOrBuilder(
        int index) {
      return declarationId_.get(index);
    }

    public static final int FILE_ENTRY_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry fileEntry_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.FileEntry file_entry = 2;</code>
     */
    public boolean hasFileEntry() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.FileEntry file_entry = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry getFileEntry() {
      return fileEntry_;
    }

    public static final int FQ_NAME_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String fqName_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String fq_name = 3;</code>
     */
    public boolean hasFqName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String fq_name = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getFqName() {
      return fqName_;
    }

    public static final int ANNOTATIONS_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations annotations_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 4;</code>
     */
    public boolean hasAnnotations() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 4;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations getAnnotations() {
      return annotations_;
    }

    public static final int EXPLICITLY_EXPORTED_TO_COMPILER_FIELD_NUMBER = 5;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol> explicitlyExportedToCompiler_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol explicitly_exported_to_compiler = 5;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol> getExplicitlyExportedToCompilerList() {
      return explicitlyExportedToCompiler_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol explicitly_exported_to_compiler = 5;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolOrBuilder> 
        getExplicitlyExportedToCompilerOrBuilderList() {
      return explicitlyExportedToCompiler_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol explicitly_exported_to_compiler = 5;</code>
     */
    public int getExplicitlyExportedToCompilerCount() {
      return explicitlyExportedToCompiler_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol explicitly_exported_to_compiler = 5;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getExplicitlyExportedToCompiler(int index) {
      return explicitlyExportedToCompiler_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol explicitly_exported_to_compiler = 5;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolOrBuilder getExplicitlyExportedToCompilerOrBuilder(
        int index) {
      return explicitlyExportedToCompiler_.get(index);
    }

    private void initFields() {
      declarationId_ = java.util.Collections.emptyList();
      fileEntry_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry.getDefaultInstance();
      fqName_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      annotations_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();
      explicitlyExportedToCompiler_ = 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 (!hasFileEntry()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasFqName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAnnotations()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getDeclarationIdCount(); i++) {
        if (!getDeclarationId(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!getFileEntry().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getFqName().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getAnnotations().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getExplicitlyExportedToCompilerCount(); i++) {
        if (!getExplicitlyExportedToCompiler(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 < declarationId_.size(); i++) {
        output.writeMessage(1, declarationId_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(2, fileEntry_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(3, fqName_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(4, annotations_);
      }
      for (int i = 0; i < explicitlyExportedToCompiler_.size(); i++) {
        output.writeMessage(5, explicitlyExportedToCompiler_.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 < declarationId_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, declarationId_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, fileEntry_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, fqName_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, annotations_);
      }
      for (int i = 0; i < explicitlyExportedToCompiler_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, explicitlyExportedToCompiler_.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.common.serialization.KotlinIr.IrFile parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile 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.common.serialization.KotlinIr.IrFile parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile 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.common.serialization.KotlinIr.IrFile parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile 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.common.serialization.KotlinIr.IrFile parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile 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.common.serialization.KotlinIr.IrFile parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile 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.common.serialization.KotlinIr.IrFile prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        declarationId_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        fileEntry_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        fqName_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        annotations_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        explicitlyExportedToCompiler_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          declarationId_ = java.util.Collections.unmodifiableList(declarationId_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.declarationId_ = declarationId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000001;
        }
        result.fileEntry_ = fileEntry_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        result.fqName_ = fqName_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        result.annotations_ = annotations_;
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          explicitlyExportedToCompiler_ = java.util.Collections.unmodifiableList(explicitlyExportedToCompiler_);
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.explicitlyExportedToCompiler_ = explicitlyExportedToCompiler_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile.getDefaultInstance()) return this;
        if (!other.declarationId_.isEmpty()) {
          if (declarationId_.isEmpty()) {
            declarationId_ = other.declarationId_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureDeclarationIdIsMutable();
            declarationId_.addAll(other.declarationId_);
          }
          
        }
        if (other.hasFileEntry()) {
          mergeFileEntry(other.getFileEntry());
        }
        if (other.hasFqName()) {
          mergeFqName(other.getFqName());
        }
        if (other.hasAnnotations()) {
          mergeAnnotations(other.getAnnotations());
        }
        if (!other.explicitlyExportedToCompiler_.isEmpty()) {
          if (explicitlyExportedToCompiler_.isEmpty()) {
            explicitlyExportedToCompiler_ = other.explicitlyExportedToCompiler_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureExplicitlyExportedToCompilerIsMutable();
            explicitlyExportedToCompiler_.addAll(other.explicitlyExportedToCompiler_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasFileEntry()) {
          
          return false;
        }
        if (!hasFqName()) {
          
          return false;
        }
        if (!hasAnnotations()) {
          
          return false;
        }
        for (int i = 0; i < getDeclarationIdCount(); i++) {
          if (!getDeclarationId(i).isInitialized()) {
            
            return false;
          }
        }
        if (!getFileEntry().isInitialized()) {
          
          return false;
        }
        if (!getFqName().isInitialized()) {
          
          return false;
        }
        if (!getAnnotations().isInitialized()) {
          
          return false;
        }
        for (int i = 0; i < getExplicitlyExportedToCompilerCount(); i++) {
          if (!getExplicitlyExportedToCompiler(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.common.serialization.KotlinIr.IrFile parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile) 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.KotlinIr.UniqId> declarationId_ =
        java.util.Collections.emptyList();
      private void ensureDeclarationIdIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          declarationId_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId>(declarationId_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.UniqId declaration_id = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId> getDeclarationIdList() {
        return java.util.Collections.unmodifiableList(declarationId_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.UniqId declaration_id = 1;</code>
       */
      public int getDeclarationIdCount() {
        return declarationId_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.UniqId declaration_id = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId getDeclarationId(int index) {
        return declarationId_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.UniqId declaration_id = 1;</code>
       */
      public Builder setDeclarationId(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureDeclarationIdIsMutable();
        declarationId_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.UniqId declaration_id = 1;</code>
       */
      public Builder setDeclarationId(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.Builder builderForValue) {
        ensureDeclarationIdIsMutable();
        declarationId_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.UniqId declaration_id = 1;</code>
       */
      public Builder addDeclarationId(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureDeclarationIdIsMutable();
        declarationId_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.UniqId declaration_id = 1;</code>
       */
      public Builder addDeclarationId(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureDeclarationIdIsMutable();
        declarationId_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.UniqId declaration_id = 1;</code>
       */
      public Builder addDeclarationId(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.Builder builderForValue) {
        ensureDeclarationIdIsMutable();
        declarationId_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.UniqId declaration_id = 1;</code>
       */
      public Builder addDeclarationId(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.Builder builderForValue) {
        ensureDeclarationIdIsMutable();
        declarationId_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.UniqId declaration_id = 1;</code>
       */
      public Builder addAllDeclarationId(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId> values) {
        ensureDeclarationIdIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, declarationId_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.UniqId declaration_id = 1;</code>
       */
      public Builder clearDeclarationId() {
        declarationId_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.UniqId declaration_id = 1;</code>
       */
      public Builder removeDeclarationId(int index) {
        ensureDeclarationIdIsMutable();
        declarationId_.remove(index);

        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry fileEntry_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.FileEntry file_entry = 2;</code>
       */
      public boolean hasFileEntry() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.FileEntry file_entry = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry getFileEntry() {
        return fileEntry_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.FileEntry file_entry = 2;</code>
       */
      public Builder setFileEntry(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry value) {
        if (value == null) {
          throw new NullPointerException();
        }
        fileEntry_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.FileEntry file_entry = 2;</code>
       */
      public Builder setFileEntry(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry.Builder builderForValue) {
        fileEntry_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.FileEntry file_entry = 2;</code>
       */
      public Builder mergeFileEntry(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            fileEntry_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry.getDefaultInstance()) {
          fileEntry_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry.newBuilder(fileEntry_).mergeFrom(value).buildPartial();
        } else {
          fileEntry_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.FileEntry file_entry = 2;</code>
       */
      public Builder clearFileEntry() {
        fileEntry_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FileEntry.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String fqName_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String fq_name = 3;</code>
       */
      public boolean hasFqName() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String fq_name = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getFqName() {
        return fqName_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String fq_name = 3;</code>
       */
      public Builder setFqName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        fqName_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String fq_name = 3;</code>
       */
      public Builder setFqName(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        fqName_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String fq_name = 3;</code>
       */
      public Builder mergeFqName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            fqName_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          fqName_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(fqName_).mergeFrom(value).buildPartial();
        } else {
          fqName_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String fq_name = 3;</code>
       */
      public Builder clearFqName() {
        fqName_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations annotations_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 4;</code>
       */
      public boolean hasAnnotations() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 4;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations getAnnotations() {
        return annotations_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 4;</code>
       */
      public Builder setAnnotations(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations value) {
        if (value == null) {
          throw new NullPointerException();
        }
        annotations_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 4;</code>
       */
      public Builder setAnnotations(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.Builder builderForValue) {
        annotations_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 4;</code>
       */
      public Builder mergeAnnotations(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            annotations_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance()) {
          annotations_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.newBuilder(annotations_).mergeFrom(value).buildPartial();
        } else {
          annotations_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 4;</code>
       */
      public Builder clearAnnotations() {
        annotations_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();

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

      private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol> explicitlyExportedToCompiler_ =
        java.util.Collections.emptyList();
      private void ensureExplicitlyExportedToCompilerIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          explicitlyExportedToCompiler_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol>(explicitlyExportedToCompiler_);
          bitField0_ |= 0x00000010;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol explicitly_exported_to_compiler = 5;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol> getExplicitlyExportedToCompilerList() {
        return java.util.Collections.unmodifiableList(explicitlyExportedToCompiler_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol explicitly_exported_to_compiler = 5;</code>
       */
      public int getExplicitlyExportedToCompilerCount() {
        return explicitlyExportedToCompiler_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol explicitly_exported_to_compiler = 5;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getExplicitlyExportedToCompiler(int index) {
        return explicitlyExportedToCompiler_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol explicitly_exported_to_compiler = 5;</code>
       */
      public Builder setExplicitlyExportedToCompiler(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureExplicitlyExportedToCompilerIsMutable();
        explicitlyExportedToCompiler_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol explicitly_exported_to_compiler = 5;</code>
       */
      public Builder setExplicitlyExportedToCompiler(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        ensureExplicitlyExportedToCompilerIsMutable();
        explicitlyExportedToCompiler_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol explicitly_exported_to_compiler = 5;</code>
       */
      public Builder addExplicitlyExportedToCompiler(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureExplicitlyExportedToCompilerIsMutable();
        explicitlyExportedToCompiler_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol explicitly_exported_to_compiler = 5;</code>
       */
      public Builder addExplicitlyExportedToCompiler(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureExplicitlyExportedToCompilerIsMutable();
        explicitlyExportedToCompiler_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol explicitly_exported_to_compiler = 5;</code>
       */
      public Builder addExplicitlyExportedToCompiler(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        ensureExplicitlyExportedToCompilerIsMutable();
        explicitlyExportedToCompiler_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol explicitly_exported_to_compiler = 5;</code>
       */
      public Builder addExplicitlyExportedToCompiler(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        ensureExplicitlyExportedToCompilerIsMutable();
        explicitlyExportedToCompiler_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol explicitly_exported_to_compiler = 5;</code>
       */
      public Builder addAllExplicitlyExportedToCompiler(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol> values) {
        ensureExplicitlyExportedToCompilerIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, explicitlyExportedToCompiler_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol explicitly_exported_to_compiler = 5;</code>
       */
      public Builder clearExplicitlyExportedToCompiler() {
        explicitlyExportedToCompiler_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol explicitly_exported_to_compiler = 5;</code>
       */
      public Builder removeExplicitlyExportedToCompiler(int index) {
        ensureExplicitlyExportedToCompilerIsMutable();
        explicitlyExportedToCompiler_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrFile)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrFile)
  }

  public interface IrModuleOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrModule)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
     */
    boolean hasName();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName();

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrFile file = 2;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile> 
        getFileList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrFile file = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile getFile(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrFile file = 2;</code>
     */
    int getFileCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrModule}
   */
  public static final class IrModule extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrModule)
      IrModuleOrBuilder {
    // Use IrModule.newBuilder() to construct.
    private IrModule(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrModule(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrModule getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrModule(
        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);
      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.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = name_.toBuilder();
              }
              name_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(name_);
                name_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                file_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile>();
                mutable_bitField0_ |= 0x00000002;
              }
              file_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          file_ = java.util.Collections.unmodifiableList(file_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrModule> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrModule>() {
      public IrModule parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrModule(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
      return name_;
    }

    public static final int FILE_FIELD_NUMBER = 2;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile> file_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrFile file = 2;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile> getFileList() {
      return file_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrFile file = 2;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFileOrBuilder> 
        getFileOrBuilderList() {
      return file_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrFile file = 2;</code>
     */
    public int getFileCount() {
      return file_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrFile file = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile getFile(int index) {
      return file_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrFile file = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFileOrBuilder getFileOrBuilder(
        int index) {
      return file_.get(index);
    }

    private void initFields() {
      name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      file_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getName().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getFileCount(); i++) {
        if (!getFile(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, name_);
      }
      for (int i = 0; i < file_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, file_.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.common.serialization.KotlinIr.IrModule parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrModule 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.common.serialization.KotlinIr.IrModule parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrModule 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.common.serialization.KotlinIr.IrModule parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrModule 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.common.serialization.KotlinIr.IrModule parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrModule 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.common.serialization.KotlinIr.IrModule parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrModule 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.common.serialization.KotlinIr.IrModule prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        file_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrModule getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrModule.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrModule build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrModule result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrModule buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrModule result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrModule(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          file_ = java.util.Collections.unmodifiableList(file_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.file_ = file_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrModule other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrModule.getDefaultInstance()) return this;
        if (other.hasName()) {
          mergeName(other.getName());
        }
        if (!other.file_.isEmpty()) {
          if (file_.isEmpty()) {
            file_ = other.file_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureFileIsMutable();
            file_.addAll(other.file_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasName()) {
          
          return false;
        }
        if (!getName().isInitialized()) {
          
          return false;
        }
        for (int i = 0; i < getFileCount(); i++) {
          if (!getFile(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.common.serialization.KotlinIr.IrModule parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrModule) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
        return name_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public Builder setName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        name_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public Builder setName(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        name_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public Builder mergeName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            name_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          name_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(name_).mergeFrom(value).buildPartial();
        } else {
          name_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 1;</code>
       */
      public Builder clearName() {
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

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

      private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile> file_ =
        java.util.Collections.emptyList();
      private void ensureFileIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          file_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile>(file_);
          bitField0_ |= 0x00000002;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrFile file = 2;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile> getFileList() {
        return java.util.Collections.unmodifiableList(file_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrFile file = 2;</code>
       */
      public int getFileCount() {
        return file_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrFile file = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile getFile(int index) {
        return file_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrFile file = 2;</code>
       */
      public Builder setFile(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFileIsMutable();
        file_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrFile file = 2;</code>
       */
      public Builder setFile(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile.Builder builderForValue) {
        ensureFileIsMutable();
        file_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrFile file = 2;</code>
       */
      public Builder addFile(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFileIsMutable();
        file_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrFile file = 2;</code>
       */
      public Builder addFile(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFileIsMutable();
        file_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrFile file = 2;</code>
       */
      public Builder addFile(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile.Builder builderForValue) {
        ensureFileIsMutable();
        file_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrFile file = 2;</code>
       */
      public Builder addFile(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile.Builder builderForValue) {
        ensureFileIsMutable();
        file_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrFile file = 2;</code>
       */
      public Builder addAllFile(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFile> values) {
        ensureFileIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, file_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrFile file = 2;</code>
       */
      public Builder clearFile() {
        file_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrFile file = 2;</code>
       */
      public Builder removeFile(int index) {
        ensureFileIsMutable();
        file_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrModule)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrModule)
  }

  public interface StringOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.String)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required int32 index = 1;</code>
     */
    boolean hasIndex();
    /**
     * <code>required int32 index = 1;</code>
     */
    int getIndex();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.String}
   */
  public static final class String extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.String)
      StringOrBuilder {
    // Use String.newBuilder() to construct.
    private String(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private String(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public String getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private String(
        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);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              index_ = input.readInt32();
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<String> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<String>() {
      public String parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new String(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int INDEX_FIELD_NUMBER = 1;
    private int index_;
    /**
     * <code>required int32 index = 1;</code>
     */
    public boolean hasIndex() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 index = 1;</code>
     */
    public int getIndex() {
      return index_;
    }

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

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, index_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, index_);
      }
      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.common.serialization.KotlinIr.String parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String 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.common.serialization.KotlinIr.String parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String 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.common.serialization.KotlinIr.String parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String 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.common.serialization.KotlinIr.String parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String 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.common.serialization.KotlinIr.String parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String 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.common.serialization.KotlinIr.String prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        index_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.index_ = index_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) return this;
        if (other.hasIndex()) {
          setIndex(other.getIndex());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

      private int index_ ;
      /**
       * <code>required int32 index = 1;</code>
       */
      public boolean hasIndex() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 index = 1;</code>
       */
      public int getIndex() {
        return index_;
      }
      /**
       * <code>required int32 index = 1;</code>
       */
      public Builder setIndex(int value) {
        bitField0_ |= 0x00000001;
        index_ = value;
        
        return this;
      }
      /**
       * <code>required int32 index = 1;</code>
       */
      public Builder clearIndex() {
        bitField0_ = (bitField0_ & ~0x00000001);
        index_ = 0;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.String)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.String)
  }

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

    /**
     * <code>repeated string strings = 1;</code>
     */
    org.jetbrains.kotlin.protobuf.ProtocolStringList
        getStringsList();
    /**
     * <code>repeated string strings = 1;</code>
     */
    int getStringsCount();
    /**
     * <code>repeated string strings = 1;</code>
     */
    java.lang.String getStrings(int index);
    /**
     * <code>repeated string strings = 1;</code>
     */
    org.jetbrains.kotlin.protobuf.ByteString
        getStringsBytes(int index);
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.StringTable}
   */
  public static final class StringTable extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.StringTable)
      StringTableOrBuilder {
    // Use StringTable.newBuilder() to construct.
    private StringTable(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private StringTable(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public StringTable getDefaultInstanceForType() {
      return defaultInstance;
    }

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

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

    public static final int STRINGS_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.protobuf.LazyStringList strings_;
    /**
     * <code>repeated string strings = 1;</code>
     */
    public org.jetbrains.kotlin.protobuf.ProtocolStringList
        getStringsList() {
      return strings_;
    }
    /**
     * <code>repeated string strings = 1;</code>
     */
    public int getStringsCount() {
      return strings_.size();
    }
    /**
     * <code>repeated string strings = 1;</code>
     */
    public java.lang.String getStrings(int index) {
      return strings_.get(index);
    }
    /**
     * <code>repeated string strings = 1;</code>
     */
    public org.jetbrains.kotlin.protobuf.ByteString
        getStringsBytes(int index) {
      return strings_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < strings_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(strings_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getStringsList().size();
      }
      size += unknownFields.size();
      memoizedSerializedSize = size;
      return size;
    }

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

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

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

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

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

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

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.StringTable getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.StringTable.getDefaultInstance();
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.StringTable buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.StringTable result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.StringTable(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          strings_ = strings_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.strings_ = strings_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.StringTable other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.StringTable.getDefaultInstance()) return this;
        if (!other.strings_.isEmpty()) {
          if (strings_.isEmpty()) {
            strings_ = other.strings_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureStringsIsMutable();
            strings_.addAll(other.strings_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

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

      private org.jetbrains.kotlin.protobuf.LazyStringList strings_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
      private void ensureStringsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          strings_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(strings_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string strings = 1;</code>
       */
      public org.jetbrains.kotlin.protobuf.ProtocolStringList
          getStringsList() {
        return strings_.getUnmodifiableView();
      }
      /**
       * <code>repeated string strings = 1;</code>
       */
      public int getStringsCount() {
        return strings_.size();
      }
      /**
       * <code>repeated string strings = 1;</code>
       */
      public java.lang.String getStrings(int index) {
        return strings_.get(index);
      }
      /**
       * <code>repeated string strings = 1;</code>
       */
      public org.jetbrains.kotlin.protobuf.ByteString
          getStringsBytes(int index) {
        return strings_.getByteString(index);
      }
      /**
       * <code>repeated string strings = 1;</code>
       */
      public Builder setStrings(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStringsIsMutable();
        strings_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated string strings = 1;</code>
       */
      public Builder addStrings(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStringsIsMutable();
        strings_.add(value);
        
        return this;
      }
      /**
       * <code>repeated string strings = 1;</code>
       */
      public Builder addAllStrings(
          java.lang.Iterable<java.lang.String> values) {
        ensureStringsIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, strings_);
        
        return this;
      }
      /**
       * <code>repeated string strings = 1;</code>
       */
      public Builder clearStrings() {
        strings_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        
        return this;
      }
      /**
       * <code>repeated string strings = 1;</code>
       */
      public Builder addStringsBytes(
          org.jetbrains.kotlin.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStringsIsMutable();
        strings_.add(value);
        
        return this;
      }

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

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

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

  public interface IrSymbolDataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrSymbolData)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbolKind kind = 1;</code>
     */
    boolean hasKind();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbolKind kind = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolKind getKind();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.UniqId uniq_id = 2;</code>
     */
    boolean hasUniqId();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.UniqId uniq_id = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId getUniqId();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.UniqId top_level_uniq_id = 3;</code>
     */
    boolean hasTopLevelUniqId();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.UniqId top_level_uniq_id = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId getTopLevelUniqId();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String fqname = 4;</code>
     */
    boolean hasFqname();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String fqname = 4;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getFqname();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.DescriptorReference descriptor_reference = 5;</code>
     */
    boolean hasDescriptorReference();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.DescriptorReference descriptor_reference = 5;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference getDescriptorReference();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrSymbolData}
   */
  public static final class IrSymbolData extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrSymbolData)
      IrSymbolDataOrBuilder {
    // Use IrSymbolData.newBuilder() to construct.
    private IrSymbolData(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrSymbolData(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrSymbolData getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrSymbolData(
        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);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolKind value = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolKind.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000001;
                kind_ = value;
              }
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = uniqId_.toBuilder();
              }
              uniqId_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(uniqId_);
                uniqId_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = topLevelUniqId_.toBuilder();
              }
              topLevelUniqId_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(topLevelUniqId_);
                topLevelUniqId_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 34: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = fqname_.toBuilder();
              }
              fqname_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(fqname_);
                fqname_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 42: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                subBuilder = descriptorReference_.toBuilder();
              }
              descriptorReference_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(descriptorReference_);
                descriptorReference_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrSymbolData> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrSymbolData>() {
      public IrSymbolData parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrSymbolData(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int KIND_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolKind kind_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbolKind kind = 1;</code>
     */
    public boolean hasKind() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbolKind kind = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolKind getKind() {
      return kind_;
    }

    public static final int UNIQ_ID_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId uniqId_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.UniqId uniq_id = 2;</code>
     */
    public boolean hasUniqId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.UniqId uniq_id = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId getUniqId() {
      return uniqId_;
    }

    public static final int TOP_LEVEL_UNIQ_ID_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId topLevelUniqId_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.UniqId top_level_uniq_id = 3;</code>
     */
    public boolean hasTopLevelUniqId() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.UniqId top_level_uniq_id = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId getTopLevelUniqId() {
      return topLevelUniqId_;
    }

    public static final int FQNAME_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String fqname_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String fqname = 4;</code>
     */
    public boolean hasFqname() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String fqname = 4;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getFqname() {
      return fqname_;
    }

    public static final int DESCRIPTOR_REFERENCE_FIELD_NUMBER = 5;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference descriptorReference_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.DescriptorReference descriptor_reference = 5;</code>
     */
    public boolean hasDescriptorReference() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.DescriptorReference descriptor_reference = 5;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference getDescriptorReference() {
      return descriptorReference_;
    }

    private void initFields() {
      kind_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolKind.FUNCTION_SYMBOL;
      uniqId_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.getDefaultInstance();
      topLevelUniqId_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.getDefaultInstance();
      fqname_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      descriptorReference_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasKind()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasUniqId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTopLevelUniqId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getUniqId().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTopLevelUniqId().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasFqname()) {
        if (!getFqname().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasDescriptorReference()) {
        if (!getDescriptorReference().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeEnum(1, kind_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, uniqId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, topLevelUniqId_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, fqname_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(5, descriptorReference_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(1, kind_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, uniqId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, topLevelUniqId_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, fqname_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, descriptorReference_);
      }
      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.common.serialization.KotlinIr.IrSymbolData parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData 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.common.serialization.KotlinIr.IrSymbolData parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData 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.common.serialization.KotlinIr.IrSymbolData parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData 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.common.serialization.KotlinIr.IrSymbolData parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData 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.common.serialization.KotlinIr.IrSymbolData parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData 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.common.serialization.KotlinIr.IrSymbolData prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        kind_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolKind.FUNCTION_SYMBOL;
        bitField0_ = (bitField0_ & ~0x00000001);
        uniqId_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        topLevelUniqId_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        fqname_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        descriptorReference_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.kind_ = kind_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.uniqId_ = uniqId_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.topLevelUniqId_ = topLevelUniqId_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.fqname_ = fqname_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.descriptorReference_ = descriptorReference_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData.getDefaultInstance()) return this;
        if (other.hasKind()) {
          setKind(other.getKind());
        }
        if (other.hasUniqId()) {
          mergeUniqId(other.getUniqId());
        }
        if (other.hasTopLevelUniqId()) {
          mergeTopLevelUniqId(other.getTopLevelUniqId());
        }
        if (other.hasFqname()) {
          mergeFqname(other.getFqname());
        }
        if (other.hasDescriptorReference()) {
          mergeDescriptorReference(other.getDescriptorReference());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasKind()) {
          
          return false;
        }
        if (!hasUniqId()) {
          
          return false;
        }
        if (!hasTopLevelUniqId()) {
          
          return false;
        }
        if (!getUniqId().isInitialized()) {
          
          return false;
        }
        if (!getTopLevelUniqId().isInitialized()) {
          
          return false;
        }
        if (hasFqname()) {
          if (!getFqname().isInitialized()) {
            
            return false;
          }
        }
        if (hasDescriptorReference()) {
          if (!getDescriptorReference().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.common.serialization.KotlinIr.IrSymbolData parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolKind kind_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolKind.FUNCTION_SYMBOL;
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbolKind kind = 1;</code>
       */
      public boolean hasKind() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbolKind kind = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolKind getKind() {
        return kind_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbolKind kind = 1;</code>
       */
      public Builder setKind(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolKind value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        kind_ = value;
        
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbolKind kind = 1;</code>
       */
      public Builder clearKind() {
        bitField0_ = (bitField0_ & ~0x00000001);
        kind_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolKind.FUNCTION_SYMBOL;
        
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId uniqId_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.UniqId uniq_id = 2;</code>
       */
      public boolean hasUniqId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.UniqId uniq_id = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId getUniqId() {
        return uniqId_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.UniqId uniq_id = 2;</code>
       */
      public Builder setUniqId(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId value) {
        if (value == null) {
          throw new NullPointerException();
        }
        uniqId_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.UniqId uniq_id = 2;</code>
       */
      public Builder setUniqId(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.Builder builderForValue) {
        uniqId_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.UniqId uniq_id = 2;</code>
       */
      public Builder mergeUniqId(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            uniqId_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.getDefaultInstance()) {
          uniqId_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.newBuilder(uniqId_).mergeFrom(value).buildPartial();
        } else {
          uniqId_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.UniqId uniq_id = 2;</code>
       */
      public Builder clearUniqId() {
        uniqId_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId topLevelUniqId_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.UniqId top_level_uniq_id = 3;</code>
       */
      public boolean hasTopLevelUniqId() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.UniqId top_level_uniq_id = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId getTopLevelUniqId() {
        return topLevelUniqId_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.UniqId top_level_uniq_id = 3;</code>
       */
      public Builder setTopLevelUniqId(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId value) {
        if (value == null) {
          throw new NullPointerException();
        }
        topLevelUniqId_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.UniqId top_level_uniq_id = 3;</code>
       */
      public Builder setTopLevelUniqId(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.Builder builderForValue) {
        topLevelUniqId_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.UniqId top_level_uniq_id = 3;</code>
       */
      public Builder mergeTopLevelUniqId(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            topLevelUniqId_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.getDefaultInstance()) {
          topLevelUniqId_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.newBuilder(topLevelUniqId_).mergeFrom(value).buildPartial();
        } else {
          topLevelUniqId_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.UniqId top_level_uniq_id = 3;</code>
       */
      public Builder clearTopLevelUniqId() {
        topLevelUniqId_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.UniqId.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String fqname_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String fqname = 4;</code>
       */
      public boolean hasFqname() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String fqname = 4;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getFqname() {
        return fqname_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String fqname = 4;</code>
       */
      public Builder setFqname(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        fqname_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String fqname = 4;</code>
       */
      public Builder setFqname(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        fqname_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String fqname = 4;</code>
       */
      public Builder mergeFqname(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            fqname_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          fqname_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(fqname_).mergeFrom(value).buildPartial();
        } else {
          fqname_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String fqname = 4;</code>
       */
      public Builder clearFqname() {
        fqname_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference descriptorReference_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.DescriptorReference descriptor_reference = 5;</code>
       */
      public boolean hasDescriptorReference() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.DescriptorReference descriptor_reference = 5;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference getDescriptorReference() {
        return descriptorReference_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.DescriptorReference descriptor_reference = 5;</code>
       */
      public Builder setDescriptorReference(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference value) {
        if (value == null) {
          throw new NullPointerException();
        }
        descriptorReference_ = value;

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.DescriptorReference descriptor_reference = 5;</code>
       */
      public Builder setDescriptorReference(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference.Builder builderForValue) {
        descriptorReference_ = builderForValue.build();

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.DescriptorReference descriptor_reference = 5;</code>
       */
      public Builder mergeDescriptorReference(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference value) {
        if (((bitField0_ & 0x00000010) == 0x00000010) &&
            descriptorReference_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference.getDefaultInstance()) {
          descriptorReference_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference.newBuilder(descriptorReference_).mergeFrom(value).buildPartial();
        } else {
          descriptorReference_ = value;
        }

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.DescriptorReference descriptor_reference = 5;</code>
       */
      public Builder clearDescriptorReference() {
        descriptorReference_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.DescriptorReference.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrSymbolData)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrSymbolData)
  }

  public interface IrSymbolOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrSymbol)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required int32 index = 1;</code>
     */
    boolean hasIndex();
    /**
     * <code>required int32 index = 1;</code>
     */
    int getIndex();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrSymbol}
   */
  public static final class IrSymbol extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrSymbol)
      IrSymbolOrBuilder {
    // Use IrSymbol.newBuilder() to construct.
    private IrSymbol(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrSymbol(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrSymbol getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrSymbol(
        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);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              index_ = input.readInt32();
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrSymbol> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrSymbol>() {
      public IrSymbol parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrSymbol(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int INDEX_FIELD_NUMBER = 1;
    private int index_;
    /**
     * <code>required int32 index = 1;</code>
     */
    public boolean hasIndex() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 index = 1;</code>
     */
    public int getIndex() {
      return index_;
    }

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

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, index_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, index_);
      }
      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.common.serialization.KotlinIr.IrSymbol parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol 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.common.serialization.KotlinIr.IrSymbol parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol 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.common.serialization.KotlinIr.IrSymbol parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol 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.common.serialization.KotlinIr.IrSymbol parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol 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.common.serialization.KotlinIr.IrSymbol parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol 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.common.serialization.KotlinIr.IrSymbol prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        index_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.index_ = index_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) return this;
        if (other.hasIndex()) {
          setIndex(other.getIndex());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

      private int index_ ;
      /**
       * <code>required int32 index = 1;</code>
       */
      public boolean hasIndex() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 index = 1;</code>
       */
      public int getIndex() {
        return index_;
      }
      /**
       * <code>required int32 index = 1;</code>
       */
      public Builder setIndex(int value) {
        bitField0_ |= 0x00000001;
        index_ = value;
        
        return this;
      }
      /**
       * <code>required int32 index = 1;</code>
       */
      public Builder clearIndex() {
        bitField0_ = (bitField0_ & ~0x00000001);
        index_ = 0;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrSymbol)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrSymbol)
  }

  public interface IrSymbolTableOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrSymbolTable)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbolData symbols = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData> 
        getSymbolsList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbolData symbols = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData getSymbols(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbolData symbols = 1;</code>
     */
    int getSymbolsCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrSymbolTable}
   */
  public static final class IrSymbolTable extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrSymbolTable)
      IrSymbolTableOrBuilder {
    // Use IrSymbolTable.newBuilder() to construct.
    private IrSymbolTable(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrSymbolTable(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrSymbolTable getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrSymbolTable(
        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);
      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)) {
                symbols_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData>();
                mutable_bitField0_ |= 0x00000001;
              }
              symbols_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData.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)) {
          symbols_ = java.util.Collections.unmodifiableList(symbols_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrSymbolTable> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrSymbolTable>() {
      public IrSymbolTable parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrSymbolTable(input, extensionRegistry);
      }
    };

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

    public static final int SYMBOLS_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData> symbols_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbolData symbols = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData> getSymbolsList() {
      return symbols_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbolData symbols = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolDataOrBuilder> 
        getSymbolsOrBuilderList() {
      return symbols_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbolData symbols = 1;</code>
     */
    public int getSymbolsCount() {
      return symbols_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbolData symbols = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData getSymbols(int index) {
      return symbols_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbolData symbols = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolDataOrBuilder getSymbolsOrBuilder(
        int index) {
      return symbols_.get(index);
    }

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

      for (int i = 0; i < getSymbolsCount(); i++) {
        if (!getSymbols(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 < symbols_.size(); i++) {
        output.writeMessage(1, symbols_.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 < symbols_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, symbols_.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.common.serialization.KotlinIr.IrSymbolTable parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolTable 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.common.serialization.KotlinIr.IrSymbolTable parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolTable 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.common.serialization.KotlinIr.IrSymbolTable parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolTable 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.common.serialization.KotlinIr.IrSymbolTable parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolTable 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.common.serialization.KotlinIr.IrSymbolTable parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolTable 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.common.serialization.KotlinIr.IrSymbolTable prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

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

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolTable getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolTable.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolTable build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolTable result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolTable buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolTable result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolTable(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          symbols_ = java.util.Collections.unmodifiableList(symbols_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.symbols_ = symbols_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolTable other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolTable.getDefaultInstance()) return this;
        if (!other.symbols_.isEmpty()) {
          if (symbols_.isEmpty()) {
            symbols_ = other.symbols_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureSymbolsIsMutable();
            symbols_.addAll(other.symbols_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getSymbolsCount(); i++) {
          if (!getSymbols(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.common.serialization.KotlinIr.IrSymbolTable parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolTable) 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.KotlinIr.IrSymbolData> symbols_ =
        java.util.Collections.emptyList();
      private void ensureSymbolsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          symbols_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData>(symbols_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbolData symbols = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData> getSymbolsList() {
        return java.util.Collections.unmodifiableList(symbols_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbolData symbols = 1;</code>
       */
      public int getSymbolsCount() {
        return symbols_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbolData symbols = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData getSymbols(int index) {
        return symbols_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbolData symbols = 1;</code>
       */
      public Builder setSymbols(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSymbolsIsMutable();
        symbols_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbolData symbols = 1;</code>
       */
      public Builder setSymbols(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData.Builder builderForValue) {
        ensureSymbolsIsMutable();
        symbols_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbolData symbols = 1;</code>
       */
      public Builder addSymbols(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSymbolsIsMutable();
        symbols_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbolData symbols = 1;</code>
       */
      public Builder addSymbols(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSymbolsIsMutable();
        symbols_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbolData symbols = 1;</code>
       */
      public Builder addSymbols(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData.Builder builderForValue) {
        ensureSymbolsIsMutable();
        symbols_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbolData symbols = 1;</code>
       */
      public Builder addSymbols(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData.Builder builderForValue) {
        ensureSymbolsIsMutable();
        symbols_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbolData symbols = 1;</code>
       */
      public Builder addAllSymbols(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolData> values) {
        ensureSymbolsIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, symbols_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbolData symbols = 1;</code>
       */
      public Builder clearSymbols() {
        symbols_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbolData symbols = 1;</code>
       */
      public Builder removeSymbols(int index) {
        ensureSymbolsIsMutable();
        symbols_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrSymbolTable)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrSymbolTable)
  }

  public interface AnnotationsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.Annotations)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall annotation = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall> 
        getAnnotationList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall annotation = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall getAnnotation(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall annotation = 1;</code>
     */
    int getAnnotationCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.Annotations}
   */
  public static final class Annotations extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.Annotations)
      AnnotationsOrBuilder {
    // Use Annotations.newBuilder() to construct.
    private Annotations(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Annotations(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Annotations getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Annotations(
        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);
      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)) {
                annotation_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall>();
                mutable_bitField0_ |= 0x00000001;
              }
              annotation_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall.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)) {
          annotation_ = java.util.Collections.unmodifiableList(annotation_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Annotations> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Annotations>() {
      public Annotations parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Annotations(input, extensionRegistry);
      }
    };

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

    public static final int ANNOTATION_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall> annotation_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall annotation = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall> getAnnotationList() {
      return annotation_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall annotation = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCallOrBuilder> 
        getAnnotationOrBuilderList() {
      return annotation_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall annotation = 1;</code>
     */
    public int getAnnotationCount() {
      return annotation_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall annotation = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall getAnnotation(int index) {
      return annotation_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall annotation = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCallOrBuilder getAnnotationOrBuilder(
        int index) {
      return annotation_.get(index);
    }

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

      for (int i = 0; i < getAnnotationCount(); i++) {
        if (!getAnnotation(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 < annotation_.size(); i++) {
        output.writeMessage(1, annotation_.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 < annotation_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, annotation_.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.common.serialization.KotlinIr.Annotations parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations 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.common.serialization.KotlinIr.Annotations parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations 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.common.serialization.KotlinIr.Annotations parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations 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.common.serialization.KotlinIr.Annotations parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations 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.common.serialization.KotlinIr.Annotations parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations 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.common.serialization.KotlinIr.Annotations prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

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

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          annotation_ = java.util.Collections.unmodifiableList(annotation_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.annotation_ = annotation_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance()) return this;
        if (!other.annotation_.isEmpty()) {
          if (annotation_.isEmpty()) {
            annotation_ = other.annotation_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureAnnotationIsMutable();
            annotation_.addAll(other.annotation_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getAnnotationCount(); i++) {
          if (!getAnnotation(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.common.serialization.KotlinIr.Annotations parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations) 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.KotlinIr.IrConstructorCall> annotation_ =
        java.util.Collections.emptyList();
      private void ensureAnnotationIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          annotation_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall>(annotation_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall annotation = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall> getAnnotationList() {
        return java.util.Collections.unmodifiableList(annotation_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall annotation = 1;</code>
       */
      public int getAnnotationCount() {
        return annotation_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall annotation = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall getAnnotation(int index) {
        return annotation_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall annotation = 1;</code>
       */
      public Builder setAnnotation(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureAnnotationIsMutable();
        annotation_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall annotation = 1;</code>
       */
      public Builder setAnnotation(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall.Builder builderForValue) {
        ensureAnnotationIsMutable();
        annotation_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall annotation = 1;</code>
       */
      public Builder addAnnotation(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureAnnotationIsMutable();
        annotation_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall annotation = 1;</code>
       */
      public Builder addAnnotation(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureAnnotationIsMutable();
        annotation_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall annotation = 1;</code>
       */
      public Builder addAnnotation(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall.Builder builderForValue) {
        ensureAnnotationIsMutable();
        annotation_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall annotation = 1;</code>
       */
      public Builder addAnnotation(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall.Builder builderForValue) {
        ensureAnnotationIsMutable();
        annotation_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall annotation = 1;</code>
       */
      public Builder addAllAnnotation(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall> values) {
        ensureAnnotationIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, annotation_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall annotation = 1;</code>
       */
      public Builder clearAnnotation() {
        annotation_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall annotation = 1;</code>
       */
      public Builder removeAnnotation(int index) {
        ensureAnnotationIsMutable();
        annotation_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.Annotations)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.Annotations)
  }

  public interface TypeArgumentsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.TypeArguments)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type_argument = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex> 
        getTypeArgumentList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type_argument = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getTypeArgument(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type_argument = 1;</code>
     */
    int getTypeArgumentCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.TypeArguments}
   */
  public static final class TypeArguments extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.TypeArguments)
      TypeArgumentsOrBuilder {
    // Use TypeArguments.newBuilder() to construct.
    private TypeArguments(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private TypeArguments(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public TypeArguments getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private TypeArguments(
        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);
      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)) {
                typeArgument_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex>();
                mutable_bitField0_ |= 0x00000001;
              }
              typeArgument_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.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)) {
          typeArgument_ = java.util.Collections.unmodifiableList(typeArgument_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<TypeArguments> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<TypeArguments>() {
      public TypeArguments parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new TypeArguments(input, extensionRegistry);
      }
    };

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

    public static final int TYPE_ARGUMENT_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex> typeArgument_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type_argument = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex> getTypeArgumentList() {
      return typeArgument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type_argument = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndexOrBuilder> 
        getTypeArgumentOrBuilderList() {
      return typeArgument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type_argument = 1;</code>
     */
    public int getTypeArgumentCount() {
      return typeArgument_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type_argument = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getTypeArgument(int index) {
      return typeArgument_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type_argument = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndexOrBuilder getTypeArgumentOrBuilder(
        int index) {
      return typeArgument_.get(index);
    }

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

      for (int i = 0; i < getTypeArgumentCount(); i++) {
        if (!getTypeArgument(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 < typeArgument_.size(); i++) {
        output.writeMessage(1, typeArgument_.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 < typeArgument_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, typeArgument_.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.common.serialization.KotlinIr.TypeArguments parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments 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.common.serialization.KotlinIr.TypeArguments parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments 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.common.serialization.KotlinIr.TypeArguments parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments 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.common.serialization.KotlinIr.TypeArguments parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments 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.common.serialization.KotlinIr.TypeArguments parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments 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.common.serialization.KotlinIr.TypeArguments prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

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

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          typeArgument_ = java.util.Collections.unmodifiableList(typeArgument_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.typeArgument_ = typeArgument_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments.getDefaultInstance()) return this;
        if (!other.typeArgument_.isEmpty()) {
          if (typeArgument_.isEmpty()) {
            typeArgument_ = other.typeArgument_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureTypeArgumentIsMutable();
            typeArgument_.addAll(other.typeArgument_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getTypeArgumentCount(); i++) {
          if (!getTypeArgument(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.common.serialization.KotlinIr.TypeArguments parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments) 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.KotlinIr.IrTypeIndex> typeArgument_ =
        java.util.Collections.emptyList();
      private void ensureTypeArgumentIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          typeArgument_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex>(typeArgument_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type_argument = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex> getTypeArgumentList() {
        return java.util.Collections.unmodifiableList(typeArgument_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type_argument = 1;</code>
       */
      public int getTypeArgumentCount() {
        return typeArgument_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type_argument = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getTypeArgument(int index) {
        return typeArgument_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type_argument = 1;</code>
       */
      public Builder setTypeArgument(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeArgumentIsMutable();
        typeArgument_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type_argument = 1;</code>
       */
      public Builder setTypeArgument(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder builderForValue) {
        ensureTypeArgumentIsMutable();
        typeArgument_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type_argument = 1;</code>
       */
      public Builder addTypeArgument(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeArgumentIsMutable();
        typeArgument_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type_argument = 1;</code>
       */
      public Builder addTypeArgument(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeArgumentIsMutable();
        typeArgument_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type_argument = 1;</code>
       */
      public Builder addTypeArgument(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder builderForValue) {
        ensureTypeArgumentIsMutable();
        typeArgument_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type_argument = 1;</code>
       */
      public Builder addTypeArgument(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder builderForValue) {
        ensureTypeArgumentIsMutable();
        typeArgument_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type_argument = 1;</code>
       */
      public Builder addAllTypeArgument(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex> values) {
        ensureTypeArgumentIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, typeArgument_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type_argument = 1;</code>
       */
      public Builder clearTypeArgument() {
        typeArgument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type_argument = 1;</code>
       */
      public Builder removeTypeArgument(int index) {
        ensureTypeArgumentIsMutable();
        typeArgument_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.TypeArguments)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.TypeArguments)
  }

  public interface IrStarProjectionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrStarProjection)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional bool void = 1;</code>
     */
    boolean hasVoid();
    /**
     * <code>optional bool void = 1;</code>
     */
    boolean getVoid();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrStarProjection}
   */
  public static final class IrStarProjection extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrStarProjection)
      IrStarProjectionOrBuilder {
    // Use IrStarProjection.newBuilder() to construct.
    private IrStarProjection(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrStarProjection(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrStarProjection getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrStarProjection(
        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);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              void_ = input.readBool();
              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<IrStarProjection> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrStarProjection>() {
      public IrStarProjection parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrStarProjection(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int VOID_FIELD_NUMBER = 1;
    private boolean void_;
    /**
     * <code>optional bool void = 1;</code>
     */
    public boolean hasVoid() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional bool void = 1;</code>
     */
    public boolean getVoid() {
      return void_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBool(1, void_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(1, void_);
      }
      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.common.serialization.KotlinIr.IrStarProjection parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection 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.common.serialization.KotlinIr.IrStarProjection parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection 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.common.serialization.KotlinIr.IrStarProjection parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection 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.common.serialization.KotlinIr.IrStarProjection parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection 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.common.serialization.KotlinIr.IrStarProjection parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection 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.common.serialization.KotlinIr.IrStarProjection prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        void_ = false;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.void_ = void_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection.getDefaultInstance()) return this;
        if (other.hasVoid()) {
          setVoid(other.getVoid());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

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

      private boolean void_ ;
      /**
       * <code>optional bool void = 1;</code>
       */
      public boolean hasVoid() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional bool void = 1;</code>
       */
      public boolean getVoid() {
        return void_;
      }
      /**
       * <code>optional bool void = 1;</code>
       */
      public Builder setVoid(boolean value) {
        bitField0_ |= 0x00000001;
        void_ = value;
        
        return this;
      }
      /**
       * <code>optional bool void = 1;</code>
       */
      public Builder clearVoid() {
        bitField0_ = (bitField0_ & ~0x00000001);
        void_ = false;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrStarProjection)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrStarProjection)
  }

  public interface IrTypeProjectionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrTypeProjection)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeVariance variance = 1;</code>
     */
    boolean hasVariance();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeVariance variance = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance getVariance();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 2;</code>
     */
    boolean hasType();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getType();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrTypeProjection}
   */
  public static final class IrTypeProjection extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrTypeProjection)
      IrTypeProjectionOrBuilder {
    // Use IrTypeProjection.newBuilder() to construct.
    private IrTypeProjection(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrTypeProjection(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrTypeProjection getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrTypeProjection(
        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);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance value = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000001;
                variance_ = value;
              }
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = type_.toBuilder();
              }
              type_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(type_);
                type_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrTypeProjection> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrTypeProjection>() {
      public IrTypeProjection parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrTypeProjection(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int VARIANCE_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance variance_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeVariance variance = 1;</code>
     */
    public boolean hasVariance() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeVariance variance = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance getVariance() {
      return variance_;
    }

    public static final int TYPE_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex type_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 2;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getType() {
      return type_;
    }

    private void initFields() {
      variance_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance.IN;
      type_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeEnum(1, variance_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, type_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(1, variance_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, type_);
      }
      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.common.serialization.KotlinIr.IrTypeProjection parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection 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.common.serialization.KotlinIr.IrTypeProjection parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection 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.common.serialization.KotlinIr.IrTypeProjection parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection 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.common.serialization.KotlinIr.IrTypeProjection parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection 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.common.serialization.KotlinIr.IrTypeProjection parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection 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.common.serialization.KotlinIr.IrTypeProjection prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        variance_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance.IN;
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.variance_ = variance_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.type_ = type_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection.getDefaultInstance()) return this;
        if (other.hasVariance()) {
          setVariance(other.getVariance());
        }
        if (other.hasType()) {
          mergeType(other.getType());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance variance_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance.IN;
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeVariance variance = 1;</code>
       */
      public boolean hasVariance() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeVariance variance = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance getVariance() {
        return variance_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeVariance variance = 1;</code>
       */
      public Builder setVariance(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        variance_ = value;
        
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeVariance variance = 1;</code>
       */
      public Builder clearVariance() {
        bitField0_ = (bitField0_ & ~0x00000001);
        variance_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance.IN;
        
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex type_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 2;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getType() {
        return type_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 2;</code>
       */
      public Builder setType(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (value == null) {
          throw new NullPointerException();
        }
        type_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 2;</code>
       */
      public Builder setType(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder builderForValue) {
        type_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 2;</code>
       */
      public Builder mergeType(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            type_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance()) {
          type_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.newBuilder(type_).mergeFrom(value).buildPartial();
        } else {
          type_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 2;</code>
       */
      public Builder clearType() {
        type_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrTypeProjection)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrTypeProjection)
  }

  public interface IrTypeArgumentOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrTypeArgument)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStarProjection star = 1;</code>
     */
    boolean hasStar();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStarProjection star = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection getStar();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeProjection type = 2;</code>
     */
    boolean hasType();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeProjection type = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection getType();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrTypeArgument}
   */
  public static final class IrTypeArgument extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrTypeArgument)
      IrTypeArgumentOrBuilder {
    // Use IrTypeArgument.newBuilder() to construct.
    private IrTypeArgument(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrTypeArgument(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrTypeArgument getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrTypeArgument(
        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);
      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.KotlinIr.IrStarProjection.Builder subBuilder = null;
              if (kindCase_ == 1) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection) kind_).toBuilder();
              }
              kind_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection) kind_);
                kind_ = subBuilder.buildPartial();
              }
              kindCase_ = 1;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection.Builder subBuilder = null;
              if (kindCase_ == 2) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection) kind_).toBuilder();
              }
              kind_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection) 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<IrTypeArgument> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrTypeArgument>() {
      public IrTypeArgument parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrTypeArgument(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<IrTypeArgument> 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 {
      STAR(1),
      TYPE(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 STAR;
          case 2: return TYPE;
          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 STAR_FIELD_NUMBER = 1;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStarProjection star = 1;</code>
     */
    public boolean hasStar() {
      return kindCase_ == 1;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStarProjection star = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection getStar() {
      if (kindCase_ == 1) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection) kind_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection.getDefaultInstance();
    }

    public static final int TYPE_FIELD_NUMBER = 2;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeProjection type = 2;</code>
     */
    public boolean hasType() {
      return kindCase_ == 2;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeProjection type = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection getType() {
      if (kindCase_ == 2) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection) kind_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection.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 (hasType()) {
        if (!getType().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (kindCase_ == 1) {
        output.writeMessage(1, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection) kind_);
      }
      if (kindCase_ == 2) {
        output.writeMessage(2, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection) 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.KotlinIr.IrStarProjection) kind_);
      }
      if (kindCase_ == 2) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection) 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.common.serialization.KotlinIr.IrTypeArgument parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument 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.common.serialization.KotlinIr.IrTypeArgument parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument 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.common.serialization.KotlinIr.IrTypeArgument parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument 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.common.serialization.KotlinIr.IrTypeArgument parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument 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.common.serialization.KotlinIr.IrTypeArgument parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument 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.common.serialization.KotlinIr.IrTypeArgument prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument(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.common.serialization.KotlinIr.IrTypeArgument other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument.getDefaultInstance()) return this;
        switch (other.getKindCase()) {
          case STAR: {
            mergeStar(other.getStar());
            break;
          }
          case TYPE: {
            mergeType(other.getType());
            break;
          }
          case KIND_NOT_SET: {
            break;
          }
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

      public Builder mergeFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument) 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.IrStarProjection star = 1;</code>
       */
      public boolean hasStar() {
        return kindCase_ == 1;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStarProjection star = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection getStar() {
        if (kindCase_ == 1) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection) kind_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStarProjection star = 1;</code>
       */
      public Builder setStar(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection value) {
        if (value == null) {
          throw new NullPointerException();
        }
        kind_ = value;

        kindCase_ = 1;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStarProjection star = 1;</code>
       */
      public Builder setStar(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStarProjection.Builder builderForValue) {
        kind_ = builderForValue.build();

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

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

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeProjection type = 2;</code>
       */
      public boolean hasType() {
        return kindCase_ == 2;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeProjection type = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection getType() {
        if (kindCase_ == 2) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection) kind_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeProjection type = 2;</code>
       */
      public Builder setType(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection value) {
        if (value == null) {
          throw new NullPointerException();
        }
        kind_ = value;

        kindCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeProjection type = 2;</code>
       */
      public Builder setType(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeProjection.Builder builderForValue) {
        kind_ = builderForValue.build();

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

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrTypeArgument)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrTypeArgument)
  }

  public interface IrSimpleTypeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrSimpleType)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
     */
    boolean hasAnnotations();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations getAnnotations();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol classifier = 2;</code>
     */
    boolean hasClassifier();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol classifier = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getClassifier();

    /**
     * <code>required bool has_question_mark = 3;</code>
     */
    boolean hasHasQuestionMark();
    /**
     * <code>required bool has_question_mark = 3;</code>
     */
    boolean getHasQuestionMark();

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeArgument argument = 4;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument> 
        getArgumentList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeArgument argument = 4;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument getArgument(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeArgument argument = 4;</code>
     */
    int getArgumentCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrSimpleType}
   */
  public static final class IrSimpleType extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrSimpleType)
      IrSimpleTypeOrBuilder {
    // Use IrSimpleType.newBuilder() to construct.
    private IrSimpleType(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrSimpleType(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrSimpleType getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrSimpleType(
        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);
      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.KotlinIr.Annotations.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = annotations_.toBuilder();
              }
              annotations_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(annotations_);
                annotations_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = classifier_.toBuilder();
              }
              classifier_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(classifier_);
                classifier_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              hasQuestionMark_ = input.readBool();
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                argument_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument>();
                mutable_bitField0_ |= 0x00000008;
              }
              argument_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          argument_ = java.util.Collections.unmodifiableList(argument_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrSimpleType> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrSimpleType>() {
      public IrSimpleType parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrSimpleType(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int ANNOTATIONS_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations annotations_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
     */
    public boolean hasAnnotations() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations getAnnotations() {
      return annotations_;
    }

    public static final int CLASSIFIER_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol classifier_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol classifier = 2;</code>
     */
    public boolean hasClassifier() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol classifier = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getClassifier() {
      return classifier_;
    }

    public static final int HAS_QUESTION_MARK_FIELD_NUMBER = 3;
    private boolean hasQuestionMark_;
    /**
     * <code>required bool has_question_mark = 3;</code>
     */
    public boolean hasHasQuestionMark() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required bool has_question_mark = 3;</code>
     */
    public boolean getHasQuestionMark() {
      return hasQuestionMark_;
    }

    public static final int ARGUMENT_FIELD_NUMBER = 4;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument> argument_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeArgument argument = 4;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument> getArgumentList() {
      return argument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeArgument argument = 4;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgumentOrBuilder> 
        getArgumentOrBuilderList() {
      return argument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeArgument argument = 4;</code>
     */
    public int getArgumentCount() {
      return argument_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeArgument argument = 4;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument getArgument(int index) {
      return argument_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeArgument argument = 4;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgumentOrBuilder getArgumentOrBuilder(
        int index) {
      return argument_.get(index);
    }

    private void initFields() {
      annotations_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();
      classifier_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      hasQuestionMark_ = false;
      argument_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasAnnotations()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasClassifier()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasHasQuestionMark()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getAnnotations().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getClassifier().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getArgumentCount(); i++) {
        if (!getArgument(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, annotations_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, classifier_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBool(3, hasQuestionMark_);
      }
      for (int i = 0; i < argument_.size(); i++) {
        output.writeMessage(4, argument_.get(i));
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, annotations_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, classifier_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(3, hasQuestionMark_);
      }
      for (int i = 0; i < argument_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, argument_.get(i));
      }
      size += unknownFields.size();
      memoizedSerializedSize = size;
      return size;
    }

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

    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType 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.common.serialization.KotlinIr.IrSimpleType parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType 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.common.serialization.KotlinIr.IrSimpleType parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType 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.common.serialization.KotlinIr.IrSimpleType parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType 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.common.serialization.KotlinIr.IrSimpleType parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType 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.common.serialization.KotlinIr.IrSimpleType prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        annotations_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        classifier_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        hasQuestionMark_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        argument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.annotations_ = annotations_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.classifier_ = classifier_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.hasQuestionMark_ = hasQuestionMark_;
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          argument_ = java.util.Collections.unmodifiableList(argument_);
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.argument_ = argument_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType.getDefaultInstance()) return this;
        if (other.hasAnnotations()) {
          mergeAnnotations(other.getAnnotations());
        }
        if (other.hasClassifier()) {
          mergeClassifier(other.getClassifier());
        }
        if (other.hasHasQuestionMark()) {
          setHasQuestionMark(other.getHasQuestionMark());
        }
        if (!other.argument_.isEmpty()) {
          if (argument_.isEmpty()) {
            argument_ = other.argument_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureArgumentIsMutable();
            argument_.addAll(other.argument_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations annotations_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
       */
      public boolean hasAnnotations() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations getAnnotations() {
        return annotations_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
       */
      public Builder setAnnotations(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations value) {
        if (value == null) {
          throw new NullPointerException();
        }
        annotations_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
       */
      public Builder setAnnotations(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.Builder builderForValue) {
        annotations_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
       */
      public Builder mergeAnnotations(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            annotations_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance()) {
          annotations_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.newBuilder(annotations_).mergeFrom(value).buildPartial();
        } else {
          annotations_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
       */
      public Builder clearAnnotations() {
        annotations_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol classifier_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol classifier = 2;</code>
       */
      public boolean hasClassifier() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol classifier = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getClassifier() {
        return classifier_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol classifier = 2;</code>
       */
      public Builder setClassifier(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        classifier_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol classifier = 2;</code>
       */
      public Builder setClassifier(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        classifier_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol classifier = 2;</code>
       */
      public Builder mergeClassifier(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            classifier_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          classifier_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(classifier_).mergeFrom(value).buildPartial();
        } else {
          classifier_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol classifier = 2;</code>
       */
      public Builder clearClassifier() {
        classifier_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      private boolean hasQuestionMark_ ;
      /**
       * <code>required bool has_question_mark = 3;</code>
       */
      public boolean hasHasQuestionMark() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required bool has_question_mark = 3;</code>
       */
      public boolean getHasQuestionMark() {
        return hasQuestionMark_;
      }
      /**
       * <code>required bool has_question_mark = 3;</code>
       */
      public Builder setHasQuestionMark(boolean value) {
        bitField0_ |= 0x00000004;
        hasQuestionMark_ = value;
        
        return this;
      }
      /**
       * <code>required bool has_question_mark = 3;</code>
       */
      public Builder clearHasQuestionMark() {
        bitField0_ = (bitField0_ & ~0x00000004);
        hasQuestionMark_ = false;
        
        return this;
      }

      private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument> argument_ =
        java.util.Collections.emptyList();
      private void ensureArgumentIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          argument_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument>(argument_);
          bitField0_ |= 0x00000008;
         }
      }

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

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeArgument argument = 4;</code>
       */
      public Builder setArgument(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument.Builder builderForValue) {
        ensureArgumentIsMutable();
        argument_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeArgument argument = 4;</code>
       */
      public Builder addArgument(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureArgumentIsMutable();
        argument_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeArgument argument = 4;</code>
       */
      public Builder addArgument(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureArgumentIsMutable();
        argument_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeArgument argument = 4;</code>
       */
      public Builder addArgument(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument.Builder builderForValue) {
        ensureArgumentIsMutable();
        argument_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeArgument argument = 4;</code>
       */
      public Builder addArgument(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument.Builder builderForValue) {
        ensureArgumentIsMutable();
        argument_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeArgument argument = 4;</code>
       */
      public Builder addAllArgument(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeArgument> values) {
        ensureArgumentIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, argument_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeArgument argument = 4;</code>
       */
      public Builder clearArgument() {
        argument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);

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

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrSimpleType)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrSimpleType)
  }

  public interface IrDynamicTypeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrDynamicType)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
     */
    boolean hasAnnotations();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations getAnnotations();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrDynamicType}
   */
  public static final class IrDynamicType extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrDynamicType)
      IrDynamicTypeOrBuilder {
    // Use IrDynamicType.newBuilder() to construct.
    private IrDynamicType(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrDynamicType(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrDynamicType getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrDynamicType(
        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);
      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.KotlinIr.Annotations.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = annotations_.toBuilder();
              }
              annotations_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(annotations_);
                annotations_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              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<IrDynamicType> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrDynamicType>() {
      public IrDynamicType parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrDynamicType(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int ANNOTATIONS_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations annotations_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
     */
    public boolean hasAnnotations() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations getAnnotations() {
      return annotations_;
    }

    private void initFields() {
      annotations_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, annotations_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, annotations_);
      }
      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.common.serialization.KotlinIr.IrDynamicType parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType 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.common.serialization.KotlinIr.IrDynamicType parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType 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.common.serialization.KotlinIr.IrDynamicType parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType 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.common.serialization.KotlinIr.IrDynamicType parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType 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.common.serialization.KotlinIr.IrDynamicType parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType 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.common.serialization.KotlinIr.IrDynamicType prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        annotations_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.annotations_ = annotations_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType.getDefaultInstance()) return this;
        if (other.hasAnnotations()) {
          mergeAnnotations(other.getAnnotations());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasAnnotations()) {
          
          return false;
        }
        if (!getAnnotations().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.common.serialization.KotlinIr.IrDynamicType parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations annotations_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
       */
      public boolean hasAnnotations() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations getAnnotations() {
        return annotations_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
       */
      public Builder setAnnotations(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations value) {
        if (value == null) {
          throw new NullPointerException();
        }
        annotations_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
       */
      public Builder setAnnotations(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.Builder builderForValue) {
        annotations_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
       */
      public Builder mergeAnnotations(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            annotations_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance()) {
          annotations_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.newBuilder(annotations_).mergeFrom(value).buildPartial();
        } else {
          annotations_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
       */
      public Builder clearAnnotations() {
        annotations_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrDynamicType)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrDynamicType)
  }

  public interface IrErrorTypeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrErrorType)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
     */
    boolean hasAnnotations();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations getAnnotations();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrErrorType}
   */
  public static final class IrErrorType extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrErrorType)
      IrErrorTypeOrBuilder {
    // Use IrErrorType.newBuilder() to construct.
    private IrErrorType(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrErrorType(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrErrorType getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrErrorType(
        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);
      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.KotlinIr.Annotations.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = annotations_.toBuilder();
              }
              annotations_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(annotations_);
                annotations_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              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<IrErrorType> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrErrorType>() {
      public IrErrorType parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrErrorType(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int ANNOTATIONS_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations annotations_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
     */
    public boolean hasAnnotations() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations getAnnotations() {
      return annotations_;
    }

    private void initFields() {
      annotations_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, annotations_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, annotations_);
      }
      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.common.serialization.KotlinIr.IrErrorType parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType 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.common.serialization.KotlinIr.IrErrorType parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType 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.common.serialization.KotlinIr.IrErrorType parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType 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.common.serialization.KotlinIr.IrErrorType parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType 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.common.serialization.KotlinIr.IrErrorType parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType 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.common.serialization.KotlinIr.IrErrorType prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        annotations_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.annotations_ = annotations_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType.getDefaultInstance()) return this;
        if (other.hasAnnotations()) {
          mergeAnnotations(other.getAnnotations());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasAnnotations()) {
          
          return false;
        }
        if (!getAnnotations().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.common.serialization.KotlinIr.IrErrorType parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations annotations_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
       */
      public boolean hasAnnotations() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations getAnnotations() {
        return annotations_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
       */
      public Builder setAnnotations(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations value) {
        if (value == null) {
          throw new NullPointerException();
        }
        annotations_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
       */
      public Builder setAnnotations(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.Builder builderForValue) {
        annotations_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
       */
      public Builder mergeAnnotations(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            annotations_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance()) {
          annotations_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.newBuilder(annotations_).mergeFrom(value).buildPartial();
        } else {
          annotations_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 1;</code>
       */
      public Builder clearAnnotations() {
        annotations_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrErrorType)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrErrorType)
  }

  public interface IrTypeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrType)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSimpleType simple = 1;</code>
     */
    boolean hasSimple();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSimpleType simple = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType getSimple();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicType dynamic = 2;</code>
     */
    boolean hasDynamic();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicType dynamic = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType getDynamic();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrErrorType error = 3;</code>
     */
    boolean hasError();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrErrorType error = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType getError();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrType}
   */
  public static final class IrType extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrType)
      IrTypeOrBuilder {
    // Use IrType.newBuilder() to construct.
    private IrType(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrType(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrType getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrType(
        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);
      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.KotlinIr.IrSimpleType.Builder subBuilder = null;
              if (kindCase_ == 1) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType) kind_).toBuilder();
              }
              kind_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType) kind_);
                kind_ = subBuilder.buildPartial();
              }
              kindCase_ = 1;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType.Builder subBuilder = null;
              if (kindCase_ == 2) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType) kind_).toBuilder();
              }
              kind_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType) kind_);
                kind_ = subBuilder.buildPartial();
              }
              kindCase_ = 2;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType.Builder subBuilder = null;
              if (kindCase_ == 3) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType) kind_).toBuilder();
              }
              kind_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType) kind_);
                kind_ = subBuilder.buildPartial();
              }
              kindCase_ = 3;
              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<IrType> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrType>() {
      public IrType parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrType(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<IrType> 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 {
      SIMPLE(1),
      DYNAMIC(2),
      ERROR(3),
      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 SIMPLE;
          case 2: return DYNAMIC;
          case 3: return ERROR;
          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 SIMPLE_FIELD_NUMBER = 1;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSimpleType simple = 1;</code>
     */
    public boolean hasSimple() {
      return kindCase_ == 1;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSimpleType simple = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType getSimple() {
      if (kindCase_ == 1) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType) kind_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType.getDefaultInstance();
    }

    public static final int DYNAMIC_FIELD_NUMBER = 2;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicType dynamic = 2;</code>
     */
    public boolean hasDynamic() {
      return kindCase_ == 2;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicType dynamic = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType getDynamic() {
      if (kindCase_ == 2) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType) kind_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType.getDefaultInstance();
    }

    public static final int ERROR_FIELD_NUMBER = 3;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrErrorType error = 3;</code>
     */
    public boolean hasError() {
      return kindCase_ == 3;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrErrorType error = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType getError() {
      if (kindCase_ == 3) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType) kind_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType.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 (hasSimple()) {
        if (!getSimple().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasDynamic()) {
        if (!getDynamic().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasError()) {
        if (!getError().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.KotlinIr.IrSimpleType) kind_);
      }
      if (kindCase_ == 2) {
        output.writeMessage(2, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType) kind_);
      }
      if (kindCase_ == 3) {
        output.writeMessage(3, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType) 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.KotlinIr.IrSimpleType) kind_);
      }
      if (kindCase_ == 2) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType) kind_);
      }
      if (kindCase_ == 3) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType) 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.common.serialization.KotlinIr.IrType parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType 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.common.serialization.KotlinIr.IrType parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType 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.common.serialization.KotlinIr.IrType parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType 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.common.serialization.KotlinIr.IrType parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType 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.common.serialization.KotlinIr.IrType parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType 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.common.serialization.KotlinIr.IrType prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (kindCase_ == 1) {
          result.kind_ = kind_;
        }
        if (kindCase_ == 2) {
          result.kind_ = kind_;
        }
        if (kindCase_ == 3) {
          result.kind_ = kind_;
        }
        result.bitField0_ = to_bitField0_;
        result.kindCase_ = kindCase_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType.getDefaultInstance()) return this;
        switch (other.getKindCase()) {
          case SIMPLE: {
            mergeSimple(other.getSimple());
            break;
          }
          case DYNAMIC: {
            mergeDynamic(other.getDynamic());
            break;
          }
          case ERROR: {
            mergeError(other.getError());
            break;
          }
          case KIND_NOT_SET: {
            break;
          }
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (hasSimple()) {
          if (!getSimple().isInitialized()) {
            
            return false;
          }
        }
        if (hasDynamic()) {
          if (!getDynamic().isInitialized()) {
            
            return false;
          }
        }
        if (hasError()) {
          if (!getError().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.common.serialization.KotlinIr.IrType parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType) 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.IrSimpleType simple = 1;</code>
       */
      public boolean hasSimple() {
        return kindCase_ == 1;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSimpleType simple = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType getSimple() {
        if (kindCase_ == 1) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType) kind_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSimpleType simple = 1;</code>
       */
      public Builder setSimple(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        kind_ = value;

        kindCase_ = 1;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSimpleType simple = 1;</code>
       */
      public Builder setSimple(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSimpleType.Builder builderForValue) {
        kind_ = builderForValue.build();

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

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

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicType dynamic = 2;</code>
       */
      public boolean hasDynamic() {
        return kindCase_ == 2;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicType dynamic = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType getDynamic() {
        if (kindCase_ == 2) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType) kind_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicType dynamic = 2;</code>
       */
      public Builder setDynamic(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        kind_ = value;

        kindCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicType dynamic = 2;</code>
       */
      public Builder setDynamic(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicType.Builder builderForValue) {
        kind_ = builderForValue.build();

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

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

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrErrorType error = 3;</code>
       */
      public boolean hasError() {
        return kindCase_ == 3;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrErrorType error = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType getError() {
        if (kindCase_ == 3) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType) kind_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrErrorType error = 3;</code>
       */
      public Builder setError(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        kind_ = value;

        kindCase_ = 3;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrErrorType error = 3;</code>
       */
      public Builder setError(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType.Builder builderForValue) {
        kind_ = builderForValue.build();

        kindCase_ = 3;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrErrorType error = 3;</code>
       */
      public Builder mergeError(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType value) {
        if (kindCase_ == 3 &&
            kind_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType.getDefaultInstance()) {
          kind_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrErrorType) kind_)
              .mergeFrom(value).buildPartial();
        } else {
          kind_ = value;
        }

        kindCase_ = 3;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrErrorType error = 3;</code>
       */
      public Builder clearError() {
        if (kindCase_ == 3) {
          kindCase_ = 0;
          kind_ = null;
          
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrType)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrType)
  }

  public interface IrTypeTableOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrTypeTable)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrType types = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType> 
        getTypesList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrType types = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType getTypes(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrType types = 1;</code>
     */
    int getTypesCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrTypeTable}
   */
  public static final class IrTypeTable extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrTypeTable)
      IrTypeTableOrBuilder {
    // Use IrTypeTable.newBuilder() to construct.
    private IrTypeTable(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrTypeTable(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrTypeTable getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrTypeTable(
        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);
      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)) {
                types_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType>();
                mutable_bitField0_ |= 0x00000001;
              }
              types_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType.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)) {
          types_ = java.util.Collections.unmodifiableList(types_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrTypeTable> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrTypeTable>() {
      public IrTypeTable parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrTypeTable(input, extensionRegistry);
      }
    };

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

    public static final int TYPES_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType> types_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrType types = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType> getTypesList() {
      return types_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrType types = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOrBuilder> 
        getTypesOrBuilderList() {
      return types_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrType types = 1;</code>
     */
    public int getTypesCount() {
      return types_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrType types = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType getTypes(int index) {
      return types_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrType types = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOrBuilder getTypesOrBuilder(
        int index) {
      return types_.get(index);
    }

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

      for (int i = 0; i < getTypesCount(); i++) {
        if (!getTypes(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 < types_.size(); i++) {
        output.writeMessage(1, types_.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 < types_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, types_.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.common.serialization.KotlinIr.IrTypeTable parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeTable 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.common.serialization.KotlinIr.IrTypeTable parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeTable 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.common.serialization.KotlinIr.IrTypeTable parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeTable 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.common.serialization.KotlinIr.IrTypeTable parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeTable 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.common.serialization.KotlinIr.IrTypeTable parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeTable 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.common.serialization.KotlinIr.IrTypeTable prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

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

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeTable getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeTable.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeTable build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeTable result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeTable buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeTable result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeTable(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          types_ = java.util.Collections.unmodifiableList(types_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.types_ = types_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeTable other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeTable.getDefaultInstance()) return this;
        if (!other.types_.isEmpty()) {
          if (types_.isEmpty()) {
            types_ = other.types_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureTypesIsMutable();
            types_.addAll(other.types_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getTypesCount(); i++) {
          if (!getTypes(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.common.serialization.KotlinIr.IrTypeTable parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeTable) 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.KotlinIr.IrType> types_ =
        java.util.Collections.emptyList();
      private void ensureTypesIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          types_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType>(types_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrType types = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType> getTypesList() {
        return java.util.Collections.unmodifiableList(types_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrType types = 1;</code>
       */
      public int getTypesCount() {
        return types_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrType types = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType getTypes(int index) {
        return types_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrType types = 1;</code>
       */
      public Builder setTypes(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypesIsMutable();
        types_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrType types = 1;</code>
       */
      public Builder setTypes(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType.Builder builderForValue) {
        ensureTypesIsMutable();
        types_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrType types = 1;</code>
       */
      public Builder addTypes(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypesIsMutable();
        types_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrType types = 1;</code>
       */
      public Builder addTypes(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypesIsMutable();
        types_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrType types = 1;</code>
       */
      public Builder addTypes(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType.Builder builderForValue) {
        ensureTypesIsMutable();
        types_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrType types = 1;</code>
       */
      public Builder addTypes(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType.Builder builderForValue) {
        ensureTypesIsMutable();
        types_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrType types = 1;</code>
       */
      public Builder addAllTypes(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrType> values) {
        ensureTypesIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, types_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrType types = 1;</code>
       */
      public Builder clearTypes() {
        types_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrType types = 1;</code>
       */
      public Builder removeTypes(int index) {
        ensureTypesIsMutable();
        types_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrTypeTable)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrTypeTable)
  }

  public interface IrTypeIndexOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required int32 index = 1;</code>
     */
    boolean hasIndex();
    /**
     * <code>required int32 index = 1;</code>
     */
    int getIndex();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex}
   */
  public static final class IrTypeIndex extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex)
      IrTypeIndexOrBuilder {
    // Use IrTypeIndex.newBuilder() to construct.
    private IrTypeIndex(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrTypeIndex(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrTypeIndex getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrTypeIndex(
        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);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              index_ = input.readInt32();
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrTypeIndex> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrTypeIndex>() {
      public IrTypeIndex parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrTypeIndex(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int INDEX_FIELD_NUMBER = 1;
    private int index_;
    /**
     * <code>required int32 index = 1;</code>
     */
    public boolean hasIndex() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 index = 1;</code>
     */
    public int getIndex() {
      return index_;
    }

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

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, index_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, index_);
      }
      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.common.serialization.KotlinIr.IrTypeIndex parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex 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.common.serialization.KotlinIr.IrTypeIndex parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex 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.common.serialization.KotlinIr.IrTypeIndex parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex 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.common.serialization.KotlinIr.IrTypeIndex parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex 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.common.serialization.KotlinIr.IrTypeIndex parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex 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.common.serialization.KotlinIr.IrTypeIndex prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        index_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.index_ = index_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance()) return this;
        if (other.hasIndex()) {
          setIndex(other.getIndex());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

      private int index_ ;
      /**
       * <code>required int32 index = 1;</code>
       */
      public boolean hasIndex() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 index = 1;</code>
       */
      public int getIndex() {
        return index_;
      }
      /**
       * <code>required int32 index = 1;</code>
       */
      public Builder setIndex(int value) {
        bitField0_ |= 0x00000001;
        index_ = value;
        
        return this;
      }
      /**
       * <code>required int32 index = 1;</code>
       */
      public Builder clearIndex() {
        bitField0_ = (bitField0_ & ~0x00000001);
        index_ = 0;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex)
  }

  public interface IrBreakOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrBreak)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required int32 loop_id = 1;</code>
     */
    boolean hasLoopId();
    /**
     * <code>required int32 loop_id = 1;</code>
     */
    int getLoopId();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 2;</code>
     */
    boolean hasLabel();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getLabel();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrBreak}
   */
  public static final class IrBreak extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrBreak)
      IrBreakOrBuilder {
    // Use IrBreak.newBuilder() to construct.
    private IrBreak(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrBreak(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrBreak getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrBreak(
        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);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              loopId_ = input.readInt32();
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = label_.toBuilder();
              }
              label_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(label_);
                label_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrBreak> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrBreak>() {
      public IrBreak parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrBreak(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int LOOP_ID_FIELD_NUMBER = 1;
    private int loopId_;
    /**
     * <code>required int32 loop_id = 1;</code>
     */
    public boolean hasLoopId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 loop_id = 1;</code>
     */
    public int getLoopId() {
      return loopId_;
    }

    public static final int LABEL_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String label_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 2;</code>
     */
    public boolean hasLabel() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getLabel() {
      return label_;
    }

    private void initFields() {
      loopId_ = 0;
      label_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasLoopId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasLabel()) {
        if (!getLabel().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, loopId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, label_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, loopId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, label_);
      }
      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.common.serialization.KotlinIr.IrBreak parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak 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.common.serialization.KotlinIr.IrBreak parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak 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.common.serialization.KotlinIr.IrBreak parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak 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.common.serialization.KotlinIr.IrBreak parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak 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.common.serialization.KotlinIr.IrBreak parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak 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.common.serialization.KotlinIr.IrBreak prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        loopId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        label_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.loopId_ = loopId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.label_ = label_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak.getDefaultInstance()) return this;
        if (other.hasLoopId()) {
          setLoopId(other.getLoopId());
        }
        if (other.hasLabel()) {
          mergeLabel(other.getLabel());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasLoopId()) {
          
          return false;
        }
        if (hasLabel()) {
          if (!getLabel().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.common.serialization.KotlinIr.IrBreak parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int loopId_ ;
      /**
       * <code>required int32 loop_id = 1;</code>
       */
      public boolean hasLoopId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 loop_id = 1;</code>
       */
      public int getLoopId() {
        return loopId_;
      }
      /**
       * <code>required int32 loop_id = 1;</code>
       */
      public Builder setLoopId(int value) {
        bitField0_ |= 0x00000001;
        loopId_ = value;
        
        return this;
      }
      /**
       * <code>required int32 loop_id = 1;</code>
       */
      public Builder clearLoopId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        loopId_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String label_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 2;</code>
       */
      public boolean hasLabel() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getLabel() {
        return label_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 2;</code>
       */
      public Builder setLabel(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        label_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 2;</code>
       */
      public Builder setLabel(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        label_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 2;</code>
       */
      public Builder mergeLabel(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            label_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          label_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(label_).mergeFrom(value).buildPartial();
        } else {
          label_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 2;</code>
       */
      public Builder clearLabel() {
        label_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrBreak)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrBreak)
  }

  public interface IrBlockOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrBlock)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 1;</code>
     */
    boolean hasOrigin();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin();

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 2;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> 
        getStatementList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getStatement(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 2;</code>
     */
    int getStatementCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrBlock}
   */
  public static final class IrBlock extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrBlock)
      IrBlockOrBuilder {
    // Use IrBlock.newBuilder() to construct.
    private IrBlock(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrBlock(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrBlock getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrBlock(
        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);
      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.KotlinIr.IrStatementOrigin.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = origin_.toBuilder();
              }
              origin_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(origin_);
                origin_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                statement_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement>();
                mutable_bitField0_ |= 0x00000002;
              }
              statement_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          statement_ = java.util.Collections.unmodifiableList(statement_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrBlock> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrBlock>() {
      public IrBlock parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrBlock(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int ORIGIN_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 1;</code>
     */
    public boolean hasOrigin() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
      return origin_;
    }

    public static final int STATEMENT_FIELD_NUMBER = 2;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> statement_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 2;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> getStatementList() {
      return statement_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 2;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrBuilder> 
        getStatementOrBuilderList() {
      return statement_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 2;</code>
     */
    public int getStatementCount() {
      return statement_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getStatement(int index) {
      return statement_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrBuilder getStatementOrBuilder(
        int index) {
      return statement_.get(index);
    }

    private void initFields() {
      origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
      statement_ = 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 (hasOrigin()) {
        if (!getOrigin().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getStatementCount(); i++) {
        if (!getStatement(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, origin_);
      }
      for (int i = 0; i < statement_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, statement_.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.common.serialization.KotlinIr.IrBlock parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock 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.common.serialization.KotlinIr.IrBlock parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock 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.common.serialization.KotlinIr.IrBlock parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock 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.common.serialization.KotlinIr.IrBlock parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock 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.common.serialization.KotlinIr.IrBlock parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock 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.common.serialization.KotlinIr.IrBlock prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        statement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.origin_ = origin_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          statement_ = java.util.Collections.unmodifiableList(statement_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.statement_ = statement_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock.getDefaultInstance()) return this;
        if (other.hasOrigin()) {
          mergeOrigin(other.getOrigin());
        }
        if (!other.statement_.isEmpty()) {
          if (statement_.isEmpty()) {
            statement_ = other.statement_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureStatementIsMutable();
            statement_.addAll(other.statement_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (hasOrigin()) {
          if (!getOrigin().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getStatementCount(); i++) {
          if (!getStatement(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.common.serialization.KotlinIr.IrBlock parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 1;</code>
       */
      public boolean hasOrigin() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
        return origin_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 1;</code>
       */
      public Builder setOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (value == null) {
          throw new NullPointerException();
        }
        origin_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 1;</code>
       */
      public Builder setOrigin(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder builderForValue) {
        origin_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 1;</code>
       */
      public Builder mergeOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            origin_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance()) {
          origin_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.newBuilder(origin_).mergeFrom(value).buildPartial();
        } else {
          origin_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 1;</code>
       */
      public Builder clearOrigin() {
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();

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

      private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> statement_ =
        java.util.Collections.emptyList();
      private void ensureStatementIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          statement_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement>(statement_);
          bitField0_ |= 0x00000002;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 2;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> getStatementList() {
        return java.util.Collections.unmodifiableList(statement_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 2;</code>
       */
      public int getStatementCount() {
        return statement_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getStatement(int index) {
        return statement_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 2;</code>
       */
      public Builder setStatement(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureStatementIsMutable();
        statement_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 2;</code>
       */
      public Builder setStatement(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.Builder builderForValue) {
        ensureStatementIsMutable();
        statement_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 2;</code>
       */
      public Builder addStatement(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureStatementIsMutable();
        statement_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 2;</code>
       */
      public Builder addStatement(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureStatementIsMutable();
        statement_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 2;</code>
       */
      public Builder addStatement(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.Builder builderForValue) {
        ensureStatementIsMutable();
        statement_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 2;</code>
       */
      public Builder addStatement(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.Builder builderForValue) {
        ensureStatementIsMutable();
        statement_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 2;</code>
       */
      public Builder addAllStatement(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> values) {
        ensureStatementIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, statement_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 2;</code>
       */
      public Builder clearStatement() {
        statement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 2;</code>
       */
      public Builder removeStatement(int index) {
        ensureStatementIsMutable();
        statement_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrBlock)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrBlock)
  }

  public interface MemberAccessCommonOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression dispatch_receiver = 1;</code>
     */
    boolean hasDispatchReceiver();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression dispatch_receiver = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getDispatchReceiver();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression extension_receiver = 2;</code>
     */
    boolean hasExtensionReceiver();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression extension_receiver = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getExtensionReceiver();

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression value_argument = 3;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression> 
        getValueArgumentList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression value_argument = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression getValueArgument(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression value_argument = 3;</code>
     */
    int getValueArgumentCount();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.TypeArguments type_arguments = 4;</code>
     */
    boolean hasTypeArguments();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.TypeArguments type_arguments = 4;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments getTypeArguments();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon}
   */
  public static final class MemberAccessCommon extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon)
      MemberAccessCommonOrBuilder {
    // Use MemberAccessCommon.newBuilder() to construct.
    private MemberAccessCommon(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private MemberAccessCommon(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public MemberAccessCommon getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private MemberAccessCommon(
        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);
      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.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = dispatchReceiver_.toBuilder();
              }
              dispatchReceiver_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(dispatchReceiver_);
                dispatchReceiver_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = extensionReceiver_.toBuilder();
              }
              extensionReceiver_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(extensionReceiver_);
                extensionReceiver_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                valueArgument_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression>();
                mutable_bitField0_ |= 0x00000004;
              }
              valueArgument_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression.PARSER, extensionRegistry));
              break;
            }
            case 34: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = typeArguments_.toBuilder();
              }
              typeArguments_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(typeArguments_);
                typeArguments_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          valueArgument_ = java.util.Collections.unmodifiableList(valueArgument_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<MemberAccessCommon> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<MemberAccessCommon>() {
      public MemberAccessCommon parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new MemberAccessCommon(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int DISPATCH_RECEIVER_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression dispatchReceiver_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression dispatch_receiver = 1;</code>
     */
    public boolean hasDispatchReceiver() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression dispatch_receiver = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getDispatchReceiver() {
      return dispatchReceiver_;
    }

    public static final int EXTENSION_RECEIVER_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression extensionReceiver_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression extension_receiver = 2;</code>
     */
    public boolean hasExtensionReceiver() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression extension_receiver = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getExtensionReceiver() {
      return extensionReceiver_;
    }

    public static final int VALUE_ARGUMENT_FIELD_NUMBER = 3;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression> valueArgument_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression value_argument = 3;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression> getValueArgumentList() {
      return valueArgument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression value_argument = 3;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpressionOrBuilder> 
        getValueArgumentOrBuilderList() {
      return valueArgument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression value_argument = 3;</code>
     */
    public int getValueArgumentCount() {
      return valueArgument_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression value_argument = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression getValueArgument(int index) {
      return valueArgument_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression value_argument = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpressionOrBuilder getValueArgumentOrBuilder(
        int index) {
      return valueArgument_.get(index);
    }

    public static final int TYPE_ARGUMENTS_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments typeArguments_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.TypeArguments type_arguments = 4;</code>
     */
    public boolean hasTypeArguments() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.TypeArguments type_arguments = 4;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments getTypeArguments() {
      return typeArguments_;
    }

    private void initFields() {
      dispatchReceiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      extensionReceiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      valueArgument_ = java.util.Collections.emptyList();
      typeArguments_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTypeArguments()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasDispatchReceiver()) {
        if (!getDispatchReceiver().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasExtensionReceiver()) {
        if (!getExtensionReceiver().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getValueArgumentCount(); i++) {
        if (!getValueArgument(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!getTypeArguments().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, dispatchReceiver_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, extensionReceiver_);
      }
      for (int i = 0; i < valueArgument_.size(); i++) {
        output.writeMessage(3, valueArgument_.get(i));
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(4, typeArguments_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, dispatchReceiver_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, extensionReceiver_);
      }
      for (int i = 0; i < valueArgument_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, valueArgument_.get(i));
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, typeArguments_);
      }
      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.common.serialization.KotlinIr.MemberAccessCommon parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon 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.common.serialization.KotlinIr.MemberAccessCommon parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon 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.common.serialization.KotlinIr.MemberAccessCommon parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon 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.common.serialization.KotlinIr.MemberAccessCommon parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon 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.common.serialization.KotlinIr.MemberAccessCommon parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon 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.common.serialization.KotlinIr.MemberAccessCommon prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        dispatchReceiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        extensionReceiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        valueArgument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        typeArguments_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.dispatchReceiver_ = dispatchReceiver_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.extensionReceiver_ = extensionReceiver_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          valueArgument_ = java.util.Collections.unmodifiableList(valueArgument_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.valueArgument_ = valueArgument_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        result.typeArguments_ = typeArguments_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance()) return this;
        if (other.hasDispatchReceiver()) {
          mergeDispatchReceiver(other.getDispatchReceiver());
        }
        if (other.hasExtensionReceiver()) {
          mergeExtensionReceiver(other.getExtensionReceiver());
        }
        if (!other.valueArgument_.isEmpty()) {
          if (valueArgument_.isEmpty()) {
            valueArgument_ = other.valueArgument_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureValueArgumentIsMutable();
            valueArgument_.addAll(other.valueArgument_);
          }
          
        }
        if (other.hasTypeArguments()) {
          mergeTypeArguments(other.getTypeArguments());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTypeArguments()) {
          
          return false;
        }
        if (hasDispatchReceiver()) {
          if (!getDispatchReceiver().isInitialized()) {
            
            return false;
          }
        }
        if (hasExtensionReceiver()) {
          if (!getExtensionReceiver().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getValueArgumentCount(); i++) {
          if (!getValueArgument(i).isInitialized()) {
            
            return false;
          }
        }
        if (!getTypeArguments().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.common.serialization.KotlinIr.MemberAccessCommon parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression dispatchReceiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression dispatch_receiver = 1;</code>
       */
      public boolean hasDispatchReceiver() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression dispatch_receiver = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getDispatchReceiver() {
        return dispatchReceiver_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression dispatch_receiver = 1;</code>
       */
      public Builder setDispatchReceiver(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        dispatchReceiver_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression dispatch_receiver = 1;</code>
       */
      public Builder setDispatchReceiver(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        dispatchReceiver_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression dispatch_receiver = 1;</code>
       */
      public Builder mergeDispatchReceiver(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            dispatchReceiver_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          dispatchReceiver_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(dispatchReceiver_).mergeFrom(value).buildPartial();
        } else {
          dispatchReceiver_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression dispatch_receiver = 1;</code>
       */
      public Builder clearDispatchReceiver() {
        dispatchReceiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression extensionReceiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression extension_receiver = 2;</code>
       */
      public boolean hasExtensionReceiver() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression extension_receiver = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getExtensionReceiver() {
        return extensionReceiver_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression extension_receiver = 2;</code>
       */
      public Builder setExtensionReceiver(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        extensionReceiver_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression extension_receiver = 2;</code>
       */
      public Builder setExtensionReceiver(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        extensionReceiver_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression extension_receiver = 2;</code>
       */
      public Builder mergeExtensionReceiver(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            extensionReceiver_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          extensionReceiver_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(extensionReceiver_).mergeFrom(value).buildPartial();
        } else {
          extensionReceiver_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression extension_receiver = 2;</code>
       */
      public Builder clearExtensionReceiver() {
        extensionReceiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

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

      private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression> valueArgument_ =
        java.util.Collections.emptyList();
      private void ensureValueArgumentIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          valueArgument_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression>(valueArgument_);
          bitField0_ |= 0x00000004;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression value_argument = 3;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression> getValueArgumentList() {
        return java.util.Collections.unmodifiableList(valueArgument_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression value_argument = 3;</code>
       */
      public int getValueArgumentCount() {
        return valueArgument_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression value_argument = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression getValueArgument(int index) {
        return valueArgument_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression value_argument = 3;</code>
       */
      public Builder setValueArgument(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureValueArgumentIsMutable();
        valueArgument_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression value_argument = 3;</code>
       */
      public Builder setValueArgument(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression.Builder builderForValue) {
        ensureValueArgumentIsMutable();
        valueArgument_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression value_argument = 3;</code>
       */
      public Builder addValueArgument(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureValueArgumentIsMutable();
        valueArgument_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression value_argument = 3;</code>
       */
      public Builder addValueArgument(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureValueArgumentIsMutable();
        valueArgument_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression value_argument = 3;</code>
       */
      public Builder addValueArgument(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression.Builder builderForValue) {
        ensureValueArgumentIsMutable();
        valueArgument_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression value_argument = 3;</code>
       */
      public Builder addValueArgument(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression.Builder builderForValue) {
        ensureValueArgumentIsMutable();
        valueArgument_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression value_argument = 3;</code>
       */
      public Builder addAllValueArgument(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression> values) {
        ensureValueArgumentIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, valueArgument_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression value_argument = 3;</code>
       */
      public Builder clearValueArgument() {
        valueArgument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression value_argument = 3;</code>
       */
      public Builder removeValueArgument(int index) {
        ensureValueArgumentIsMutable();
        valueArgument_.remove(index);

        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments typeArguments_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.TypeArguments type_arguments = 4;</code>
       */
      public boolean hasTypeArguments() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.TypeArguments type_arguments = 4;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments getTypeArguments() {
        return typeArguments_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.TypeArguments type_arguments = 4;</code>
       */
      public Builder setTypeArguments(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments value) {
        if (value == null) {
          throw new NullPointerException();
        }
        typeArguments_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.TypeArguments type_arguments = 4;</code>
       */
      public Builder setTypeArguments(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments.Builder builderForValue) {
        typeArguments_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.TypeArguments type_arguments = 4;</code>
       */
      public Builder mergeTypeArguments(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            typeArguments_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments.getDefaultInstance()) {
          typeArguments_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments.newBuilder(typeArguments_).mergeFrom(value).buildPartial();
        } else {
          typeArguments_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.TypeArguments type_arguments = 4;</code>
       */
      public Builder clearTypeArguments() {
        typeArguments_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.TypeArguments.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon)
  }

  public interface IrCallOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrCall)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    boolean hasSymbol();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
     */
    boolean hasMemberAccess();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon getMemberAccess();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol super = 3;</code>
     */
    boolean hasSuper();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol super = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSuper();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 4;</code>
     */
    boolean hasOrigin();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 4;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrCall}
   */
  public static final class IrCall extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrCall)
      IrCallOrBuilder {
    // Use IrCall.newBuilder() to construct.
    private IrCall(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrCall(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrCall getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrCall(
        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);
      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.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = symbol_.toBuilder();
              }
              symbol_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(symbol_);
                symbol_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = memberAccess_.toBuilder();
              }
              memberAccess_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(memberAccess_);
                memberAccess_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = super_.toBuilder();
              }
              super_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(super_);
                super_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 34: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = origin_.toBuilder();
              }
              origin_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(origin_);
                origin_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              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<IrCall> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrCall>() {
      public IrCall parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrCall(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int SYMBOL_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public boolean hasSymbol() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
      return symbol_;
    }

    public static final int MEMBER_ACCESS_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon memberAccess_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
     */
    public boolean hasMemberAccess() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon getMemberAccess() {
      return memberAccess_;
    }

    public static final int SUPER_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol super_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol super = 3;</code>
     */
    public boolean hasSuper() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol super = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSuper() {
      return super_;
    }

    public static final int ORIGIN_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 4;</code>
     */
    public boolean hasOrigin() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 4;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
      return origin_;
    }

    private void initFields() {
      symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();
      super_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasSymbol()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMemberAccess()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getSymbol().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getMemberAccess().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasSuper()) {
        if (!getSuper().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasOrigin()) {
        if (!getOrigin().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, symbol_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, memberAccess_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, super_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, origin_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, symbol_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, memberAccess_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, super_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, origin_);
      }
      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.common.serialization.KotlinIr.IrCall parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall 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.common.serialization.KotlinIr.IrCall parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall 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.common.serialization.KotlinIr.IrCall parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall 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.common.serialization.KotlinIr.IrCall parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall 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.common.serialization.KotlinIr.IrCall parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall 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.common.serialization.KotlinIr.IrCall prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        super_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.symbol_ = symbol_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.memberAccess_ = memberAccess_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.super_ = super_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.origin_ = origin_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall.getDefaultInstance()) return this;
        if (other.hasSymbol()) {
          mergeSymbol(other.getSymbol());
        }
        if (other.hasMemberAccess()) {
          mergeMemberAccess(other.getMemberAccess());
        }
        if (other.hasSuper()) {
          mergeSuper(other.getSuper());
        }
        if (other.hasOrigin()) {
          mergeOrigin(other.getOrigin());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSymbol()) {
          
          return false;
        }
        if (!hasMemberAccess()) {
          
          return false;
        }
        if (!getSymbol().isInitialized()) {
          
          return false;
        }
        if (!getMemberAccess().isInitialized()) {
          
          return false;
        }
        if (hasSuper()) {
          if (!getSuper().isInitialized()) {
            
            return false;
          }
        }
        if (hasOrigin()) {
          if (!getOrigin().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.common.serialization.KotlinIr.IrCall parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public boolean hasSymbol() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
        return symbol_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        symbol_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        symbol_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder mergeSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            symbol_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          symbol_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(symbol_).mergeFrom(value).buildPartial();
        } else {
          symbol_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder clearSymbol() {
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
       */
      public boolean hasMemberAccess() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon getMemberAccess() {
        return memberAccess_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
       */
      public Builder setMemberAccess(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon value) {
        if (value == null) {
          throw new NullPointerException();
        }
        memberAccess_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
       */
      public Builder setMemberAccess(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.Builder builderForValue) {
        memberAccess_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
       */
      public Builder mergeMemberAccess(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            memberAccess_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance()) {
          memberAccess_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.newBuilder(memberAccess_).mergeFrom(value).buildPartial();
        } else {
          memberAccess_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
       */
      public Builder clearMemberAccess() {
        memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol super_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol super = 3;</code>
       */
      public boolean hasSuper() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol super = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSuper() {
        return super_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol super = 3;</code>
       */
      public Builder setSuper(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        super_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol super = 3;</code>
       */
      public Builder setSuper(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        super_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol super = 3;</code>
       */
      public Builder mergeSuper(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            super_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          super_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(super_).mergeFrom(value).buildPartial();
        } else {
          super_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol super = 3;</code>
       */
      public Builder clearSuper() {
        super_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 4;</code>
       */
      public boolean hasOrigin() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 4;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
        return origin_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 4;</code>
       */
      public Builder setOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (value == null) {
          throw new NullPointerException();
        }
        origin_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 4;</code>
       */
      public Builder setOrigin(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder builderForValue) {
        origin_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 4;</code>
       */
      public Builder mergeOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            origin_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance()) {
          origin_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.newBuilder(origin_).mergeFrom(value).buildPartial();
        } else {
          origin_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 4;</code>
       */
      public Builder clearOrigin() {
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrCall)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrCall)
  }

  public interface IrConstructorCallOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    boolean hasSymbol();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol();

    /**
     * <code>required int32 constructor_type_arguments_count = 2;</code>
     */
    boolean hasConstructorTypeArgumentsCount();
    /**
     * <code>required int32 constructor_type_arguments_count = 2;</code>
     */
    int getConstructorTypeArgumentsCount();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 3;</code>
     */
    boolean hasMemberAccess();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon getMemberAccess();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall}
   */
  public static final class IrConstructorCall extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall)
      IrConstructorCallOrBuilder {
    // Use IrConstructorCall.newBuilder() to construct.
    private IrConstructorCall(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrConstructorCall(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrConstructorCall getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrConstructorCall(
        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);
      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.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = symbol_.toBuilder();
              }
              symbol_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(symbol_);
                symbol_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              constructorTypeArgumentsCount_ = input.readInt32();
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = memberAccess_.toBuilder();
              }
              memberAccess_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(memberAccess_);
                memberAccess_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              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<IrConstructorCall> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrConstructorCall>() {
      public IrConstructorCall parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrConstructorCall(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int SYMBOL_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public boolean hasSymbol() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
      return symbol_;
    }

    public static final int CONSTRUCTOR_TYPE_ARGUMENTS_COUNT_FIELD_NUMBER = 2;
    private int constructorTypeArgumentsCount_;
    /**
     * <code>required int32 constructor_type_arguments_count = 2;</code>
     */
    public boolean hasConstructorTypeArgumentsCount() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 constructor_type_arguments_count = 2;</code>
     */
    public int getConstructorTypeArgumentsCount() {
      return constructorTypeArgumentsCount_;
    }

    public static final int MEMBER_ACCESS_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon memberAccess_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 3;</code>
     */
    public boolean hasMemberAccess() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon getMemberAccess() {
      return memberAccess_;
    }

    private void initFields() {
      symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      constructorTypeArgumentsCount_ = 0;
      memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasSymbol()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasConstructorTypeArgumentsCount()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMemberAccess()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getSymbol().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getMemberAccess().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, symbol_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, constructorTypeArgumentsCount_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, memberAccess_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, symbol_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(2, constructorTypeArgumentsCount_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, memberAccess_);
      }
      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.common.serialization.KotlinIr.IrConstructorCall parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall 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.common.serialization.KotlinIr.IrConstructorCall parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall 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.common.serialization.KotlinIr.IrConstructorCall parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall 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.common.serialization.KotlinIr.IrConstructorCall parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall 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.common.serialization.KotlinIr.IrConstructorCall parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall 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.common.serialization.KotlinIr.IrConstructorCall prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        constructorTypeArgumentsCount_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.symbol_ = symbol_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.constructorTypeArgumentsCount_ = constructorTypeArgumentsCount_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.memberAccess_ = memberAccess_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall.getDefaultInstance()) return this;
        if (other.hasSymbol()) {
          mergeSymbol(other.getSymbol());
        }
        if (other.hasConstructorTypeArgumentsCount()) {
          setConstructorTypeArgumentsCount(other.getConstructorTypeArgumentsCount());
        }
        if (other.hasMemberAccess()) {
          mergeMemberAccess(other.getMemberAccess());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSymbol()) {
          
          return false;
        }
        if (!hasConstructorTypeArgumentsCount()) {
          
          return false;
        }
        if (!hasMemberAccess()) {
          
          return false;
        }
        if (!getSymbol().isInitialized()) {
          
          return false;
        }
        if (!getMemberAccess().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.common.serialization.KotlinIr.IrConstructorCall parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public boolean hasSymbol() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
        return symbol_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        symbol_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        symbol_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder mergeSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            symbol_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          symbol_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(symbol_).mergeFrom(value).buildPartial();
        } else {
          symbol_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder clearSymbol() {
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      private int constructorTypeArgumentsCount_ ;
      /**
       * <code>required int32 constructor_type_arguments_count = 2;</code>
       */
      public boolean hasConstructorTypeArgumentsCount() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 constructor_type_arguments_count = 2;</code>
       */
      public int getConstructorTypeArgumentsCount() {
        return constructorTypeArgumentsCount_;
      }
      /**
       * <code>required int32 constructor_type_arguments_count = 2;</code>
       */
      public Builder setConstructorTypeArgumentsCount(int value) {
        bitField0_ |= 0x00000002;
        constructorTypeArgumentsCount_ = value;
        
        return this;
      }
      /**
       * <code>required int32 constructor_type_arguments_count = 2;</code>
       */
      public Builder clearConstructorTypeArgumentsCount() {
        bitField0_ = (bitField0_ & ~0x00000002);
        constructorTypeArgumentsCount_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 3;</code>
       */
      public boolean hasMemberAccess() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon getMemberAccess() {
        return memberAccess_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 3;</code>
       */
      public Builder setMemberAccess(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon value) {
        if (value == null) {
          throw new NullPointerException();
        }
        memberAccess_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 3;</code>
       */
      public Builder setMemberAccess(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.Builder builderForValue) {
        memberAccess_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 3;</code>
       */
      public Builder mergeMemberAccess(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            memberAccess_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance()) {
          memberAccess_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.newBuilder(memberAccess_).mergeFrom(value).buildPartial();
        } else {
          memberAccess_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 3;</code>
       */
      public Builder clearMemberAccess() {
        memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall)
  }

  public interface IrFunctionReferenceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrFunctionReference)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    boolean hasSymbol();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
     */
    boolean hasOrigin();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 3;</code>
     */
    boolean hasMemberAccess();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon getMemberAccess();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrFunctionReference}
   */
  public static final class IrFunctionReference extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrFunctionReference)
      IrFunctionReferenceOrBuilder {
    // Use IrFunctionReference.newBuilder() to construct.
    private IrFunctionReference(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrFunctionReference(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrFunctionReference getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrFunctionReference(
        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);
      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.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = symbol_.toBuilder();
              }
              symbol_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(symbol_);
                symbol_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = origin_.toBuilder();
              }
              origin_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(origin_);
                origin_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = memberAccess_.toBuilder();
              }
              memberAccess_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(memberAccess_);
                memberAccess_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              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<IrFunctionReference> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrFunctionReference>() {
      public IrFunctionReference parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrFunctionReference(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int SYMBOL_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public boolean hasSymbol() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
      return symbol_;
    }

    public static final int ORIGIN_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
     */
    public boolean hasOrigin() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
      return origin_;
    }

    public static final int MEMBER_ACCESS_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon memberAccess_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 3;</code>
     */
    public boolean hasMemberAccess() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon getMemberAccess() {
      return memberAccess_;
    }

    private void initFields() {
      symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
      memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasSymbol()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMemberAccess()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getSymbol().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasOrigin()) {
        if (!getOrigin().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!getMemberAccess().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, symbol_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, origin_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, memberAccess_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, symbol_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, origin_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, memberAccess_);
      }
      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.common.serialization.KotlinIr.IrFunctionReference parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference 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.common.serialization.KotlinIr.IrFunctionReference parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference 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.common.serialization.KotlinIr.IrFunctionReference parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference 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.common.serialization.KotlinIr.IrFunctionReference parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference 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.common.serialization.KotlinIr.IrFunctionReference parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference 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.common.serialization.KotlinIr.IrFunctionReference prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.symbol_ = symbol_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.origin_ = origin_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.memberAccess_ = memberAccess_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference.getDefaultInstance()) return this;
        if (other.hasSymbol()) {
          mergeSymbol(other.getSymbol());
        }
        if (other.hasOrigin()) {
          mergeOrigin(other.getOrigin());
        }
        if (other.hasMemberAccess()) {
          mergeMemberAccess(other.getMemberAccess());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSymbol()) {
          
          return false;
        }
        if (!hasMemberAccess()) {
          
          return false;
        }
        if (!getSymbol().isInitialized()) {
          
          return false;
        }
        if (hasOrigin()) {
          if (!getOrigin().isInitialized()) {
            
            return false;
          }
        }
        if (!getMemberAccess().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.common.serialization.KotlinIr.IrFunctionReference parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public boolean hasSymbol() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
        return symbol_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        symbol_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        symbol_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder mergeSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            symbol_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          symbol_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(symbol_).mergeFrom(value).buildPartial();
        } else {
          symbol_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder clearSymbol() {
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public boolean hasOrigin() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
        return origin_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public Builder setOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (value == null) {
          throw new NullPointerException();
        }
        origin_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public Builder setOrigin(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder builderForValue) {
        origin_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public Builder mergeOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            origin_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance()) {
          origin_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.newBuilder(origin_).mergeFrom(value).buildPartial();
        } else {
          origin_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public Builder clearOrigin() {
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 3;</code>
       */
      public boolean hasMemberAccess() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon getMemberAccess() {
        return memberAccess_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 3;</code>
       */
      public Builder setMemberAccess(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon value) {
        if (value == null) {
          throw new NullPointerException();
        }
        memberAccess_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 3;</code>
       */
      public Builder setMemberAccess(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.Builder builderForValue) {
        memberAccess_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 3;</code>
       */
      public Builder mergeMemberAccess(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            memberAccess_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance()) {
          memberAccess_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.newBuilder(memberAccess_).mergeFrom(value).buildPartial();
        } else {
          memberAccess_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 3;</code>
       */
      public Builder clearMemberAccess() {
        memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrFunctionReference)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrFunctionReference)
  }

  public interface IrLocalDelegatedPropertyReferenceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedPropertyReference)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol delegate = 1;</code>
     */
    boolean hasDelegate();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol delegate = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getDelegate();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol getter = 2;</code>
     */
    boolean hasGetter();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol getter = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getGetter();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol setter = 3;</code>
     */
    boolean hasSetter();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol setter = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSetter();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 4;</code>
     */
    boolean hasSymbol();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 4;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5;</code>
     */
    boolean hasOrigin();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedPropertyReference}
   */
  public static final class IrLocalDelegatedPropertyReference extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedPropertyReference)
      IrLocalDelegatedPropertyReferenceOrBuilder {
    // Use IrLocalDelegatedPropertyReference.newBuilder() to construct.
    private IrLocalDelegatedPropertyReference(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrLocalDelegatedPropertyReference(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrLocalDelegatedPropertyReference getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrLocalDelegatedPropertyReference(
        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);
      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.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = delegate_.toBuilder();
              }
              delegate_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(delegate_);
                delegate_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = getter_.toBuilder();
              }
              getter_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(getter_);
                getter_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = setter_.toBuilder();
              }
              setter_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(setter_);
                setter_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 34: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = symbol_.toBuilder();
              }
              symbol_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(symbol_);
                symbol_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 42: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                subBuilder = origin_.toBuilder();
              }
              origin_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(origin_);
                origin_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrLocalDelegatedPropertyReference> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrLocalDelegatedPropertyReference>() {
      public IrLocalDelegatedPropertyReference parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrLocalDelegatedPropertyReference(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int DELEGATE_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol delegate_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol delegate = 1;</code>
     */
    public boolean hasDelegate() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol delegate = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getDelegate() {
      return delegate_;
    }

    public static final int GETTER_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getter_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol getter = 2;</code>
     */
    public boolean hasGetter() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol getter = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getGetter() {
      return getter_;
    }

    public static final int SETTER_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol setter_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol setter = 3;</code>
     */
    public boolean hasSetter() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol setter = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSetter() {
      return setter_;
    }

    public static final int SYMBOL_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 4;</code>
     */
    public boolean hasSymbol() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 4;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
      return symbol_;
    }

    public static final int ORIGIN_FIELD_NUMBER = 5;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5;</code>
     */
    public boolean hasOrigin() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
      return origin_;
    }

    private void initFields() {
      delegate_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      getter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      setter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasDelegate()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasSymbol()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getDelegate().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasGetter()) {
        if (!getGetter().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSetter()) {
        if (!getSetter().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!getSymbol().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasOrigin()) {
        if (!getOrigin().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, delegate_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, getter_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, setter_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, symbol_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(5, origin_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, delegate_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, getter_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, setter_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, symbol_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, origin_);
      }
      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.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference 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.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference 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.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference 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.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference 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.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference 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.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        delegate_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        getter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        setter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.delegate_ = delegate_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.getter_ = getter_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.setter_ = setter_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.symbol_ = symbol_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.origin_ = origin_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference.getDefaultInstance()) return this;
        if (other.hasDelegate()) {
          mergeDelegate(other.getDelegate());
        }
        if (other.hasGetter()) {
          mergeGetter(other.getGetter());
        }
        if (other.hasSetter()) {
          mergeSetter(other.getSetter());
        }
        if (other.hasSymbol()) {
          mergeSymbol(other.getSymbol());
        }
        if (other.hasOrigin()) {
          mergeOrigin(other.getOrigin());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasDelegate()) {
          
          return false;
        }
        if (!hasSymbol()) {
          
          return false;
        }
        if (!getDelegate().isInitialized()) {
          
          return false;
        }
        if (hasGetter()) {
          if (!getGetter().isInitialized()) {
            
            return false;
          }
        }
        if (hasSetter()) {
          if (!getSetter().isInitialized()) {
            
            return false;
          }
        }
        if (!getSymbol().isInitialized()) {
          
          return false;
        }
        if (hasOrigin()) {
          if (!getOrigin().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.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol delegate_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol delegate = 1;</code>
       */
      public boolean hasDelegate() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol delegate = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getDelegate() {
        return delegate_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol delegate = 1;</code>
       */
      public Builder setDelegate(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        delegate_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol delegate = 1;</code>
       */
      public Builder setDelegate(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        delegate_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol delegate = 1;</code>
       */
      public Builder mergeDelegate(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            delegate_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          delegate_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(delegate_).mergeFrom(value).buildPartial();
        } else {
          delegate_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol delegate = 1;</code>
       */
      public Builder clearDelegate() {
        delegate_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol getter = 2;</code>
       */
      public boolean hasGetter() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol getter = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getGetter() {
        return getter_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol getter = 2;</code>
       */
      public Builder setGetter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        getter_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol getter = 2;</code>
       */
      public Builder setGetter(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        getter_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol getter = 2;</code>
       */
      public Builder mergeGetter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            getter_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          getter_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(getter_).mergeFrom(value).buildPartial();
        } else {
          getter_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol getter = 2;</code>
       */
      public Builder clearGetter() {
        getter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol setter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol setter = 3;</code>
       */
      public boolean hasSetter() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol setter = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSetter() {
        return setter_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol setter = 3;</code>
       */
      public Builder setSetter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        setter_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol setter = 3;</code>
       */
      public Builder setSetter(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        setter_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol setter = 3;</code>
       */
      public Builder mergeSetter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            setter_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          setter_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(setter_).mergeFrom(value).buildPartial();
        } else {
          setter_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol setter = 3;</code>
       */
      public Builder clearSetter() {
        setter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 4;</code>
       */
      public boolean hasSymbol() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 4;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
        return symbol_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 4;</code>
       */
      public Builder setSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        symbol_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 4;</code>
       */
      public Builder setSymbol(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        symbol_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 4;</code>
       */
      public Builder mergeSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            symbol_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          symbol_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(symbol_).mergeFrom(value).buildPartial();
        } else {
          symbol_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 4;</code>
       */
      public Builder clearSymbol() {
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5;</code>
       */
      public boolean hasOrigin() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
        return origin_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5;</code>
       */
      public Builder setOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (value == null) {
          throw new NullPointerException();
        }
        origin_ = value;

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5;</code>
       */
      public Builder setOrigin(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder builderForValue) {
        origin_ = builderForValue.build();

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5;</code>
       */
      public Builder mergeOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (((bitField0_ & 0x00000010) == 0x00000010) &&
            origin_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance()) {
          origin_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.newBuilder(origin_).mergeFrom(value).buildPartial();
        } else {
          origin_ = value;
        }

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5;</code>
       */
      public Builder clearOrigin() {
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedPropertyReference)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedPropertyReference)
  }

  public interface IrPropertyReferenceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrPropertyReference)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol field = 1;</code>
     */
    boolean hasField();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol field = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getField();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol getter = 2;</code>
     */
    boolean hasGetter();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol getter = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getGetter();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol setter = 3;</code>
     */
    boolean hasSetter();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol setter = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSetter();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 4;</code>
     */
    boolean hasOrigin();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 4;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 5;</code>
     */
    boolean hasMemberAccess();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 5;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon getMemberAccess();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 6;</code>
     */
    boolean hasSymbol();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 6;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrPropertyReference}
   */
  public static final class IrPropertyReference extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrPropertyReference)
      IrPropertyReferenceOrBuilder {
    // Use IrPropertyReference.newBuilder() to construct.
    private IrPropertyReference(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrPropertyReference(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrPropertyReference getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrPropertyReference(
        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);
      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.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = field_.toBuilder();
              }
              field_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(field_);
                field_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = getter_.toBuilder();
              }
              getter_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(getter_);
                getter_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = setter_.toBuilder();
              }
              setter_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(setter_);
                setter_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 34: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = origin_.toBuilder();
              }
              origin_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(origin_);
                origin_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 42: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                subBuilder = memberAccess_.toBuilder();
              }
              memberAccess_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(memberAccess_);
                memberAccess_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
            case 50: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000020) == 0x00000020)) {
                subBuilder = symbol_.toBuilder();
              }
              symbol_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(symbol_);
                symbol_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000020;
              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<IrPropertyReference> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrPropertyReference>() {
      public IrPropertyReference parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrPropertyReference(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int FIELD_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol field_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol field = 1;</code>
     */
    public boolean hasField() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol field = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getField() {
      return field_;
    }

    public static final int GETTER_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getter_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol getter = 2;</code>
     */
    public boolean hasGetter() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol getter = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getGetter() {
      return getter_;
    }

    public static final int SETTER_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol setter_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol setter = 3;</code>
     */
    public boolean hasSetter() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol setter = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSetter() {
      return setter_;
    }

    public static final int ORIGIN_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 4;</code>
     */
    public boolean hasOrigin() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 4;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
      return origin_;
    }

    public static final int MEMBER_ACCESS_FIELD_NUMBER = 5;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon memberAccess_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 5;</code>
     */
    public boolean hasMemberAccess() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 5;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon getMemberAccess() {
      return memberAccess_;
    }

    public static final int SYMBOL_FIELD_NUMBER = 6;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 6;</code>
     */
    public boolean hasSymbol() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 6;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
      return symbol_;
    }

    private void initFields() {
      field_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      getter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      setter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
      memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();
      symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasMemberAccess()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasSymbol()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasField()) {
        if (!getField().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasGetter()) {
        if (!getGetter().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSetter()) {
        if (!getSetter().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasOrigin()) {
        if (!getOrigin().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!getMemberAccess().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getSymbol().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, field_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, getter_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, setter_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, origin_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(5, memberAccess_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeMessage(6, symbol_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, field_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, getter_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, setter_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, origin_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, memberAccess_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(6, symbol_);
      }
      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.common.serialization.KotlinIr.IrPropertyReference parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference 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.common.serialization.KotlinIr.IrPropertyReference parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference 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.common.serialization.KotlinIr.IrPropertyReference parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference 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.common.serialization.KotlinIr.IrPropertyReference parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference 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.common.serialization.KotlinIr.IrPropertyReference parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference 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.common.serialization.KotlinIr.IrPropertyReference prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        field_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        getter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        setter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000010);
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.field_ = field_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.getter_ = getter_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.setter_ = setter_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.origin_ = origin_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.memberAccess_ = memberAccess_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.symbol_ = symbol_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference.getDefaultInstance()) return this;
        if (other.hasField()) {
          mergeField(other.getField());
        }
        if (other.hasGetter()) {
          mergeGetter(other.getGetter());
        }
        if (other.hasSetter()) {
          mergeSetter(other.getSetter());
        }
        if (other.hasOrigin()) {
          mergeOrigin(other.getOrigin());
        }
        if (other.hasMemberAccess()) {
          mergeMemberAccess(other.getMemberAccess());
        }
        if (other.hasSymbol()) {
          mergeSymbol(other.getSymbol());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasMemberAccess()) {
          
          return false;
        }
        if (!hasSymbol()) {
          
          return false;
        }
        if (hasField()) {
          if (!getField().isInitialized()) {
            
            return false;
          }
        }
        if (hasGetter()) {
          if (!getGetter().isInitialized()) {
            
            return false;
          }
        }
        if (hasSetter()) {
          if (!getSetter().isInitialized()) {
            
            return false;
          }
        }
        if (hasOrigin()) {
          if (!getOrigin().isInitialized()) {
            
            return false;
          }
        }
        if (!getMemberAccess().isInitialized()) {
          
          return false;
        }
        if (!getSymbol().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.common.serialization.KotlinIr.IrPropertyReference parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol field_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol field = 1;</code>
       */
      public boolean hasField() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol field = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getField() {
        return field_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol field = 1;</code>
       */
      public Builder setField(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        field_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol field = 1;</code>
       */
      public Builder setField(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        field_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol field = 1;</code>
       */
      public Builder mergeField(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            field_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          field_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(field_).mergeFrom(value).buildPartial();
        } else {
          field_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol field = 1;</code>
       */
      public Builder clearField() {
        field_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol getter = 2;</code>
       */
      public boolean hasGetter() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol getter = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getGetter() {
        return getter_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol getter = 2;</code>
       */
      public Builder setGetter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        getter_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol getter = 2;</code>
       */
      public Builder setGetter(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        getter_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol getter = 2;</code>
       */
      public Builder mergeGetter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            getter_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          getter_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(getter_).mergeFrom(value).buildPartial();
        } else {
          getter_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol getter = 2;</code>
       */
      public Builder clearGetter() {
        getter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol setter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol setter = 3;</code>
       */
      public boolean hasSetter() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol setter = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSetter() {
        return setter_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol setter = 3;</code>
       */
      public Builder setSetter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        setter_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol setter = 3;</code>
       */
      public Builder setSetter(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        setter_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol setter = 3;</code>
       */
      public Builder mergeSetter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            setter_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          setter_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(setter_).mergeFrom(value).buildPartial();
        } else {
          setter_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol setter = 3;</code>
       */
      public Builder clearSetter() {
        setter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 4;</code>
       */
      public boolean hasOrigin() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 4;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
        return origin_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 4;</code>
       */
      public Builder setOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (value == null) {
          throw new NullPointerException();
        }
        origin_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 4;</code>
       */
      public Builder setOrigin(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder builderForValue) {
        origin_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 4;</code>
       */
      public Builder mergeOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            origin_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance()) {
          origin_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.newBuilder(origin_).mergeFrom(value).buildPartial();
        } else {
          origin_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 4;</code>
       */
      public Builder clearOrigin() {
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 5;</code>
       */
      public boolean hasMemberAccess() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 5;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon getMemberAccess() {
        return memberAccess_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 5;</code>
       */
      public Builder setMemberAccess(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon value) {
        if (value == null) {
          throw new NullPointerException();
        }
        memberAccess_ = value;

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 5;</code>
       */
      public Builder setMemberAccess(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.Builder builderForValue) {
        memberAccess_ = builderForValue.build();

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 5;</code>
       */
      public Builder mergeMemberAccess(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon value) {
        if (((bitField0_ & 0x00000010) == 0x00000010) &&
            memberAccess_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance()) {
          memberAccess_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.newBuilder(memberAccess_).mergeFrom(value).buildPartial();
        } else {
          memberAccess_ = value;
        }

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 5;</code>
       */
      public Builder clearMemberAccess() {
        memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 6;</code>
       */
      public boolean hasSymbol() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 6;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
        return symbol_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 6;</code>
       */
      public Builder setSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        symbol_ = value;

        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 6;</code>
       */
      public Builder setSymbol(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        symbol_ = builderForValue.build();

        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 6;</code>
       */
      public Builder mergeSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000020) == 0x00000020) &&
            symbol_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          symbol_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(symbol_).mergeFrom(value).buildPartial();
        } else {
          symbol_ = value;
        }

        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 6;</code>
       */
      public Builder clearSymbol() {
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrPropertyReference)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrPropertyReference)
  }

  public interface IrCompositeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrComposite)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> 
        getStatementList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getStatement(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
     */
    int getStatementCount();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
     */
    boolean hasOrigin();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrComposite}
   */
  public static final class IrComposite extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrComposite)
      IrCompositeOrBuilder {
    // Use IrComposite.newBuilder() to construct.
    private IrComposite(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrComposite(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrComposite getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrComposite(
        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);
      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)) {
                statement_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement>();
                mutable_bitField0_ |= 0x00000001;
              }
              statement_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.PARSER, extensionRegistry));
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = origin_.toBuilder();
              }
              origin_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(origin_);
                origin_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              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)) {
          statement_ = java.util.Collections.unmodifiableList(statement_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrComposite> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrComposite>() {
      public IrComposite parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrComposite(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int STATEMENT_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> statement_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> getStatementList() {
      return statement_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrBuilder> 
        getStatementOrBuilderList() {
      return statement_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
     */
    public int getStatementCount() {
      return statement_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getStatement(int index) {
      return statement_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrBuilder getStatementOrBuilder(
        int index) {
      return statement_.get(index);
    }

    public static final int ORIGIN_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
     */
    public boolean hasOrigin() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
      return origin_;
    }

    private void initFields() {
      statement_ = java.util.Collections.emptyList();
      origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getStatementCount(); i++) {
        if (!getStatement(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasOrigin()) {
        if (!getOrigin().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 < statement_.size(); i++) {
        output.writeMessage(1, statement_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(2, origin_);
      }
      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 < statement_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, statement_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, origin_);
      }
      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.common.serialization.KotlinIr.IrComposite parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite 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.common.serialization.KotlinIr.IrComposite parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite 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.common.serialization.KotlinIr.IrComposite parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite 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.common.serialization.KotlinIr.IrComposite parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite 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.common.serialization.KotlinIr.IrComposite parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite 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.common.serialization.KotlinIr.IrComposite prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        statement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          statement_ = java.util.Collections.unmodifiableList(statement_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.statement_ = statement_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000001;
        }
        result.origin_ = origin_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite.getDefaultInstance()) return this;
        if (!other.statement_.isEmpty()) {
          if (statement_.isEmpty()) {
            statement_ = other.statement_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureStatementIsMutable();
            statement_.addAll(other.statement_);
          }
          
        }
        if (other.hasOrigin()) {
          mergeOrigin(other.getOrigin());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getStatementCount(); i++) {
          if (!getStatement(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasOrigin()) {
          if (!getOrigin().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.common.serialization.KotlinIr.IrComposite parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite) 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.KotlinIr.IrStatement> statement_ =
        java.util.Collections.emptyList();
      private void ensureStatementIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          statement_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement>(statement_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> getStatementList() {
        return java.util.Collections.unmodifiableList(statement_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public int getStatementCount() {
        return statement_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getStatement(int index) {
        return statement_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public Builder setStatement(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureStatementIsMutable();
        statement_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public Builder setStatement(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.Builder builderForValue) {
        ensureStatementIsMutable();
        statement_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public Builder addStatement(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureStatementIsMutable();
        statement_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public Builder addStatement(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureStatementIsMutable();
        statement_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public Builder addStatement(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.Builder builderForValue) {
        ensureStatementIsMutable();
        statement_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public Builder addStatement(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.Builder builderForValue) {
        ensureStatementIsMutable();
        statement_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public Builder addAllStatement(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> values) {
        ensureStatementIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, statement_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public Builder clearStatement() {
        statement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public Builder removeStatement(int index) {
        ensureStatementIsMutable();
        statement_.remove(index);

        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public boolean hasOrigin() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
        return origin_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public Builder setOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (value == null) {
          throw new NullPointerException();
        }
        origin_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public Builder setOrigin(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder builderForValue) {
        origin_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public Builder mergeOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            origin_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance()) {
          origin_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.newBuilder(origin_).mergeFrom(value).buildPartial();
        } else {
          origin_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public Builder clearOrigin() {
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrComposite)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrComposite)
  }

  public interface IrClassReferenceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrClassReference)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol class_symbol = 1;</code>
     */
    boolean hasClassSymbol();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol class_symbol = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getClassSymbol();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex class_type = 2;</code>
     */
    boolean hasClassType();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex class_type = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getClassType();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrClassReference}
   */
  public static final class IrClassReference extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrClassReference)
      IrClassReferenceOrBuilder {
    // Use IrClassReference.newBuilder() to construct.
    private IrClassReference(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrClassReference(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrClassReference getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrClassReference(
        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);
      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.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = classSymbol_.toBuilder();
              }
              classSymbol_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(classSymbol_);
                classSymbol_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = classType_.toBuilder();
              }
              classType_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(classType_);
                classType_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrClassReference> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrClassReference>() {
      public IrClassReference parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrClassReference(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int CLASS_SYMBOL_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol classSymbol_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol class_symbol = 1;</code>
     */
    public boolean hasClassSymbol() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol class_symbol = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getClassSymbol() {
      return classSymbol_;
    }

    public static final int CLASS_TYPE_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex classType_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex class_type = 2;</code>
     */
    public boolean hasClassType() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex class_type = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getClassType() {
      return classType_;
    }

    private void initFields() {
      classSymbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      classType_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasClassSymbol()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasClassType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getClassSymbol().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getClassType().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, classSymbol_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, classType_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, classSymbol_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, classType_);
      }
      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.common.serialization.KotlinIr.IrClassReference parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference 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.common.serialization.KotlinIr.IrClassReference parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference 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.common.serialization.KotlinIr.IrClassReference parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference 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.common.serialization.KotlinIr.IrClassReference parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference 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.common.serialization.KotlinIr.IrClassReference parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference 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.common.serialization.KotlinIr.IrClassReference prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        classSymbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        classType_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.classSymbol_ = classSymbol_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.classType_ = classType_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference.getDefaultInstance()) return this;
        if (other.hasClassSymbol()) {
          mergeClassSymbol(other.getClassSymbol());
        }
        if (other.hasClassType()) {
          mergeClassType(other.getClassType());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasClassSymbol()) {
          
          return false;
        }
        if (!hasClassType()) {
          
          return false;
        }
        if (!getClassSymbol().isInitialized()) {
          
          return false;
        }
        if (!getClassType().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.common.serialization.KotlinIr.IrClassReference parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol classSymbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol class_symbol = 1;</code>
       */
      public boolean hasClassSymbol() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol class_symbol = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getClassSymbol() {
        return classSymbol_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol class_symbol = 1;</code>
       */
      public Builder setClassSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        classSymbol_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol class_symbol = 1;</code>
       */
      public Builder setClassSymbol(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        classSymbol_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol class_symbol = 1;</code>
       */
      public Builder mergeClassSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            classSymbol_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          classSymbol_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(classSymbol_).mergeFrom(value).buildPartial();
        } else {
          classSymbol_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol class_symbol = 1;</code>
       */
      public Builder clearClassSymbol() {
        classSymbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex classType_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex class_type = 2;</code>
       */
      public boolean hasClassType() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex class_type = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getClassType() {
        return classType_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex class_type = 2;</code>
       */
      public Builder setClassType(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (value == null) {
          throw new NullPointerException();
        }
        classType_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex class_type = 2;</code>
       */
      public Builder setClassType(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder builderForValue) {
        classType_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex class_type = 2;</code>
       */
      public Builder mergeClassType(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            classType_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance()) {
          classType_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.newBuilder(classType_).mergeFrom(value).buildPartial();
        } else {
          classType_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex class_type = 2;</code>
       */
      public Builder clearClassType() {
        classType_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrClassReference)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrClassReference)
  }

  public interface IrConstOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrConst)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional bool null = 1;</code>
     */
    boolean hasNull();
    /**
     * <code>optional bool null = 1;</code>
     */
    boolean getNull();

    /**
     * <code>optional bool boolean = 2;</code>
     */
    boolean hasBoolean();
    /**
     * <code>optional bool boolean = 2;</code>
     */
    boolean getBoolean();

    /**
     * <code>optional int32 char = 3;</code>
     */
    boolean hasChar();
    /**
     * <code>optional int32 char = 3;</code>
     */
    int getChar();

    /**
     * <code>optional int32 byte = 4;</code>
     */
    boolean hasByte();
    /**
     * <code>optional int32 byte = 4;</code>
     */
    int getByte();

    /**
     * <code>optional int32 short = 5;</code>
     */
    boolean hasShort();
    /**
     * <code>optional int32 short = 5;</code>
     */
    int getShort();

    /**
     * <code>optional int32 int = 6;</code>
     */
    boolean hasInt();
    /**
     * <code>optional int32 int = 6;</code>
     */
    int getInt();

    /**
     * <code>optional int64 long = 7;</code>
     */
    boolean hasLong();
    /**
     * <code>optional int64 long = 7;</code>
     */
    long getLong();

    /**
     * <code>optional float float = 8;</code>
     */
    boolean hasFloat();
    /**
     * <code>optional float float = 8;</code>
     */
    float getFloat();

    /**
     * <code>optional double double = 9;</code>
     */
    boolean hasDouble();
    /**
     * <code>optional double double = 9;</code>
     */
    double getDouble();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String string = 10;</code>
     */
    boolean hasString();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String string = 10;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getString();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrConst}
   */
  public static final class IrConst extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrConst)
      IrConstOrBuilder {
    // Use IrConst.newBuilder() to construct.
    private IrConst(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrConst(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrConst getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrConst(
        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);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              valueCase_ = 1;
              value_ = input.readBool();
              break;
            }
            case 16: {
              valueCase_ = 2;
              value_ = input.readBool();
              break;
            }
            case 24: {
              valueCase_ = 3;
              value_ = input.readInt32();
              break;
            }
            case 32: {
              valueCase_ = 4;
              value_ = input.readInt32();
              break;
            }
            case 40: {
              valueCase_ = 5;
              value_ = input.readInt32();
              break;
            }
            case 48: {
              valueCase_ = 6;
              value_ = input.readInt32();
              break;
            }
            case 56: {
              valueCase_ = 7;
              value_ = input.readInt64();
              break;
            }
            case 69: {
              valueCase_ = 8;
              value_ = input.readFloat();
              break;
            }
            case 73: {
              valueCase_ = 9;
              value_ = input.readDouble();
              break;
            }
            case 82: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder subBuilder = null;
              if (valueCase_ == 10) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String) value_).toBuilder();
              }
              value_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 10;
              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<IrConst> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrConst>() {
      public IrConst parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrConst(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    private int valueCase_ = 0;
    private java.lang.Object value_;
    public enum ValueCase
        implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
      NULL(1),
      BOOLEAN(2),
      CHAR(3),
      BYTE(4),
      SHORT(5),
      INT(6),
      LONG(7),
      FLOAT(8),
      DOUBLE(9),
      STRING(10),
      VALUE_NOT_SET(0);
      private int value = 0;
      private ValueCase(int value) {
        this.value = value;
      }
      public static ValueCase valueOf(int value) {
        switch (value) {
          case 1: return NULL;
          case 2: return BOOLEAN;
          case 3: return CHAR;
          case 4: return BYTE;
          case 5: return SHORT;
          case 6: return INT;
          case 7: return LONG;
          case 8: return FLOAT;
          case 9: return DOUBLE;
          case 10: return STRING;
          case 0: return VALUE_NOT_SET;
          default: throw new java.lang.IllegalArgumentException(
            "Value is undefined for this oneof enum.");
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public ValueCase
    getValueCase() {
      return ValueCase.valueOf(
          valueCase_);
    }

    public static final int NULL_FIELD_NUMBER = 1;
    /**
     * <code>optional bool null = 1;</code>
     */
    public boolean hasNull() {
      return valueCase_ == 1;
    }
    /**
     * <code>optional bool null = 1;</code>
     */
    public boolean getNull() {
      if (valueCase_ == 1) {
        return (java.lang.Boolean) value_;
      }
      return false;
    }

    public static final int BOOLEAN_FIELD_NUMBER = 2;
    /**
     * <code>optional bool boolean = 2;</code>
     */
    public boolean hasBoolean() {
      return valueCase_ == 2;
    }
    /**
     * <code>optional bool boolean = 2;</code>
     */
    public boolean getBoolean() {
      if (valueCase_ == 2) {
        return (java.lang.Boolean) value_;
      }
      return false;
    }

    public static final int CHAR_FIELD_NUMBER = 3;
    /**
     * <code>optional int32 char = 3;</code>
     */
    public boolean hasChar() {
      return valueCase_ == 3;
    }
    /**
     * <code>optional int32 char = 3;</code>
     */
    public int getChar() {
      if (valueCase_ == 3) {
        return (java.lang.Integer) value_;
      }
      return 0;
    }

    public static final int BYTE_FIELD_NUMBER = 4;
    /**
     * <code>optional int32 byte = 4;</code>
     */
    public boolean hasByte() {
      return valueCase_ == 4;
    }
    /**
     * <code>optional int32 byte = 4;</code>
     */
    public int getByte() {
      if (valueCase_ == 4) {
        return (java.lang.Integer) value_;
      }
      return 0;
    }

    public static final int SHORT_FIELD_NUMBER = 5;
    /**
     * <code>optional int32 short = 5;</code>
     */
    public boolean hasShort() {
      return valueCase_ == 5;
    }
    /**
     * <code>optional int32 short = 5;</code>
     */
    public int getShort() {
      if (valueCase_ == 5) {
        return (java.lang.Integer) value_;
      }
      return 0;
    }

    public static final int INT_FIELD_NUMBER = 6;
    /**
     * <code>optional int32 int = 6;</code>
     */
    public boolean hasInt() {
      return valueCase_ == 6;
    }
    /**
     * <code>optional int32 int = 6;</code>
     */
    public int getInt() {
      if (valueCase_ == 6) {
        return (java.lang.Integer) value_;
      }
      return 0;
    }

    public static final int LONG_FIELD_NUMBER = 7;
    /**
     * <code>optional int64 long = 7;</code>
     */
    public boolean hasLong() {
      return valueCase_ == 7;
    }
    /**
     * <code>optional int64 long = 7;</code>
     */
    public long getLong() {
      if (valueCase_ == 7) {
        return (java.lang.Long) value_;
      }
      return 0L;
    }

    public static final int FLOAT_FIELD_NUMBER = 8;
    /**
     * <code>optional float float = 8;</code>
     */
    public boolean hasFloat() {
      return valueCase_ == 8;
    }
    /**
     * <code>optional float float = 8;</code>
     */
    public float getFloat() {
      if (valueCase_ == 8) {
        return (java.lang.Float) value_;
      }
      return 0F;
    }

    public static final int DOUBLE_FIELD_NUMBER = 9;
    /**
     * <code>optional double double = 9;</code>
     */
    public boolean hasDouble() {
      return valueCase_ == 9;
    }
    /**
     * <code>optional double double = 9;</code>
     */
    public double getDouble() {
      if (valueCase_ == 9) {
        return (java.lang.Double) value_;
      }
      return 0D;
    }

    public static final int STRING_FIELD_NUMBER = 10;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String string = 10;</code>
     */
    public boolean hasString() {
      return valueCase_ == 10;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String string = 10;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getString() {
      if (valueCase_ == 10) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String) value_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.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 (hasString()) {
        if (!getString().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (valueCase_ == 1) {
        output.writeBool(
            1, (boolean)((java.lang.Boolean) value_));
      }
      if (valueCase_ == 2) {
        output.writeBool(
            2, (boolean)((java.lang.Boolean) value_));
      }
      if (valueCase_ == 3) {
        output.writeInt32(
            3, (int)((java.lang.Integer) value_));
      }
      if (valueCase_ == 4) {
        output.writeInt32(
            4, (int)((java.lang.Integer) value_));
      }
      if (valueCase_ == 5) {
        output.writeInt32(
            5, (int)((java.lang.Integer) value_));
      }
      if (valueCase_ == 6) {
        output.writeInt32(
            6, (int)((java.lang.Integer) value_));
      }
      if (valueCase_ == 7) {
        output.writeInt64(
            7, (long)((java.lang.Long) value_));
      }
      if (valueCase_ == 8) {
        output.writeFloat(
            8, (float)((java.lang.Float) value_));
      }
      if (valueCase_ == 9) {
        output.writeDouble(
            9, (double)((java.lang.Double) value_));
      }
      if (valueCase_ == 10) {
        output.writeMessage(10, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String) value_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (valueCase_ == 1) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(
              1, (boolean)((java.lang.Boolean) value_));
      }
      if (valueCase_ == 2) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(
              2, (boolean)((java.lang.Boolean) value_));
      }
      if (valueCase_ == 3) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(
              3, (int)((java.lang.Integer) value_));
      }
      if (valueCase_ == 4) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(
              4, (int)((java.lang.Integer) value_));
      }
      if (valueCase_ == 5) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(
              5, (int)((java.lang.Integer) value_));
      }
      if (valueCase_ == 6) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(
              6, (int)((java.lang.Integer) value_));
      }
      if (valueCase_ == 7) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt64Size(
              7, (long)((java.lang.Long) value_));
      }
      if (valueCase_ == 8) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeFloatSize(
              8, (float)((java.lang.Float) value_));
      }
      if (valueCase_ == 9) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeDoubleSize(
              9, (double)((java.lang.Double) value_));
      }
      if (valueCase_ == 10) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(10, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String) value_);
      }
      size += unknownFields.size();
      memoizedSerializedSize = size;
      return size;
    }

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

    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst 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.common.serialization.KotlinIr.IrConst parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst 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.common.serialization.KotlinIr.IrConst parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst 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.common.serialization.KotlinIr.IrConst parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst 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.common.serialization.KotlinIr.IrConst parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst 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.common.serialization.KotlinIr.IrConst prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        valueCase_ = 0;
        value_ = null;
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (valueCase_ == 1) {
          result.value_ = value_;
        }
        if (valueCase_ == 2) {
          result.value_ = value_;
        }
        if (valueCase_ == 3) {
          result.value_ = value_;
        }
        if (valueCase_ == 4) {
          result.value_ = value_;
        }
        if (valueCase_ == 5) {
          result.value_ = value_;
        }
        if (valueCase_ == 6) {
          result.value_ = value_;
        }
        if (valueCase_ == 7) {
          result.value_ = value_;
        }
        if (valueCase_ == 8) {
          result.value_ = value_;
        }
        if (valueCase_ == 9) {
          result.value_ = value_;
        }
        if (valueCase_ == 10) {
          result.value_ = value_;
        }
        result.bitField0_ = to_bitField0_;
        result.valueCase_ = valueCase_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst.getDefaultInstance()) return this;
        switch (other.getValueCase()) {
          case NULL: {
            setNull(other.getNull());
            break;
          }
          case BOOLEAN: {
            setBoolean(other.getBoolean());
            break;
          }
          case CHAR: {
            setChar(other.getChar());
            break;
          }
          case BYTE: {
            setByte(other.getByte());
            break;
          }
          case SHORT: {
            setShort(other.getShort());
            break;
          }
          case INT: {
            setInt(other.getInt());
            break;
          }
          case LONG: {
            setLong(other.getLong());
            break;
          }
          case FLOAT: {
            setFloat(other.getFloat());
            break;
          }
          case DOUBLE: {
            setDouble(other.getDouble());
            break;
          }
          case STRING: {
            mergeString(other.getString());
            break;
          }
          case VALUE_NOT_SET: {
            break;
          }
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (hasString()) {
          if (!getString().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.common.serialization.KotlinIr.IrConst parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int valueCase_ = 0;
      private java.lang.Object value_;
      public ValueCase
          getValueCase() {
        return ValueCase.valueOf(
            valueCase_);
      }

      public Builder clearValue() {
        valueCase_ = 0;
        value_ = null;
        return this;
      }

      private int bitField0_;

      /**
       * <code>optional bool null = 1;</code>
       */
      public boolean hasNull() {
        return valueCase_ == 1;
      }
      /**
       * <code>optional bool null = 1;</code>
       */
      public boolean getNull() {
        if (valueCase_ == 1) {
          return (java.lang.Boolean) value_;
        }
        return false;
      }
      /**
       * <code>optional bool null = 1;</code>
       */
      public Builder setNull(boolean value) {
        valueCase_ = 1;
        value_ = value;
        
        return this;
      }
      /**
       * <code>optional bool null = 1;</code>
       */
      public Builder clearNull() {
        if (valueCase_ == 1) {
          valueCase_ = 0;
          value_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional bool boolean = 2;</code>
       */
      public boolean hasBoolean() {
        return valueCase_ == 2;
      }
      /**
       * <code>optional bool boolean = 2;</code>
       */
      public boolean getBoolean() {
        if (valueCase_ == 2) {
          return (java.lang.Boolean) value_;
        }
        return false;
      }
      /**
       * <code>optional bool boolean = 2;</code>
       */
      public Builder setBoolean(boolean value) {
        valueCase_ = 2;
        value_ = value;
        
        return this;
      }
      /**
       * <code>optional bool boolean = 2;</code>
       */
      public Builder clearBoolean() {
        if (valueCase_ == 2) {
          valueCase_ = 0;
          value_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional int32 char = 3;</code>
       */
      public boolean hasChar() {
        return valueCase_ == 3;
      }
      /**
       * <code>optional int32 char = 3;</code>
       */
      public int getChar() {
        if (valueCase_ == 3) {
          return (java.lang.Integer) value_;
        }
        return 0;
      }
      /**
       * <code>optional int32 char = 3;</code>
       */
      public Builder setChar(int value) {
        valueCase_ = 3;
        value_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 char = 3;</code>
       */
      public Builder clearChar() {
        if (valueCase_ == 3) {
          valueCase_ = 0;
          value_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional int32 byte = 4;</code>
       */
      public boolean hasByte() {
        return valueCase_ == 4;
      }
      /**
       * <code>optional int32 byte = 4;</code>
       */
      public int getByte() {
        if (valueCase_ == 4) {
          return (java.lang.Integer) value_;
        }
        return 0;
      }
      /**
       * <code>optional int32 byte = 4;</code>
       */
      public Builder setByte(int value) {
        valueCase_ = 4;
        value_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 byte = 4;</code>
       */
      public Builder clearByte() {
        if (valueCase_ == 4) {
          valueCase_ = 0;
          value_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional int32 short = 5;</code>
       */
      public boolean hasShort() {
        return valueCase_ == 5;
      }
      /**
       * <code>optional int32 short = 5;</code>
       */
      public int getShort() {
        if (valueCase_ == 5) {
          return (java.lang.Integer) value_;
        }
        return 0;
      }
      /**
       * <code>optional int32 short = 5;</code>
       */
      public Builder setShort(int value) {
        valueCase_ = 5;
        value_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 short = 5;</code>
       */
      public Builder clearShort() {
        if (valueCase_ == 5) {
          valueCase_ = 0;
          value_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional int32 int = 6;</code>
       */
      public boolean hasInt() {
        return valueCase_ == 6;
      }
      /**
       * <code>optional int32 int = 6;</code>
       */
      public int getInt() {
        if (valueCase_ == 6) {
          return (java.lang.Integer) value_;
        }
        return 0;
      }
      /**
       * <code>optional int32 int = 6;</code>
       */
      public Builder setInt(int value) {
        valueCase_ = 6;
        value_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 int = 6;</code>
       */
      public Builder clearInt() {
        if (valueCase_ == 6) {
          valueCase_ = 0;
          value_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional int64 long = 7;</code>
       */
      public boolean hasLong() {
        return valueCase_ == 7;
      }
      /**
       * <code>optional int64 long = 7;</code>
       */
      public long getLong() {
        if (valueCase_ == 7) {
          return (java.lang.Long) value_;
        }
        return 0L;
      }
      /**
       * <code>optional int64 long = 7;</code>
       */
      public Builder setLong(long value) {
        valueCase_ = 7;
        value_ = value;
        
        return this;
      }
      /**
       * <code>optional int64 long = 7;</code>
       */
      public Builder clearLong() {
        if (valueCase_ == 7) {
          valueCase_ = 0;
          value_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional float float = 8;</code>
       */
      public boolean hasFloat() {
        return valueCase_ == 8;
      }
      /**
       * <code>optional float float = 8;</code>
       */
      public float getFloat() {
        if (valueCase_ == 8) {
          return (java.lang.Float) value_;
        }
        return 0F;
      }
      /**
       * <code>optional float float = 8;</code>
       */
      public Builder setFloat(float value) {
        valueCase_ = 8;
        value_ = value;
        
        return this;
      }
      /**
       * <code>optional float float = 8;</code>
       */
      public Builder clearFloat() {
        if (valueCase_ == 8) {
          valueCase_ = 0;
          value_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional double double = 9;</code>
       */
      public boolean hasDouble() {
        return valueCase_ == 9;
      }
      /**
       * <code>optional double double = 9;</code>
       */
      public double getDouble() {
        if (valueCase_ == 9) {
          return (java.lang.Double) value_;
        }
        return 0D;
      }
      /**
       * <code>optional double double = 9;</code>
       */
      public Builder setDouble(double value) {
        valueCase_ = 9;
        value_ = value;
        
        return this;
      }
      /**
       * <code>optional double double = 9;</code>
       */
      public Builder clearDouble() {
        if (valueCase_ == 9) {
          valueCase_ = 0;
          value_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String string = 10;</code>
       */
      public boolean hasString() {
        return valueCase_ == 10;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String string = 10;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getString() {
        if (valueCase_ == 10) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String) value_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String string = 10;</code>
       */
      public Builder setString(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        value_ = value;

        valueCase_ = 10;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String string = 10;</code>
       */
      public Builder setString(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        value_ = builderForValue.build();

        valueCase_ = 10;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String string = 10;</code>
       */
      public Builder mergeString(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (valueCase_ == 10 &&
            value_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          value_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String) value_)
              .mergeFrom(value).buildPartial();
        } else {
          value_ = value;
        }

        valueCase_ = 10;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String string = 10;</code>
       */
      public Builder clearString() {
        if (valueCase_ == 10) {
          valueCase_ = 0;
          value_ = null;
          
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrConst)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrConst)
  }

  public interface IrContinueOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrContinue)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required int32 loop_id = 1;</code>
     */
    boolean hasLoopId();
    /**
     * <code>required int32 loop_id = 1;</code>
     */
    int getLoopId();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 2;</code>
     */
    boolean hasLabel();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getLabel();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrContinue}
   */
  public static final class IrContinue extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrContinue)
      IrContinueOrBuilder {
    // Use IrContinue.newBuilder() to construct.
    private IrContinue(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrContinue(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrContinue getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrContinue(
        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);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              loopId_ = input.readInt32();
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = label_.toBuilder();
              }
              label_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(label_);
                label_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrContinue> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrContinue>() {
      public IrContinue parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrContinue(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int LOOP_ID_FIELD_NUMBER = 1;
    private int loopId_;
    /**
     * <code>required int32 loop_id = 1;</code>
     */
    public boolean hasLoopId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 loop_id = 1;</code>
     */
    public int getLoopId() {
      return loopId_;
    }

    public static final int LABEL_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String label_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 2;</code>
     */
    public boolean hasLabel() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getLabel() {
      return label_;
    }

    private void initFields() {
      loopId_ = 0;
      label_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasLoopId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasLabel()) {
        if (!getLabel().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, loopId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, label_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, loopId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, label_);
      }
      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.common.serialization.KotlinIr.IrContinue parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue 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.common.serialization.KotlinIr.IrContinue parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue 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.common.serialization.KotlinIr.IrContinue parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue 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.common.serialization.KotlinIr.IrContinue parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue 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.common.serialization.KotlinIr.IrContinue parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue 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.common.serialization.KotlinIr.IrContinue prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        loopId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        label_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.loopId_ = loopId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.label_ = label_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue.getDefaultInstance()) return this;
        if (other.hasLoopId()) {
          setLoopId(other.getLoopId());
        }
        if (other.hasLabel()) {
          mergeLabel(other.getLabel());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasLoopId()) {
          
          return false;
        }
        if (hasLabel()) {
          if (!getLabel().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.common.serialization.KotlinIr.IrContinue parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int loopId_ ;
      /**
       * <code>required int32 loop_id = 1;</code>
       */
      public boolean hasLoopId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 loop_id = 1;</code>
       */
      public int getLoopId() {
        return loopId_;
      }
      /**
       * <code>required int32 loop_id = 1;</code>
       */
      public Builder setLoopId(int value) {
        bitField0_ |= 0x00000001;
        loopId_ = value;
        
        return this;
      }
      /**
       * <code>required int32 loop_id = 1;</code>
       */
      public Builder clearLoopId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        loopId_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String label_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 2;</code>
       */
      public boolean hasLabel() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getLabel() {
        return label_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 2;</code>
       */
      public Builder setLabel(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        label_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 2;</code>
       */
      public Builder setLabel(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        label_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 2;</code>
       */
      public Builder mergeLabel(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            label_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          label_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(label_).mergeFrom(value).buildPartial();
        } else {
          label_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 2;</code>
       */
      public Builder clearLabel() {
        label_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrContinue)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrContinue)
  }

  public interface IrDelegatingConstructorCallOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrDelegatingConstructorCall)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    boolean hasSymbol();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
     */
    boolean hasMemberAccess();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon getMemberAccess();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrDelegatingConstructorCall}
   */
  public static final class IrDelegatingConstructorCall extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrDelegatingConstructorCall)
      IrDelegatingConstructorCallOrBuilder {
    // Use IrDelegatingConstructorCall.newBuilder() to construct.
    private IrDelegatingConstructorCall(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrDelegatingConstructorCall(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrDelegatingConstructorCall getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrDelegatingConstructorCall(
        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);
      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.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = symbol_.toBuilder();
              }
              symbol_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(symbol_);
                symbol_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = memberAccess_.toBuilder();
              }
              memberAccess_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(memberAccess_);
                memberAccess_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrDelegatingConstructorCall> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrDelegatingConstructorCall>() {
      public IrDelegatingConstructorCall parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrDelegatingConstructorCall(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int SYMBOL_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public boolean hasSymbol() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
      return symbol_;
    }

    public static final int MEMBER_ACCESS_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon memberAccess_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
     */
    public boolean hasMemberAccess() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon getMemberAccess() {
      return memberAccess_;
    }

    private void initFields() {
      symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasSymbol()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMemberAccess()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getSymbol().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getMemberAccess().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, symbol_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, memberAccess_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, symbol_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, memberAccess_);
      }
      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.common.serialization.KotlinIr.IrDelegatingConstructorCall parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall 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.common.serialization.KotlinIr.IrDelegatingConstructorCall parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall 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.common.serialization.KotlinIr.IrDelegatingConstructorCall parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall 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.common.serialization.KotlinIr.IrDelegatingConstructorCall parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall 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.common.serialization.KotlinIr.IrDelegatingConstructorCall parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall 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.common.serialization.KotlinIr.IrDelegatingConstructorCall prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.symbol_ = symbol_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.memberAccess_ = memberAccess_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall.getDefaultInstance()) return this;
        if (other.hasSymbol()) {
          mergeSymbol(other.getSymbol());
        }
        if (other.hasMemberAccess()) {
          mergeMemberAccess(other.getMemberAccess());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSymbol()) {
          
          return false;
        }
        if (!hasMemberAccess()) {
          
          return false;
        }
        if (!getSymbol().isInitialized()) {
          
          return false;
        }
        if (!getMemberAccess().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.common.serialization.KotlinIr.IrDelegatingConstructorCall parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public boolean hasSymbol() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
        return symbol_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        symbol_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        symbol_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder mergeSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            symbol_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          symbol_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(symbol_).mergeFrom(value).buildPartial();
        } else {
          symbol_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder clearSymbol() {
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
       */
      public boolean hasMemberAccess() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon getMemberAccess() {
        return memberAccess_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
       */
      public Builder setMemberAccess(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon value) {
        if (value == null) {
          throw new NullPointerException();
        }
        memberAccess_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
       */
      public Builder setMemberAccess(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.Builder builderForValue) {
        memberAccess_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
       */
      public Builder mergeMemberAccess(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            memberAccess_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance()) {
          memberAccess_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.newBuilder(memberAccess_).mergeFrom(value).buildPartial();
        } else {
          memberAccess_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
       */
      public Builder clearMemberAccess() {
        memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrDelegatingConstructorCall)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrDelegatingConstructorCall)
  }

  public interface IrDoWhileOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrDoWhile)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Loop loop = 1;</code>
     */
    boolean hasLoop();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Loop loop = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop getLoop();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrDoWhile}
   */
  public static final class IrDoWhile extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrDoWhile)
      IrDoWhileOrBuilder {
    // Use IrDoWhile.newBuilder() to construct.
    private IrDoWhile(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrDoWhile(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrDoWhile getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrDoWhile(
        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);
      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.KotlinIr.Loop.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = loop_.toBuilder();
              }
              loop_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(loop_);
                loop_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              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<IrDoWhile> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrDoWhile>() {
      public IrDoWhile parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrDoWhile(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int LOOP_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop loop_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Loop loop = 1;</code>
     */
    public boolean hasLoop() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Loop loop = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop getLoop() {
      return loop_;
    }

    private void initFields() {
      loop_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, loop_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, loop_);
      }
      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.common.serialization.KotlinIr.IrDoWhile parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile 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.common.serialization.KotlinIr.IrDoWhile parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile 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.common.serialization.KotlinIr.IrDoWhile parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile 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.common.serialization.KotlinIr.IrDoWhile parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile 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.common.serialization.KotlinIr.IrDoWhile parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile 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.common.serialization.KotlinIr.IrDoWhile prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        loop_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.loop_ = loop_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile.getDefaultInstance()) return this;
        if (other.hasLoop()) {
          mergeLoop(other.getLoop());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasLoop()) {
          
          return false;
        }
        if (!getLoop().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.common.serialization.KotlinIr.IrDoWhile parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop loop_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Loop loop = 1;</code>
       */
      public boolean hasLoop() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Loop loop = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop getLoop() {
        return loop_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Loop loop = 1;</code>
       */
      public Builder setLoop(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop value) {
        if (value == null) {
          throw new NullPointerException();
        }
        loop_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Loop loop = 1;</code>
       */
      public Builder setLoop(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop.Builder builderForValue) {
        loop_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Loop loop = 1;</code>
       */
      public Builder mergeLoop(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            loop_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop.getDefaultInstance()) {
          loop_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop.newBuilder(loop_).mergeFrom(value).buildPartial();
        } else {
          loop_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Loop loop = 1;</code>
       */
      public Builder clearLoop() {
        loop_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrDoWhile)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrDoWhile)
  }

  public interface IrEnumConstructorCallOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrEnumConstructorCall)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    boolean hasSymbol();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
     */
    boolean hasMemberAccess();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon getMemberAccess();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrEnumConstructorCall}
   */
  public static final class IrEnumConstructorCall extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrEnumConstructorCall)
      IrEnumConstructorCallOrBuilder {
    // Use IrEnumConstructorCall.newBuilder() to construct.
    private IrEnumConstructorCall(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrEnumConstructorCall(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrEnumConstructorCall getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrEnumConstructorCall(
        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);
      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.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = symbol_.toBuilder();
              }
              symbol_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(symbol_);
                symbol_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = memberAccess_.toBuilder();
              }
              memberAccess_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(memberAccess_);
                memberAccess_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrEnumConstructorCall> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrEnumConstructorCall>() {
      public IrEnumConstructorCall parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrEnumConstructorCall(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int SYMBOL_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public boolean hasSymbol() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
      return symbol_;
    }

    public static final int MEMBER_ACCESS_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon memberAccess_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
     */
    public boolean hasMemberAccess() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon getMemberAccess() {
      return memberAccess_;
    }

    private void initFields() {
      symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasSymbol()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMemberAccess()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getSymbol().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getMemberAccess().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, symbol_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, memberAccess_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, symbol_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, memberAccess_);
      }
      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.common.serialization.KotlinIr.IrEnumConstructorCall parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall 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.common.serialization.KotlinIr.IrEnumConstructorCall parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall 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.common.serialization.KotlinIr.IrEnumConstructorCall parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall 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.common.serialization.KotlinIr.IrEnumConstructorCall parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall 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.common.serialization.KotlinIr.IrEnumConstructorCall parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall 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.common.serialization.KotlinIr.IrEnumConstructorCall prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.symbol_ = symbol_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.memberAccess_ = memberAccess_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall.getDefaultInstance()) return this;
        if (other.hasSymbol()) {
          mergeSymbol(other.getSymbol());
        }
        if (other.hasMemberAccess()) {
          mergeMemberAccess(other.getMemberAccess());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSymbol()) {
          
          return false;
        }
        if (!hasMemberAccess()) {
          
          return false;
        }
        if (!getSymbol().isInitialized()) {
          
          return false;
        }
        if (!getMemberAccess().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.common.serialization.KotlinIr.IrEnumConstructorCall parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public boolean hasSymbol() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
        return symbol_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        symbol_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        symbol_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder mergeSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            symbol_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          symbol_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(symbol_).mergeFrom(value).buildPartial();
        } else {
          symbol_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder clearSymbol() {
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
       */
      public boolean hasMemberAccess() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon getMemberAccess() {
        return memberAccess_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
       */
      public Builder setMemberAccess(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon value) {
        if (value == null) {
          throw new NullPointerException();
        }
        memberAccess_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
       */
      public Builder setMemberAccess(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.Builder builderForValue) {
        memberAccess_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
       */
      public Builder mergeMemberAccess(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            memberAccess_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance()) {
          memberAccess_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.newBuilder(memberAccess_).mergeFrom(value).buildPartial();
        } else {
          memberAccess_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.MemberAccessCommon member_access = 2;</code>
       */
      public Builder clearMemberAccess() {
        memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.MemberAccessCommon.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrEnumConstructorCall)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrEnumConstructorCall)
  }

  public interface IrGetClassOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrGetClass)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
     */
    boolean hasArgument();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getArgument();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrGetClass}
   */
  public static final class IrGetClass extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrGetClass)
      IrGetClassOrBuilder {
    // Use IrGetClass.newBuilder() to construct.
    private IrGetClass(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrGetClass(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrGetClass getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrGetClass(
        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);
      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.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = argument_.toBuilder();
              }
              argument_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(argument_);
                argument_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              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<IrGetClass> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrGetClass>() {
      public IrGetClass parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrGetClass(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int ARGUMENT_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression argument_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
     */
    public boolean hasArgument() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getArgument() {
      return argument_;
    }

    private void initFields() {
      argument_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, argument_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, argument_);
      }
      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.common.serialization.KotlinIr.IrGetClass parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass 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.common.serialization.KotlinIr.IrGetClass parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass 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.common.serialization.KotlinIr.IrGetClass parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass 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.common.serialization.KotlinIr.IrGetClass parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass 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.common.serialization.KotlinIr.IrGetClass parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass 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.common.serialization.KotlinIr.IrGetClass prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        argument_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.argument_ = argument_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass.getDefaultInstance()) return this;
        if (other.hasArgument()) {
          mergeArgument(other.getArgument());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasArgument()) {
          
          return false;
        }
        if (!getArgument().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.common.serialization.KotlinIr.IrGetClass parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression argument_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
       */
      public boolean hasArgument() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getArgument() {
        return argument_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
       */
      public Builder setArgument(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        argument_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
       */
      public Builder setArgument(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        argument_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
       */
      public Builder mergeArgument(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            argument_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          argument_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(argument_).mergeFrom(value).buildPartial();
        } else {
          argument_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
       */
      public Builder clearArgument() {
        argument_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrGetClass)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrGetClass)
  }

  public interface IrGetEnumValueOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrGetEnumValue)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 2;</code>
     */
    boolean hasSymbol();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrGetEnumValue}
   */
  public static final class IrGetEnumValue extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrGetEnumValue)
      IrGetEnumValueOrBuilder {
    // Use IrGetEnumValue.newBuilder() to construct.
    private IrGetEnumValue(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrGetEnumValue(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrGetEnumValue getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrGetEnumValue(
        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);
      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 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = symbol_.toBuilder();
              }
              symbol_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(symbol_);
                symbol_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              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<IrGetEnumValue> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrGetEnumValue>() {
      public IrGetEnumValue parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrGetEnumValue(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int SYMBOL_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 2;</code>
     */
    public boolean hasSymbol() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
      return symbol_;
    }

    private void initFields() {
      symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(2, symbol_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, symbol_);
      }
      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.common.serialization.KotlinIr.IrGetEnumValue parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue 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.common.serialization.KotlinIr.IrGetEnumValue parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue 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.common.serialization.KotlinIr.IrGetEnumValue parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue 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.common.serialization.KotlinIr.IrGetEnumValue parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue 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.common.serialization.KotlinIr.IrGetEnumValue parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue 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.common.serialization.KotlinIr.IrGetEnumValue prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.symbol_ = symbol_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue.getDefaultInstance()) return this;
        if (other.hasSymbol()) {
          mergeSymbol(other.getSymbol());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSymbol()) {
          
          return false;
        }
        if (!getSymbol().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.common.serialization.KotlinIr.IrGetEnumValue parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 2;</code>
       */
      public boolean hasSymbol() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
        return symbol_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 2;</code>
       */
      public Builder setSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        symbol_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 2;</code>
       */
      public Builder setSymbol(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        symbol_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 2;</code>
       */
      public Builder mergeSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            symbol_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          symbol_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(symbol_).mergeFrom(value).buildPartial();
        } else {
          symbol_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 2;</code>
       */
      public Builder clearSymbol() {
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrGetEnumValue)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrGetEnumValue)
  }

  public interface FieldAccessCommonOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    boolean hasSymbol();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol super = 2;</code>
     */
    boolean hasSuper();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol super = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSuper();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 3;</code>
     */
    boolean hasReceiver();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getReceiver();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon}
   */
  public static final class FieldAccessCommon extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon)
      FieldAccessCommonOrBuilder {
    // Use FieldAccessCommon.newBuilder() to construct.
    private FieldAccessCommon(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private FieldAccessCommon(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public FieldAccessCommon getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private FieldAccessCommon(
        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);
      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.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = symbol_.toBuilder();
              }
              symbol_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(symbol_);
                symbol_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = super_.toBuilder();
              }
              super_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(super_);
                super_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = receiver_.toBuilder();
              }
              receiver_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(receiver_);
                receiver_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              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<FieldAccessCommon> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<FieldAccessCommon>() {
      public FieldAccessCommon parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new FieldAccessCommon(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int SYMBOL_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public boolean hasSymbol() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
      return symbol_;
    }

    public static final int SUPER_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol super_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol super = 2;</code>
     */
    public boolean hasSuper() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol super = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSuper() {
      return super_;
    }

    public static final int RECEIVER_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression receiver_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 3;</code>
     */
    public boolean hasReceiver() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getReceiver() {
      return receiver_;
    }

    private void initFields() {
      symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      super_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      receiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasSymbol()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getSymbol().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasSuper()) {
        if (!getSuper().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasReceiver()) {
        if (!getReceiver().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, symbol_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, super_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, receiver_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, symbol_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, super_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, receiver_);
      }
      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.common.serialization.KotlinIr.FieldAccessCommon parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon 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.common.serialization.KotlinIr.FieldAccessCommon parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon 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.common.serialization.KotlinIr.FieldAccessCommon parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon 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.common.serialization.KotlinIr.FieldAccessCommon parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon 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.common.serialization.KotlinIr.FieldAccessCommon parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon 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.common.serialization.KotlinIr.FieldAccessCommon prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        super_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        receiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.symbol_ = symbol_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.super_ = super_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.receiver_ = receiver_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon.getDefaultInstance()) return this;
        if (other.hasSymbol()) {
          mergeSymbol(other.getSymbol());
        }
        if (other.hasSuper()) {
          mergeSuper(other.getSuper());
        }
        if (other.hasReceiver()) {
          mergeReceiver(other.getReceiver());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSymbol()) {
          
          return false;
        }
        if (!getSymbol().isInitialized()) {
          
          return false;
        }
        if (hasSuper()) {
          if (!getSuper().isInitialized()) {
            
            return false;
          }
        }
        if (hasReceiver()) {
          if (!getReceiver().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.common.serialization.KotlinIr.FieldAccessCommon parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public boolean hasSymbol() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
        return symbol_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        symbol_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        symbol_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder mergeSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            symbol_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          symbol_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(symbol_).mergeFrom(value).buildPartial();
        } else {
          symbol_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder clearSymbol() {
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol super_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol super = 2;</code>
       */
      public boolean hasSuper() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol super = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSuper() {
        return super_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol super = 2;</code>
       */
      public Builder setSuper(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        super_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol super = 2;</code>
       */
      public Builder setSuper(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        super_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol super = 2;</code>
       */
      public Builder mergeSuper(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            super_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          super_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(super_).mergeFrom(value).buildPartial();
        } else {
          super_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSymbol super = 2;</code>
       */
      public Builder clearSuper() {
        super_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression receiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 3;</code>
       */
      public boolean hasReceiver() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getReceiver() {
        return receiver_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 3;</code>
       */
      public Builder setReceiver(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        receiver_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 3;</code>
       */
      public Builder setReceiver(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        receiver_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 3;</code>
       */
      public Builder mergeReceiver(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            receiver_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          receiver_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(receiver_).mergeFrom(value).buildPartial();
        } else {
          receiver_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 3;</code>
       */
      public Builder clearReceiver() {
        receiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon)
  }

  public interface IrGetFieldOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrGetField)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon field_access = 1;</code>
     */
    boolean hasFieldAccess();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon field_access = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon getFieldAccess();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
     */
    boolean hasOrigin();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrGetField}
   */
  public static final class IrGetField extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrGetField)
      IrGetFieldOrBuilder {
    // Use IrGetField.newBuilder() to construct.
    private IrGetField(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrGetField(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrGetField getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrGetField(
        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);
      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.KotlinIr.FieldAccessCommon.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = fieldAccess_.toBuilder();
              }
              fieldAccess_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(fieldAccess_);
                fieldAccess_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = origin_.toBuilder();
              }
              origin_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(origin_);
                origin_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrGetField> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrGetField>() {
      public IrGetField parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrGetField(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int FIELD_ACCESS_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon fieldAccess_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon field_access = 1;</code>
     */
    public boolean hasFieldAccess() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon field_access = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon getFieldAccess() {
      return fieldAccess_;
    }

    public static final int ORIGIN_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
     */
    public boolean hasOrigin() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
      return origin_;
    }

    private void initFields() {
      fieldAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon.getDefaultInstance();
      origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasFieldAccess()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getFieldAccess().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasOrigin()) {
        if (!getOrigin().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, fieldAccess_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, origin_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, fieldAccess_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, origin_);
      }
      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.common.serialization.KotlinIr.IrGetField parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField 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.common.serialization.KotlinIr.IrGetField parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField 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.common.serialization.KotlinIr.IrGetField parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField 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.common.serialization.KotlinIr.IrGetField parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField 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.common.serialization.KotlinIr.IrGetField parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField 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.common.serialization.KotlinIr.IrGetField prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        fieldAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.fieldAccess_ = fieldAccess_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.origin_ = origin_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField.getDefaultInstance()) return this;
        if (other.hasFieldAccess()) {
          mergeFieldAccess(other.getFieldAccess());
        }
        if (other.hasOrigin()) {
          mergeOrigin(other.getOrigin());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasFieldAccess()) {
          
          return false;
        }
        if (!getFieldAccess().isInitialized()) {
          
          return false;
        }
        if (hasOrigin()) {
          if (!getOrigin().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.common.serialization.KotlinIr.IrGetField parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon fieldAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon field_access = 1;</code>
       */
      public boolean hasFieldAccess() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon field_access = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon getFieldAccess() {
        return fieldAccess_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon field_access = 1;</code>
       */
      public Builder setFieldAccess(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon value) {
        if (value == null) {
          throw new NullPointerException();
        }
        fieldAccess_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon field_access = 1;</code>
       */
      public Builder setFieldAccess(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon.Builder builderForValue) {
        fieldAccess_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon field_access = 1;</code>
       */
      public Builder mergeFieldAccess(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            fieldAccess_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon.getDefaultInstance()) {
          fieldAccess_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon.newBuilder(fieldAccess_).mergeFrom(value).buildPartial();
        } else {
          fieldAccess_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon field_access = 1;</code>
       */
      public Builder clearFieldAccess() {
        fieldAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public boolean hasOrigin() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
        return origin_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public Builder setOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (value == null) {
          throw new NullPointerException();
        }
        origin_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public Builder setOrigin(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder builderForValue) {
        origin_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public Builder mergeOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            origin_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance()) {
          origin_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.newBuilder(origin_).mergeFrom(value).buildPartial();
        } else {
          origin_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public Builder clearOrigin() {
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrGetField)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrGetField)
  }

  public interface IrGetValueOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrGetValue)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    boolean hasSymbol();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
     */
    boolean hasOrigin();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrGetValue}
   */
  public static final class IrGetValue extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrGetValue)
      IrGetValueOrBuilder {
    // Use IrGetValue.newBuilder() to construct.
    private IrGetValue(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrGetValue(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrGetValue getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrGetValue(
        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);
      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.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = symbol_.toBuilder();
              }
              symbol_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(symbol_);
                symbol_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = origin_.toBuilder();
              }
              origin_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(origin_);
                origin_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrGetValue> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrGetValue>() {
      public IrGetValue parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrGetValue(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int SYMBOL_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public boolean hasSymbol() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
      return symbol_;
    }

    public static final int ORIGIN_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
     */
    public boolean hasOrigin() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
      return origin_;
    }

    private void initFields() {
      symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasSymbol()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getSymbol().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasOrigin()) {
        if (!getOrigin().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, symbol_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, origin_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, symbol_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, origin_);
      }
      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.common.serialization.KotlinIr.IrGetValue parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue 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.common.serialization.KotlinIr.IrGetValue parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue 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.common.serialization.KotlinIr.IrGetValue parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue 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.common.serialization.KotlinIr.IrGetValue parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue 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.common.serialization.KotlinIr.IrGetValue parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue 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.common.serialization.KotlinIr.IrGetValue prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.symbol_ = symbol_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.origin_ = origin_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue.getDefaultInstance()) return this;
        if (other.hasSymbol()) {
          mergeSymbol(other.getSymbol());
        }
        if (other.hasOrigin()) {
          mergeOrigin(other.getOrigin());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSymbol()) {
          
          return false;
        }
        if (!getSymbol().isInitialized()) {
          
          return false;
        }
        if (hasOrigin()) {
          if (!getOrigin().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.common.serialization.KotlinIr.IrGetValue parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public boolean hasSymbol() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
        return symbol_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        symbol_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        symbol_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder mergeSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            symbol_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          symbol_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(symbol_).mergeFrom(value).buildPartial();
        } else {
          symbol_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder clearSymbol() {
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public boolean hasOrigin() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
        return origin_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public Builder setOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (value == null) {
          throw new NullPointerException();
        }
        origin_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public Builder setOrigin(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder builderForValue) {
        origin_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public Builder mergeOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            origin_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance()) {
          origin_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.newBuilder(origin_).mergeFrom(value).buildPartial();
        } else {
          origin_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public Builder clearOrigin() {
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrGetValue)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrGetValue)
  }

  public interface IrGetObjectOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrGetObject)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    boolean hasSymbol();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrGetObject}
   */
  public static final class IrGetObject extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrGetObject)
      IrGetObjectOrBuilder {
    // Use IrGetObject.newBuilder() to construct.
    private IrGetObject(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrGetObject(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrGetObject getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrGetObject(
        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);
      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.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = symbol_.toBuilder();
              }
              symbol_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(symbol_);
                symbol_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              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<IrGetObject> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrGetObject>() {
      public IrGetObject parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrGetObject(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int SYMBOL_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public boolean hasSymbol() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
      return symbol_;
    }

    private void initFields() {
      symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, symbol_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, symbol_);
      }
      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.common.serialization.KotlinIr.IrGetObject parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject 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.common.serialization.KotlinIr.IrGetObject parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject 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.common.serialization.KotlinIr.IrGetObject parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject 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.common.serialization.KotlinIr.IrGetObject parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject 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.common.serialization.KotlinIr.IrGetObject parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject 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.common.serialization.KotlinIr.IrGetObject prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.symbol_ = symbol_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject.getDefaultInstance()) return this;
        if (other.hasSymbol()) {
          mergeSymbol(other.getSymbol());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSymbol()) {
          
          return false;
        }
        if (!getSymbol().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.common.serialization.KotlinIr.IrGetObject parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public boolean hasSymbol() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
        return symbol_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        symbol_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        symbol_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder mergeSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            symbol_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          symbol_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(symbol_).mergeFrom(value).buildPartial();
        } else {
          symbol_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder clearSymbol() {
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrGetObject)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrGetObject)
  }

  public interface IrInstanceInitializerCallOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrInstanceInitializerCall)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    boolean hasSymbol();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrInstanceInitializerCall}
   */
  public static final class IrInstanceInitializerCall extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrInstanceInitializerCall)
      IrInstanceInitializerCallOrBuilder {
    // Use IrInstanceInitializerCall.newBuilder() to construct.
    private IrInstanceInitializerCall(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrInstanceInitializerCall(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrInstanceInitializerCall getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrInstanceInitializerCall(
        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);
      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.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = symbol_.toBuilder();
              }
              symbol_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(symbol_);
                symbol_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              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<IrInstanceInitializerCall> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrInstanceInitializerCall>() {
      public IrInstanceInitializerCall parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrInstanceInitializerCall(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int SYMBOL_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public boolean hasSymbol() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
      return symbol_;
    }

    private void initFields() {
      symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, symbol_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, symbol_);
      }
      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.common.serialization.KotlinIr.IrInstanceInitializerCall parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall 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.common.serialization.KotlinIr.IrInstanceInitializerCall parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall 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.common.serialization.KotlinIr.IrInstanceInitializerCall parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall 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.common.serialization.KotlinIr.IrInstanceInitializerCall parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall 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.common.serialization.KotlinIr.IrInstanceInitializerCall parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall 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.common.serialization.KotlinIr.IrInstanceInitializerCall prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.symbol_ = symbol_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall.getDefaultInstance()) return this;
        if (other.hasSymbol()) {
          mergeSymbol(other.getSymbol());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSymbol()) {
          
          return false;
        }
        if (!getSymbol().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.common.serialization.KotlinIr.IrInstanceInitializerCall parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public boolean hasSymbol() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
        return symbol_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        symbol_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        symbol_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder mergeSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            symbol_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          symbol_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(symbol_).mergeFrom(value).buildPartial();
        } else {
          symbol_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder clearSymbol() {
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrInstanceInitializerCall)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrInstanceInitializerCall)
  }

  public interface LoopOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.Loop)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required int32 loop_id = 1;</code>
     */
    boolean hasLoopId();
    /**
     * <code>required int32 loop_id = 1;</code>
     */
    int getLoopId();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression condition = 2;</code>
     */
    boolean hasCondition();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression condition = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getCondition();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 3;</code>
     */
    boolean hasLabel();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getLabel();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression body = 4;</code>
     */
    boolean hasBody();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression body = 4;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getBody();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5;</code>
     */
    boolean hasOrigin();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.Loop}
   */
  public static final class Loop extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.Loop)
      LoopOrBuilder {
    // Use Loop.newBuilder() to construct.
    private Loop(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Loop(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Loop getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Loop(
        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);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              loopId_ = input.readInt32();
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = condition_.toBuilder();
              }
              condition_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(condition_);
                condition_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = label_.toBuilder();
              }
              label_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(label_);
                label_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 34: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = body_.toBuilder();
              }
              body_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(body_);
                body_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 42: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                subBuilder = origin_.toBuilder();
              }
              origin_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(origin_);
                origin_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Loop> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Loop>() {
      public Loop parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Loop(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int LOOP_ID_FIELD_NUMBER = 1;
    private int loopId_;
    /**
     * <code>required int32 loop_id = 1;</code>
     */
    public boolean hasLoopId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 loop_id = 1;</code>
     */
    public int getLoopId() {
      return loopId_;
    }

    public static final int CONDITION_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression condition_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression condition = 2;</code>
     */
    public boolean hasCondition() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression condition = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getCondition() {
      return condition_;
    }

    public static final int LABEL_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String label_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 3;</code>
     */
    public boolean hasLabel() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getLabel() {
      return label_;
    }

    public static final int BODY_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression body_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression body = 4;</code>
     */
    public boolean hasBody() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression body = 4;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getBody() {
      return body_;
    }

    public static final int ORIGIN_FIELD_NUMBER = 5;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5;</code>
     */
    public boolean hasOrigin() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
      return origin_;
    }

    private void initFields() {
      loopId_ = 0;
      condition_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      label_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      body_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasLoopId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasCondition()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getCondition().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasLabel()) {
        if (!getLabel().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasBody()) {
        if (!getBody().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasOrigin()) {
        if (!getOrigin().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, loopId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, condition_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, label_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, body_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(5, origin_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, loopId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, condition_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, label_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, body_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, origin_);
      }
      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.common.serialization.KotlinIr.Loop parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop 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.common.serialization.KotlinIr.Loop parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop 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.common.serialization.KotlinIr.Loop parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop 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.common.serialization.KotlinIr.Loop parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop 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.common.serialization.KotlinIr.Loop parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop 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.common.serialization.KotlinIr.Loop prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        loopId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        condition_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        label_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        body_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.loopId_ = loopId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.condition_ = condition_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.label_ = label_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.body_ = body_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.origin_ = origin_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop.getDefaultInstance()) return this;
        if (other.hasLoopId()) {
          setLoopId(other.getLoopId());
        }
        if (other.hasCondition()) {
          mergeCondition(other.getCondition());
        }
        if (other.hasLabel()) {
          mergeLabel(other.getLabel());
        }
        if (other.hasBody()) {
          mergeBody(other.getBody());
        }
        if (other.hasOrigin()) {
          mergeOrigin(other.getOrigin());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasLoopId()) {
          
          return false;
        }
        if (!hasCondition()) {
          
          return false;
        }
        if (!getCondition().isInitialized()) {
          
          return false;
        }
        if (hasLabel()) {
          if (!getLabel().isInitialized()) {
            
            return false;
          }
        }
        if (hasBody()) {
          if (!getBody().isInitialized()) {
            
            return false;
          }
        }
        if (hasOrigin()) {
          if (!getOrigin().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.common.serialization.KotlinIr.Loop parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int loopId_ ;
      /**
       * <code>required int32 loop_id = 1;</code>
       */
      public boolean hasLoopId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 loop_id = 1;</code>
       */
      public int getLoopId() {
        return loopId_;
      }
      /**
       * <code>required int32 loop_id = 1;</code>
       */
      public Builder setLoopId(int value) {
        bitField0_ |= 0x00000001;
        loopId_ = value;
        
        return this;
      }
      /**
       * <code>required int32 loop_id = 1;</code>
       */
      public Builder clearLoopId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        loopId_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression condition_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression condition = 2;</code>
       */
      public boolean hasCondition() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression condition = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getCondition() {
        return condition_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression condition = 2;</code>
       */
      public Builder setCondition(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        condition_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression condition = 2;</code>
       */
      public Builder setCondition(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        condition_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression condition = 2;</code>
       */
      public Builder mergeCondition(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            condition_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          condition_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(condition_).mergeFrom(value).buildPartial();
        } else {
          condition_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression condition = 2;</code>
       */
      public Builder clearCondition() {
        condition_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String label_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 3;</code>
       */
      public boolean hasLabel() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getLabel() {
        return label_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 3;</code>
       */
      public Builder setLabel(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        label_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 3;</code>
       */
      public Builder setLabel(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        label_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 3;</code>
       */
      public Builder mergeLabel(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            label_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          label_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(label_).mergeFrom(value).buildPartial();
        } else {
          label_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.String label = 3;</code>
       */
      public Builder clearLabel() {
        label_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression body_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression body = 4;</code>
       */
      public boolean hasBody() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression body = 4;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getBody() {
        return body_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression body = 4;</code>
       */
      public Builder setBody(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        body_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression body = 4;</code>
       */
      public Builder setBody(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        body_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression body = 4;</code>
       */
      public Builder mergeBody(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            body_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          body_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(body_).mergeFrom(value).buildPartial();
        } else {
          body_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression body = 4;</code>
       */
      public Builder clearBody() {
        body_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5;</code>
       */
      public boolean hasOrigin() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
        return origin_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5;</code>
       */
      public Builder setOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (value == null) {
          throw new NullPointerException();
        }
        origin_ = value;

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5;</code>
       */
      public Builder setOrigin(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder builderForValue) {
        origin_ = builderForValue.build();

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5;</code>
       */
      public Builder mergeOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (((bitField0_ & 0x00000010) == 0x00000010) &&
            origin_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance()) {
          origin_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.newBuilder(origin_).mergeFrom(value).buildPartial();
        } else {
          origin_ = value;
        }

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5;</code>
       */
      public Builder clearOrigin() {
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.Loop)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.Loop)
  }

  public interface IrReturnOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrReturn)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol return_target = 1;</code>
     */
    boolean hasReturnTarget();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol return_target = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getReturnTarget();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 2;</code>
     */
    boolean hasValue();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getValue();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrReturn}
   */
  public static final class IrReturn extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrReturn)
      IrReturnOrBuilder {
    // Use IrReturn.newBuilder() to construct.
    private IrReturn(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrReturn(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrReturn getDefaultInstanceForType() {
      return defaultInstance;
    }

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

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

    private int bitField0_;
    public static final int RETURN_TARGET_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol returnTarget_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol return_target = 1;</code>
     */
    public boolean hasReturnTarget() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol return_target = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getReturnTarget() {
      return returnTarget_;
    }

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

    private void initFields() {
      returnTarget_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      value_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, returnTarget_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, value_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, returnTarget_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, value_);
      }
      size += unknownFields.size();
      memoizedSerializedSize = size;
      return size;
    }

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

    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn 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.common.serialization.KotlinIr.IrReturn parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn 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.common.serialization.KotlinIr.IrReturn parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn 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.common.serialization.KotlinIr.IrReturn parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn 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.common.serialization.KotlinIr.IrReturn parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn 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.common.serialization.KotlinIr.IrReturn prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        returnTarget_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.returnTarget_ = returnTarget_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.value_ = value_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn.getDefaultInstance()) return this;
        if (other.hasReturnTarget()) {
          mergeReturnTarget(other.getReturnTarget());
        }
        if (other.hasValue()) {
          mergeValue(other.getValue());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol returnTarget_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol return_target = 1;</code>
       */
      public boolean hasReturnTarget() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol return_target = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getReturnTarget() {
        return returnTarget_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol return_target = 1;</code>
       */
      public Builder setReturnTarget(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        returnTarget_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol return_target = 1;</code>
       */
      public Builder setReturnTarget(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        returnTarget_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol return_target = 1;</code>
       */
      public Builder mergeReturnTarget(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            returnTarget_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          returnTarget_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(returnTarget_).mergeFrom(value).buildPartial();
        } else {
          returnTarget_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol return_target = 1;</code>
       */
      public Builder clearReturnTarget() {
        returnTarget_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

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

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 2;</code>
       */
      public Builder setValue(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        value_ = builderForValue.build();

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

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 2;</code>
       */
      public Builder clearValue() {
        value_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrReturn)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrReturn)
  }

  public interface IrSetFieldOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrSetField)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon field_access = 1;</code>
     */
    boolean hasFieldAccess();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon field_access = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon getFieldAccess();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 2;</code>
     */
    boolean hasValue();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getValue();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 3;</code>
     */
    boolean hasOrigin();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrSetField}
   */
  public static final class IrSetField extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrSetField)
      IrSetFieldOrBuilder {
    // Use IrSetField.newBuilder() to construct.
    private IrSetField(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrSetField(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrSetField getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrSetField(
        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);
      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.KotlinIr.FieldAccessCommon.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = fieldAccess_.toBuilder();
              }
              fieldAccess_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(fieldAccess_);
                fieldAccess_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = value_.toBuilder();
              }
              value_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(value_);
                value_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = origin_.toBuilder();
              }
              origin_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(origin_);
                origin_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              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<IrSetField> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrSetField>() {
      public IrSetField parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrSetField(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int FIELD_ACCESS_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon fieldAccess_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon field_access = 1;</code>
     */
    public boolean hasFieldAccess() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon field_access = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon getFieldAccess() {
      return fieldAccess_;
    }

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

    public static final int ORIGIN_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 3;</code>
     */
    public boolean hasOrigin() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
      return origin_;
    }

    private void initFields() {
      fieldAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon.getDefaultInstance();
      value_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasFieldAccess()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasValue()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getFieldAccess().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getValue().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasOrigin()) {
        if (!getOrigin().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, fieldAccess_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, value_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, origin_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, fieldAccess_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, value_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, origin_);
      }
      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.common.serialization.KotlinIr.IrSetField parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField 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.common.serialization.KotlinIr.IrSetField parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField 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.common.serialization.KotlinIr.IrSetField parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField 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.common.serialization.KotlinIr.IrSetField parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField 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.common.serialization.KotlinIr.IrSetField parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField 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.common.serialization.KotlinIr.IrSetField prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        fieldAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.fieldAccess_ = fieldAccess_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.value_ = value_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.origin_ = origin_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField.getDefaultInstance()) return this;
        if (other.hasFieldAccess()) {
          mergeFieldAccess(other.getFieldAccess());
        }
        if (other.hasValue()) {
          mergeValue(other.getValue());
        }
        if (other.hasOrigin()) {
          mergeOrigin(other.getOrigin());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasFieldAccess()) {
          
          return false;
        }
        if (!hasValue()) {
          
          return false;
        }
        if (!getFieldAccess().isInitialized()) {
          
          return false;
        }
        if (!getValue().isInitialized()) {
          
          return false;
        }
        if (hasOrigin()) {
          if (!getOrigin().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.common.serialization.KotlinIr.IrSetField parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon fieldAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon field_access = 1;</code>
       */
      public boolean hasFieldAccess() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon field_access = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon getFieldAccess() {
        return fieldAccess_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon field_access = 1;</code>
       */
      public Builder setFieldAccess(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon value) {
        if (value == null) {
          throw new NullPointerException();
        }
        fieldAccess_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon field_access = 1;</code>
       */
      public Builder setFieldAccess(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon.Builder builderForValue) {
        fieldAccess_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon field_access = 1;</code>
       */
      public Builder mergeFieldAccess(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            fieldAccess_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon.getDefaultInstance()) {
          fieldAccess_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon.newBuilder(fieldAccess_).mergeFrom(value).buildPartial();
        } else {
          fieldAccess_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.FieldAccessCommon field_access = 1;</code>
       */
      public Builder clearFieldAccess() {
        fieldAccess_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.FieldAccessCommon.getDefaultInstance();

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

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

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 2;</code>
       */
      public Builder setValue(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        value_ = builderForValue.build();

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

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 2;</code>
       */
      public Builder clearValue() {
        value_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 3;</code>
       */
      public boolean hasOrigin() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
        return origin_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 3;</code>
       */
      public Builder setOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (value == null) {
          throw new NullPointerException();
        }
        origin_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 3;</code>
       */
      public Builder setOrigin(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder builderForValue) {
        origin_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 3;</code>
       */
      public Builder mergeOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            origin_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance()) {
          origin_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.newBuilder(origin_).mergeFrom(value).buildPartial();
        } else {
          origin_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 3;</code>
       */
      public Builder clearOrigin() {
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrSetField)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrSetField)
  }

  public interface IrSetVariableOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrSetVariable)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    boolean hasSymbol();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 2;</code>
     */
    boolean hasValue();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getValue();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 3;</code>
     */
    boolean hasOrigin();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrSetVariable}
   */
  public static final class IrSetVariable extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrSetVariable)
      IrSetVariableOrBuilder {
    // Use IrSetVariable.newBuilder() to construct.
    private IrSetVariable(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrSetVariable(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrSetVariable getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrSetVariable(
        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);
      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.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = symbol_.toBuilder();
              }
              symbol_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(symbol_);
                symbol_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = value_.toBuilder();
              }
              value_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(value_);
                value_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = origin_.toBuilder();
              }
              origin_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(origin_);
                origin_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              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<IrSetVariable> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrSetVariable>() {
      public IrSetVariable parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrSetVariable(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int SYMBOL_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public boolean hasSymbol() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
      return symbol_;
    }

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

    public static final int ORIGIN_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 3;</code>
     */
    public boolean hasOrigin() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
      return origin_;
    }

    private void initFields() {
      symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      value_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasSymbol()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasValue()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getSymbol().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getValue().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasOrigin()) {
        if (!getOrigin().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, symbol_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, value_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, origin_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, symbol_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, value_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, origin_);
      }
      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.common.serialization.KotlinIr.IrSetVariable parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable 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.common.serialization.KotlinIr.IrSetVariable parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable 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.common.serialization.KotlinIr.IrSetVariable parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable 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.common.serialization.KotlinIr.IrSetVariable parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable 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.common.serialization.KotlinIr.IrSetVariable parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable 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.common.serialization.KotlinIr.IrSetVariable prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.symbol_ = symbol_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.value_ = value_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.origin_ = origin_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable.getDefaultInstance()) return this;
        if (other.hasSymbol()) {
          mergeSymbol(other.getSymbol());
        }
        if (other.hasValue()) {
          mergeValue(other.getValue());
        }
        if (other.hasOrigin()) {
          mergeOrigin(other.getOrigin());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSymbol()) {
          
          return false;
        }
        if (!hasValue()) {
          
          return false;
        }
        if (!getSymbol().isInitialized()) {
          
          return false;
        }
        if (!getValue().isInitialized()) {
          
          return false;
        }
        if (hasOrigin()) {
          if (!getOrigin().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.common.serialization.KotlinIr.IrSetVariable parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public boolean hasSymbol() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
        return symbol_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        symbol_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        symbol_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder mergeSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            symbol_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          symbol_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(symbol_).mergeFrom(value).buildPartial();
        } else {
          symbol_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder clearSymbol() {
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

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

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 2;</code>
       */
      public Builder setValue(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        value_ = builderForValue.build();

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

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 2;</code>
       */
      public Builder clearValue() {
        value_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 3;</code>
       */
      public boolean hasOrigin() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
        return origin_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 3;</code>
       */
      public Builder setOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (value == null) {
          throw new NullPointerException();
        }
        origin_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 3;</code>
       */
      public Builder setOrigin(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder builderForValue) {
        origin_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 3;</code>
       */
      public Builder mergeOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            origin_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance()) {
          origin_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.newBuilder(origin_).mergeFrom(value).buildPartial();
        } else {
          origin_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 3;</code>
       */
      public Builder clearOrigin() {
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrSetVariable)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrSetVariable)
  }

  public interface IrSpreadElementOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrSpreadElement)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
     */
    boolean hasExpression();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getExpression();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 2;</code>
     */
    boolean hasCoordinates();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates getCoordinates();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrSpreadElement}
   */
  public static final class IrSpreadElement extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrSpreadElement)
      IrSpreadElementOrBuilder {
    // Use IrSpreadElement.newBuilder() to construct.
    private IrSpreadElement(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrSpreadElement(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrSpreadElement getDefaultInstanceForType() {
      return defaultInstance;
    }

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

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

    private int bitField0_;
    public static final int EXPRESSION_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression expression_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
     */
    public boolean hasExpression() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getExpression() {
      return expression_;
    }

    public static final int COORDINATES_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates coordinates_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 2;</code>
     */
    public boolean hasCoordinates() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates getCoordinates() {
      return coordinates_;
    }

    private void initFields() {
      expression_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      coordinates_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, expression_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, coordinates_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, expression_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, coordinates_);
      }
      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.common.serialization.KotlinIr.IrSpreadElement parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement 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.common.serialization.KotlinIr.IrSpreadElement parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement 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.common.serialization.KotlinIr.IrSpreadElement parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement 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.common.serialization.KotlinIr.IrSpreadElement parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement 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.common.serialization.KotlinIr.IrSpreadElement parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement 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.common.serialization.KotlinIr.IrSpreadElement prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        expression_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        coordinates_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.expression_ = expression_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.coordinates_ = coordinates_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement.getDefaultInstance()) return this;
        if (other.hasExpression()) {
          mergeExpression(other.getExpression());
        }
        if (other.hasCoordinates()) {
          mergeCoordinates(other.getCoordinates());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasExpression()) {
          
          return false;
        }
        if (!hasCoordinates()) {
          
          return false;
        }
        if (!getExpression().isInitialized()) {
          
          return false;
        }
        if (!getCoordinates().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.common.serialization.KotlinIr.IrSpreadElement parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression expression_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
       */
      public boolean hasExpression() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getExpression() {
        return expression_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
       */
      public Builder setExpression(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
       */
      public Builder setExpression(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        expression_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
       */
      public Builder mergeExpression(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            expression_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          expression_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(expression_).mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
       */
      public Builder clearExpression() {
        expression_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates coordinates_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 2;</code>
       */
      public boolean hasCoordinates() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates getCoordinates() {
        return coordinates_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 2;</code>
       */
      public Builder setCoordinates(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates value) {
        if (value == null) {
          throw new NullPointerException();
        }
        coordinates_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 2;</code>
       */
      public Builder setCoordinates(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.Builder builderForValue) {
        coordinates_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 2;</code>
       */
      public Builder mergeCoordinates(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            coordinates_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance()) {
          coordinates_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.newBuilder(coordinates_).mergeFrom(value).buildPartial();
        } else {
          coordinates_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 2;</code>
       */
      public Builder clearCoordinates() {
        coordinates_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrSpreadElement)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrSpreadElement)
  }

  public interface IrStringConcatOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrStringConcat)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression> 
        getArgumentList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getArgument(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
     */
    int getArgumentCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrStringConcat}
   */
  public static final class IrStringConcat extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrStringConcat)
      IrStringConcatOrBuilder {
    // Use IrStringConcat.newBuilder() to construct.
    private IrStringConcat(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrStringConcat(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrStringConcat getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrStringConcat(
        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);
      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)) {
                argument_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression>();
                mutable_bitField0_ |= 0x00000001;
              }
              argument_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.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)) {
          argument_ = java.util.Collections.unmodifiableList(argument_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrStringConcat> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrStringConcat>() {
      public IrStringConcat parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrStringConcat(input, extensionRegistry);
      }
    };

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

    public static final int ARGUMENT_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression> argument_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression> getArgumentList() {
      return argument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpressionOrBuilder> 
        getArgumentOrBuilderList() {
      return argument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
     */
    public int getArgumentCount() {
      return argument_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getArgument(int index) {
      return argument_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpressionOrBuilder getArgumentOrBuilder(
        int index) {
      return argument_.get(index);
    }

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

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < argument_.size(); i++) {
        output.writeMessage(1, argument_.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 < argument_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, argument_.get(i));
      }
      size += unknownFields.size();
      memoizedSerializedSize = size;
      return size;
    }

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

    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat 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.common.serialization.KotlinIr.IrStringConcat parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat 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.common.serialization.KotlinIr.IrStringConcat parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat 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.common.serialization.KotlinIr.IrStringConcat parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat 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.common.serialization.KotlinIr.IrStringConcat parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat 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.common.serialization.KotlinIr.IrStringConcat prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

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

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          argument_ = java.util.Collections.unmodifiableList(argument_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.argument_ = argument_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat.getDefaultInstance()) return this;
        if (!other.argument_.isEmpty()) {
          if (argument_.isEmpty()) {
            argument_ = other.argument_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureArgumentIsMutable();
            argument_.addAll(other.argument_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

      public Builder mergeFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat) 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.KotlinIr.IrExpression> argument_ =
        java.util.Collections.emptyList();
      private void ensureArgumentIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          argument_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression>(argument_);
          bitField0_ |= 0x00000001;
         }
      }

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

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
       */
      public Builder setArgument(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        ensureArgumentIsMutable();
        argument_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
       */
      public Builder addArgument(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureArgumentIsMutable();
        argument_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
       */
      public Builder addArgument(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureArgumentIsMutable();
        argument_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
       */
      public Builder addArgument(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        ensureArgumentIsMutable();
        argument_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
       */
      public Builder addArgument(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        ensureArgumentIsMutable();
        argument_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
       */
      public Builder addAllArgument(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression> values) {
        ensureArgumentIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, argument_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 1;</code>
       */
      public Builder clearArgument() {
        argument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

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

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrStringConcat)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrStringConcat)
  }

  public interface IrThrowOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrThrow)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 1;</code>
     */
    boolean hasValue();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getValue();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrThrow}
   */
  public static final class IrThrow extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrThrow)
      IrThrowOrBuilder {
    // Use IrThrow.newBuilder() to construct.
    private IrThrow(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrThrow(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrThrow getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrThrow(
        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);
      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.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = value_.toBuilder();
              }
              value_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(value_);
                value_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              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<IrThrow> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrThrow>() {
      public IrThrow parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrThrow(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int VALUE_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 1;</code>
     */
    public boolean hasValue() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getValue() {
      return value_;
    }

    private void initFields() {
      value_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, value_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, value_);
      }
      size += unknownFields.size();
      memoizedSerializedSize = size;
      return size;
    }

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

    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow 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.common.serialization.KotlinIr.IrThrow parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow 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.common.serialization.KotlinIr.IrThrow parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow 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.common.serialization.KotlinIr.IrThrow parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow 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.common.serialization.KotlinIr.IrThrow parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow 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.common.serialization.KotlinIr.IrThrow prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        value_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.value_ = value_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow.getDefaultInstance()) return this;
        if (other.hasValue()) {
          mergeValue(other.getValue());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 1;</code>
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getValue() {
        return value_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 1;</code>
       */
      public Builder setValue(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        value_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 1;</code>
       */
      public Builder setValue(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        value_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 1;</code>
       */
      public Builder mergeValue(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            value_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          value_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(value_).mergeFrom(value).buildPartial();
        } else {
          value_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression value = 1;</code>
       */
      public Builder clearValue() {
        value_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrThrow)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrThrow)
  }

  public interface IrTryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrTry)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 1;</code>
     */
    boolean hasResult();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getResult();

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement catch = 2;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> 
        getCatchList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement catch = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getCatch(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement catch = 2;</code>
     */
    int getCatchCount();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression finally = 3;</code>
     */
    boolean hasFinally();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression finally = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getFinally();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrTry}
   */
  public static final class IrTry extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrTry)
      IrTryOrBuilder {
    // Use IrTry.newBuilder() to construct.
    private IrTry(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrTry(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrTry getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrTry(
        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);
      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.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = result_.toBuilder();
              }
              result_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(result_);
                result_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                catch_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement>();
                mutable_bitField0_ |= 0x00000002;
              }
              catch_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.PARSER, extensionRegistry));
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = finally_.toBuilder();
              }
              finally_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(finally_);
                finally_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          catch_ = java.util.Collections.unmodifiableList(catch_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrTry> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrTry>() {
      public IrTry parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrTry(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int RESULT_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression result_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 1;</code>
     */
    public boolean hasResult() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getResult() {
      return result_;
    }

    public static final int CATCH_FIELD_NUMBER = 2;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> catch_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement catch = 2;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> getCatchList() {
      return catch_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement catch = 2;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrBuilder> 
        getCatchOrBuilderList() {
      return catch_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement catch = 2;</code>
     */
    public int getCatchCount() {
      return catch_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement catch = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getCatch(int index) {
      return catch_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement catch = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrBuilder getCatchOrBuilder(
        int index) {
      return catch_.get(index);
    }

    public static final int FINALLY_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression finally_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression finally = 3;</code>
     */
    public boolean hasFinally() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression finally = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getFinally() {
      return finally_;
    }

    private void initFields() {
      result_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      catch_ = java.util.Collections.emptyList();
      finally_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasResult()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getResult().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getCatchCount(); i++) {
        if (!getCatch(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasFinally()) {
        if (!getFinally().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, result_);
      }
      for (int i = 0; i < catch_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, catch_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, finally_);
      }
      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.common.serialization.KotlinIr.IrTry parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry 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.common.serialization.KotlinIr.IrTry parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry 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.common.serialization.KotlinIr.IrTry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry 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.common.serialization.KotlinIr.IrTry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry 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.common.serialization.KotlinIr.IrTry parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry 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.common.serialization.KotlinIr.IrTry prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        result_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        catch_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        finally_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.result_ = result_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          catch_ = java.util.Collections.unmodifiableList(catch_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.catch_ = catch_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        result.finally_ = finally_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry.getDefaultInstance()) return this;
        if (other.hasResult()) {
          mergeResult(other.getResult());
        }
        if (!other.catch_.isEmpty()) {
          if (catch_.isEmpty()) {
            catch_ = other.catch_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureCatchIsMutable();
            catch_.addAll(other.catch_);
          }
          
        }
        if (other.hasFinally()) {
          mergeFinally(other.getFinally());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasResult()) {
          
          return false;
        }
        if (!getResult().isInitialized()) {
          
          return false;
        }
        for (int i = 0; i < getCatchCount(); i++) {
          if (!getCatch(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasFinally()) {
          if (!getFinally().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.common.serialization.KotlinIr.IrTry parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression result_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 1;</code>
       */
      public boolean hasResult() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getResult() {
        return result_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 1;</code>
       */
      public Builder setResult(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 1;</code>
       */
      public Builder setResult(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        result_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 1;</code>
       */
      public Builder mergeResult(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            result_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          result_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(result_).mergeFrom(value).buildPartial();
        } else {
          result_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 1;</code>
       */
      public Builder clearResult() {
        result_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

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

      private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> catch_ =
        java.util.Collections.emptyList();
      private void ensureCatchIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          catch_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement>(catch_);
          bitField0_ |= 0x00000002;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement catch = 2;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> getCatchList() {
        return java.util.Collections.unmodifiableList(catch_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement catch = 2;</code>
       */
      public int getCatchCount() {
        return catch_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement catch = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getCatch(int index) {
        return catch_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement catch = 2;</code>
       */
      public Builder setCatch(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureCatchIsMutable();
        catch_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement catch = 2;</code>
       */
      public Builder setCatch(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.Builder builderForValue) {
        ensureCatchIsMutable();
        catch_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement catch = 2;</code>
       */
      public Builder addCatch(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureCatchIsMutable();
        catch_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement catch = 2;</code>
       */
      public Builder addCatch(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureCatchIsMutable();
        catch_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement catch = 2;</code>
       */
      public Builder addCatch(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.Builder builderForValue) {
        ensureCatchIsMutable();
        catch_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement catch = 2;</code>
       */
      public Builder addCatch(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.Builder builderForValue) {
        ensureCatchIsMutable();
        catch_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement catch = 2;</code>
       */
      public Builder addAllCatch(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> values) {
        ensureCatchIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, catch_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement catch = 2;</code>
       */
      public Builder clearCatch() {
        catch_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement catch = 2;</code>
       */
      public Builder removeCatch(int index) {
        ensureCatchIsMutable();
        catch_.remove(index);

        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression finally_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression finally = 3;</code>
       */
      public boolean hasFinally() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression finally = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getFinally() {
        return finally_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression finally = 3;</code>
       */
      public Builder setFinally(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        finally_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression finally = 3;</code>
       */
      public Builder setFinally(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        finally_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression finally = 3;</code>
       */
      public Builder mergeFinally(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            finally_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          finally_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(finally_).mergeFrom(value).buildPartial();
        } else {
          finally_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression finally = 3;</code>
       */
      public Builder clearFinally() {
        finally_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrTry)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrTry)
  }

  public interface IrTypeOpOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrTypeOp)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeOperator operator = 1;</code>
     */
    boolean hasOperator();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeOperator operator = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOperator getOperator();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex operand = 2;</code>
     */
    boolean hasOperand();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex operand = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getOperand();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
     */
    boolean hasArgument();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getArgument();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrTypeOp}
   */
  public static final class IrTypeOp extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrTypeOp)
      IrTypeOpOrBuilder {
    // Use IrTypeOp.newBuilder() to construct.
    private IrTypeOp(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrTypeOp(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrTypeOp getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrTypeOp(
        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);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOperator value = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOperator.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000001;
                operator_ = value;
              }
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = operand_.toBuilder();
              }
              operand_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(operand_);
                operand_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = argument_.toBuilder();
              }
              argument_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(argument_);
                argument_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              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<IrTypeOp> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrTypeOp>() {
      public IrTypeOp parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrTypeOp(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int OPERATOR_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOperator operator_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeOperator operator = 1;</code>
     */
    public boolean hasOperator() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeOperator operator = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOperator getOperator() {
      return operator_;
    }

    public static final int OPERAND_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex operand_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex operand = 2;</code>
     */
    public boolean hasOperand() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex operand = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getOperand() {
      return operand_;
    }

    public static final int ARGUMENT_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression argument_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
     */
    public boolean hasArgument() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getArgument() {
      return argument_;
    }

    private void initFields() {
      operator_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOperator.CAST;
      operand_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
      argument_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasOperator()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasOperand()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasArgument()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getOperand().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getArgument().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeEnum(1, operator_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, operand_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, argument_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(1, operator_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, operand_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, argument_);
      }
      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.common.serialization.KotlinIr.IrTypeOp parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp 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.common.serialization.KotlinIr.IrTypeOp parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp 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.common.serialization.KotlinIr.IrTypeOp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp 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.common.serialization.KotlinIr.IrTypeOp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp 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.common.serialization.KotlinIr.IrTypeOp parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp 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.common.serialization.KotlinIr.IrTypeOp prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        operator_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOperator.CAST;
        bitField0_ = (bitField0_ & ~0x00000001);
        operand_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        argument_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.operator_ = operator_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.operand_ = operand_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.argument_ = argument_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp.getDefaultInstance()) return this;
        if (other.hasOperator()) {
          setOperator(other.getOperator());
        }
        if (other.hasOperand()) {
          mergeOperand(other.getOperand());
        }
        if (other.hasArgument()) {
          mergeArgument(other.getArgument());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasOperator()) {
          
          return false;
        }
        if (!hasOperand()) {
          
          return false;
        }
        if (!hasArgument()) {
          
          return false;
        }
        if (!getOperand().isInitialized()) {
          
          return false;
        }
        if (!getArgument().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.common.serialization.KotlinIr.IrTypeOp parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOperator operator_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOperator.CAST;
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeOperator operator = 1;</code>
       */
      public boolean hasOperator() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeOperator operator = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOperator getOperator() {
        return operator_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeOperator operator = 1;</code>
       */
      public Builder setOperator(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOperator value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        operator_ = value;
        
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeOperator operator = 1;</code>
       */
      public Builder clearOperator() {
        bitField0_ = (bitField0_ & ~0x00000001);
        operator_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOperator.CAST;
        
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex operand_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex operand = 2;</code>
       */
      public boolean hasOperand() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex operand = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getOperand() {
        return operand_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex operand = 2;</code>
       */
      public Builder setOperand(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operand_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex operand = 2;</code>
       */
      public Builder setOperand(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder builderForValue) {
        operand_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex operand = 2;</code>
       */
      public Builder mergeOperand(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            operand_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance()) {
          operand_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.newBuilder(operand_).mergeFrom(value).buildPartial();
        } else {
          operand_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex operand = 2;</code>
       */
      public Builder clearOperand() {
        operand_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression argument_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
       */
      public boolean hasArgument() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getArgument() {
        return argument_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
       */
      public Builder setArgument(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        argument_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
       */
      public Builder setArgument(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        argument_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
       */
      public Builder mergeArgument(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            argument_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          argument_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(argument_).mergeFrom(value).buildPartial();
        } else {
          argument_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
       */
      public Builder clearArgument() {
        argument_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrTypeOp)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrTypeOp)
  }

  public interface IrVarargOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrVararg)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex element_type = 1;</code>
     */
    boolean hasElementType();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex element_type = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getElementType();

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrVarargElement element = 2;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement> 
        getElementList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrVarargElement element = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement getElement(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrVarargElement element = 2;</code>
     */
    int getElementCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrVararg}
   */
  public static final class IrVararg extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrVararg)
      IrVarargOrBuilder {
    // Use IrVararg.newBuilder() to construct.
    private IrVararg(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrVararg(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrVararg getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrVararg(
        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);
      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.KotlinIr.IrTypeIndex.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = elementType_.toBuilder();
              }
              elementType_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(elementType_);
                elementType_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                element_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement>();
                mutable_bitField0_ |= 0x00000002;
              }
              element_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          element_ = java.util.Collections.unmodifiableList(element_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrVararg> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrVararg>() {
      public IrVararg parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrVararg(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int ELEMENT_TYPE_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex elementType_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex element_type = 1;</code>
     */
    public boolean hasElementType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex element_type = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getElementType() {
      return elementType_;
    }

    public static final int ELEMENT_FIELD_NUMBER = 2;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement> element_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrVarargElement element = 2;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement> getElementList() {
      return element_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrVarargElement element = 2;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElementOrBuilder> 
        getElementOrBuilderList() {
      return element_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrVarargElement element = 2;</code>
     */
    public int getElementCount() {
      return element_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrVarargElement element = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement getElement(int index) {
      return element_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrVarargElement element = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElementOrBuilder getElementOrBuilder(
        int index) {
      return element_.get(index);
    }

    private void initFields() {
      elementType_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
      element_ = 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 (!hasElementType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getElementType().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getElementCount(); i++) {
        if (!getElement(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, elementType_);
      }
      for (int i = 0; i < element_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, element_.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.common.serialization.KotlinIr.IrVararg parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg 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.common.serialization.KotlinIr.IrVararg parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg 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.common.serialization.KotlinIr.IrVararg parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg 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.common.serialization.KotlinIr.IrVararg parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg 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.common.serialization.KotlinIr.IrVararg parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg 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.common.serialization.KotlinIr.IrVararg prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        elementType_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        element_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.elementType_ = elementType_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          element_ = java.util.Collections.unmodifiableList(element_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.element_ = element_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg.getDefaultInstance()) return this;
        if (other.hasElementType()) {
          mergeElementType(other.getElementType());
        }
        if (!other.element_.isEmpty()) {
          if (element_.isEmpty()) {
            element_ = other.element_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureElementIsMutable();
            element_.addAll(other.element_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasElementType()) {
          
          return false;
        }
        if (!getElementType().isInitialized()) {
          
          return false;
        }
        for (int i = 0; i < getElementCount(); i++) {
          if (!getElement(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.common.serialization.KotlinIr.IrVararg parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex elementType_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex element_type = 1;</code>
       */
      public boolean hasElementType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex element_type = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getElementType() {
        return elementType_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex element_type = 1;</code>
       */
      public Builder setElementType(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (value == null) {
          throw new NullPointerException();
        }
        elementType_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex element_type = 1;</code>
       */
      public Builder setElementType(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder builderForValue) {
        elementType_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex element_type = 1;</code>
       */
      public Builder mergeElementType(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            elementType_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance()) {
          elementType_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.newBuilder(elementType_).mergeFrom(value).buildPartial();
        } else {
          elementType_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex element_type = 1;</code>
       */
      public Builder clearElementType() {
        elementType_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();

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

      private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement> element_ =
        java.util.Collections.emptyList();
      private void ensureElementIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          element_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement>(element_);
          bitField0_ |= 0x00000002;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrVarargElement element = 2;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement> getElementList() {
        return java.util.Collections.unmodifiableList(element_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrVarargElement element = 2;</code>
       */
      public int getElementCount() {
        return element_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrVarargElement element = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement getElement(int index) {
        return element_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrVarargElement element = 2;</code>
       */
      public Builder setElement(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureElementIsMutable();
        element_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrVarargElement element = 2;</code>
       */
      public Builder setElement(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement.Builder builderForValue) {
        ensureElementIsMutable();
        element_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrVarargElement element = 2;</code>
       */
      public Builder addElement(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureElementIsMutable();
        element_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrVarargElement element = 2;</code>
       */
      public Builder addElement(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureElementIsMutable();
        element_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrVarargElement element = 2;</code>
       */
      public Builder addElement(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement.Builder builderForValue) {
        ensureElementIsMutable();
        element_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrVarargElement element = 2;</code>
       */
      public Builder addElement(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement.Builder builderForValue) {
        ensureElementIsMutable();
        element_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrVarargElement element = 2;</code>
       */
      public Builder addAllElement(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement> values) {
        ensureElementIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, element_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrVarargElement element = 2;</code>
       */
      public Builder clearElement() {
        element_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrVarargElement element = 2;</code>
       */
      public Builder removeElement(int index) {
        ensureElementIsMutable();
        element_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrVararg)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrVararg)
  }

  public interface IrVarargElementOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrVarargElement)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
     */
    boolean hasExpression();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getExpression();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSpreadElement spread_element = 2;</code>
     */
    boolean hasSpreadElement();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSpreadElement spread_element = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement getSpreadElement();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrVarargElement}
   */
  public static final class IrVarargElement extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrVarargElement)
      IrVarargElementOrBuilder {
    // Use IrVarargElement.newBuilder() to construct.
    private IrVarargElement(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrVarargElement(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrVarargElement getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrVarargElement(
        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);
      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.KotlinIr.IrExpression.Builder subBuilder = null;
              if (varargElementCase_ == 1) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression) varargElement_).toBuilder();
              }
              varargElement_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression) varargElement_);
                varargElement_ = subBuilder.buildPartial();
              }
              varargElementCase_ = 1;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement.Builder subBuilder = null;
              if (varargElementCase_ == 2) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement) varargElement_).toBuilder();
              }
              varargElement_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement) varargElement_);
                varargElement_ = subBuilder.buildPartial();
              }
              varargElementCase_ = 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<IrVarargElement> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrVarargElement>() {
      public IrVarargElement parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrVarargElement(input, extensionRegistry);
      }
    };

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

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

    public VarargElementCase
    getVarargElementCase() {
      return VarargElementCase.valueOf(
          varargElementCase_);
    }

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

    public static final int SPREAD_ELEMENT_FIELD_NUMBER = 2;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSpreadElement spread_element = 2;</code>
     */
    public boolean hasSpreadElement() {
      return varargElementCase_ == 2;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSpreadElement spread_element = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement getSpreadElement() {
      if (varargElementCase_ == 2) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement) varargElement_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement.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 (hasExpression()) {
        if (!getExpression().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSpreadElement()) {
        if (!getSpreadElement().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

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

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

      public Builder clear() {
        super.clear();
        varargElementCase_ = 0;
        varargElement_ = null;
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (varargElementCase_ == 1) {
          result.varargElement_ = varargElement_;
        }
        if (varargElementCase_ == 2) {
          result.varargElement_ = varargElement_;
        }
        result.bitField0_ = to_bitField0_;
        result.varargElementCase_ = varargElementCase_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement.getDefaultInstance()) return this;
        switch (other.getVarargElementCase()) {
          case EXPRESSION: {
            mergeExpression(other.getExpression());
            break;
          }
          case SPREAD_ELEMENT: {
            mergeSpreadElement(other.getSpreadElement());
            break;
          }
          case VARARGELEMENT_NOT_SET: {
            break;
          }
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (hasExpression()) {
          if (!getExpression().isInitialized()) {
            
            return false;
          }
        }
        if (hasSpreadElement()) {
          if (!getSpreadElement().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.common.serialization.KotlinIr.IrVarargElement parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVarargElement) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int varargElementCase_ = 0;
      private java.lang.Object varargElement_;
      public VarargElementCase
          getVarargElementCase() {
        return VarargElementCase.valueOf(
            varargElementCase_);
      }

      public Builder clearVarargElement() {
        varargElementCase_ = 0;
        varargElement_ = null;
        return this;
      }

      private int bitField0_;

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

        varargElementCase_ = 1;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
       */
      public Builder setExpression(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        varargElement_ = builderForValue.build();

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

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

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSpreadElement spread_element = 2;</code>
       */
      public boolean hasSpreadElement() {
        return varargElementCase_ == 2;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSpreadElement spread_element = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement getSpreadElement() {
        if (varargElementCase_ == 2) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement) varargElement_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSpreadElement spread_element = 2;</code>
       */
      public Builder setSpreadElement(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        varargElement_ = value;

        varargElementCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSpreadElement spread_element = 2;</code>
       */
      public Builder setSpreadElement(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement.Builder builderForValue) {
        varargElement_ = builderForValue.build();

        varargElementCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSpreadElement spread_element = 2;</code>
       */
      public Builder mergeSpreadElement(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement value) {
        if (varargElementCase_ == 2 &&
            varargElement_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement.getDefaultInstance()) {
          varargElement_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSpreadElement) varargElement_)
              .mergeFrom(value).buildPartial();
        } else {
          varargElement_ = value;
        }

        varargElementCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSpreadElement spread_element = 2;</code>
       */
      public Builder clearSpreadElement() {
        if (varargElementCase_ == 2) {
          varargElementCase_ = 0;
          varargElement_ = null;
          
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrVarargElement)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrVarargElement)
  }

  public interface IrWhenOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrWhen)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement branch = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> 
        getBranchList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement branch = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getBranch(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement branch = 1;</code>
     */
    int getBranchCount();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
     */
    boolean hasOrigin();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrWhen}
   */
  public static final class IrWhen extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrWhen)
      IrWhenOrBuilder {
    // Use IrWhen.newBuilder() to construct.
    private IrWhen(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrWhen(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrWhen getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrWhen(
        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);
      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)) {
                branch_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement>();
                mutable_bitField0_ |= 0x00000001;
              }
              branch_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.PARSER, extensionRegistry));
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = origin_.toBuilder();
              }
              origin_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(origin_);
                origin_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              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)) {
          branch_ = java.util.Collections.unmodifiableList(branch_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrWhen> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrWhen>() {
      public IrWhen parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrWhen(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int BRANCH_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> branch_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement branch = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> getBranchList() {
      return branch_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement branch = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrBuilder> 
        getBranchOrBuilderList() {
      return branch_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement branch = 1;</code>
     */
    public int getBranchCount() {
      return branch_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement branch = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getBranch(int index) {
      return branch_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement branch = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrBuilder getBranchOrBuilder(
        int index) {
      return branch_.get(index);
    }

    public static final int ORIGIN_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
     */
    public boolean hasOrigin() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
      return origin_;
    }

    private void initFields() {
      branch_ = java.util.Collections.emptyList();
      origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getBranchCount(); i++) {
        if (!getBranch(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasOrigin()) {
        if (!getOrigin().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 < branch_.size(); i++) {
        output.writeMessage(1, branch_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(2, origin_);
      }
      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 < branch_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, branch_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, origin_);
      }
      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.common.serialization.KotlinIr.IrWhen parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen 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.common.serialization.KotlinIr.IrWhen parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen 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.common.serialization.KotlinIr.IrWhen parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen 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.common.serialization.KotlinIr.IrWhen parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen 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.common.serialization.KotlinIr.IrWhen parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen 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.common.serialization.KotlinIr.IrWhen prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        branch_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          branch_ = java.util.Collections.unmodifiableList(branch_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.branch_ = branch_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000001;
        }
        result.origin_ = origin_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen.getDefaultInstance()) return this;
        if (!other.branch_.isEmpty()) {
          if (branch_.isEmpty()) {
            branch_ = other.branch_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureBranchIsMutable();
            branch_.addAll(other.branch_);
          }
          
        }
        if (other.hasOrigin()) {
          mergeOrigin(other.getOrigin());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getBranchCount(); i++) {
          if (!getBranch(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasOrigin()) {
          if (!getOrigin().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.common.serialization.KotlinIr.IrWhen parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen) 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.KotlinIr.IrStatement> branch_ =
        java.util.Collections.emptyList();
      private void ensureBranchIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          branch_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement>(branch_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement branch = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> getBranchList() {
        return java.util.Collections.unmodifiableList(branch_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement branch = 1;</code>
       */
      public int getBranchCount() {
        return branch_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement branch = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getBranch(int index) {
        return branch_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement branch = 1;</code>
       */
      public Builder setBranch(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureBranchIsMutable();
        branch_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement branch = 1;</code>
       */
      public Builder setBranch(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.Builder builderForValue) {
        ensureBranchIsMutable();
        branch_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement branch = 1;</code>
       */
      public Builder addBranch(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureBranchIsMutable();
        branch_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement branch = 1;</code>
       */
      public Builder addBranch(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureBranchIsMutable();
        branch_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement branch = 1;</code>
       */
      public Builder addBranch(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.Builder builderForValue) {
        ensureBranchIsMutable();
        branch_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement branch = 1;</code>
       */
      public Builder addBranch(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.Builder builderForValue) {
        ensureBranchIsMutable();
        branch_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement branch = 1;</code>
       */
      public Builder addAllBranch(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> values) {
        ensureBranchIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, branch_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement branch = 1;</code>
       */
      public Builder clearBranch() {
        branch_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement branch = 1;</code>
       */
      public Builder removeBranch(int index) {
        ensureBranchIsMutable();
        branch_.remove(index);

        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public boolean hasOrigin() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() {
        return origin_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public Builder setOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (value == null) {
          throw new NullPointerException();
        }
        origin_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public Builder setOrigin(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder builderForValue) {
        origin_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public Builder mergeOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            origin_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance()) {
          origin_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.newBuilder(origin_).mergeFrom(value).buildPartial();
        } else {
          origin_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 2;</code>
       */
      public Builder clearOrigin() {
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrWhen)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrWhen)
  }

  public interface IrWhileOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrWhile)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Loop loop = 1;</code>
     */
    boolean hasLoop();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Loop loop = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop getLoop();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrWhile}
   */
  public static final class IrWhile extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrWhile)
      IrWhileOrBuilder {
    // Use IrWhile.newBuilder() to construct.
    private IrWhile(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrWhile(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrWhile getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrWhile(
        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);
      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.KotlinIr.Loop.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = loop_.toBuilder();
              }
              loop_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(loop_);
                loop_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              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<IrWhile> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrWhile>() {
      public IrWhile parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrWhile(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int LOOP_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop loop_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Loop loop = 1;</code>
     */
    public boolean hasLoop() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Loop loop = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop getLoop() {
      return loop_;
    }

    private void initFields() {
      loop_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, loop_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, loop_);
      }
      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.common.serialization.KotlinIr.IrWhile parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile 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.common.serialization.KotlinIr.IrWhile parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile 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.common.serialization.KotlinIr.IrWhile parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile 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.common.serialization.KotlinIr.IrWhile parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile 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.common.serialization.KotlinIr.IrWhile parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile 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.common.serialization.KotlinIr.IrWhile prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        loop_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.loop_ = loop_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile.getDefaultInstance()) return this;
        if (other.hasLoop()) {
          mergeLoop(other.getLoop());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasLoop()) {
          
          return false;
        }
        if (!getLoop().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.common.serialization.KotlinIr.IrWhile parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop loop_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Loop loop = 1;</code>
       */
      public boolean hasLoop() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Loop loop = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop getLoop() {
        return loop_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Loop loop = 1;</code>
       */
      public Builder setLoop(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop value) {
        if (value == null) {
          throw new NullPointerException();
        }
        loop_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Loop loop = 1;</code>
       */
      public Builder setLoop(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop.Builder builderForValue) {
        loop_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Loop loop = 1;</code>
       */
      public Builder mergeLoop(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            loop_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop.getDefaultInstance()) {
          loop_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop.newBuilder(loop_).mergeFrom(value).buildPartial();
        } else {
          loop_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Loop loop = 1;</code>
       */
      public Builder clearLoop() {
        loop_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Loop.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrWhile)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrWhile)
  }

  public interface IrDynamicMemberExpressionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrDynamicMemberExpression)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String memberName = 1;</code>
     */
    boolean hasMemberName();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String memberName = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getMemberName();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 2;</code>
     */
    boolean hasReceiver();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getReceiver();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrDynamicMemberExpression}
   */
  public static final class IrDynamicMemberExpression extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrDynamicMemberExpression)
      IrDynamicMemberExpressionOrBuilder {
    // Use IrDynamicMemberExpression.newBuilder() to construct.
    private IrDynamicMemberExpression(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrDynamicMemberExpression(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrDynamicMemberExpression getDefaultInstanceForType() {
      return defaultInstance;
    }

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

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

    private int bitField0_;
    public static final int MEMBERNAME_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String memberName_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String memberName = 1;</code>
     */
    public boolean hasMemberName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String memberName = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getMemberName() {
      return memberName_;
    }

    public static final int RECEIVER_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression receiver_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 2;</code>
     */
    public boolean hasReceiver() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getReceiver() {
      return receiver_;
    }

    private void initFields() {
      memberName_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      receiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasMemberName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasReceiver()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getMemberName().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getReceiver().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, memberName_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, receiver_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, memberName_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, receiver_);
      }
      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.common.serialization.KotlinIr.IrDynamicMemberExpression parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression 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.common.serialization.KotlinIr.IrDynamicMemberExpression parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression 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.common.serialization.KotlinIr.IrDynamicMemberExpression parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression 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.common.serialization.KotlinIr.IrDynamicMemberExpression parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression 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.common.serialization.KotlinIr.IrDynamicMemberExpression parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression 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.common.serialization.KotlinIr.IrDynamicMemberExpression prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        memberName_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        receiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.memberName_ = memberName_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.receiver_ = receiver_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression.getDefaultInstance()) return this;
        if (other.hasMemberName()) {
          mergeMemberName(other.getMemberName());
        }
        if (other.hasReceiver()) {
          mergeReceiver(other.getReceiver());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasMemberName()) {
          
          return false;
        }
        if (!hasReceiver()) {
          
          return false;
        }
        if (!getMemberName().isInitialized()) {
          
          return false;
        }
        if (!getReceiver().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.common.serialization.KotlinIr.IrDynamicMemberExpression parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String memberName_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String memberName = 1;</code>
       */
      public boolean hasMemberName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String memberName = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getMemberName() {
        return memberName_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String memberName = 1;</code>
       */
      public Builder setMemberName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        memberName_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String memberName = 1;</code>
       */
      public Builder setMemberName(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        memberName_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String memberName = 1;</code>
       */
      public Builder mergeMemberName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            memberName_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          memberName_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(memberName_).mergeFrom(value).buildPartial();
        } else {
          memberName_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String memberName = 1;</code>
       */
      public Builder clearMemberName() {
        memberName_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression receiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 2;</code>
       */
      public boolean hasReceiver() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getReceiver() {
        return receiver_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 2;</code>
       */
      public Builder setReceiver(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        receiver_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 2;</code>
       */
      public Builder setReceiver(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        receiver_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 2;</code>
       */
      public Builder mergeReceiver(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            receiver_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          receiver_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(receiver_).mergeFrom(value).buildPartial();
        } else {
          receiver_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 2;</code>
       */
      public Builder clearReceiver() {
        receiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrDynamicMemberExpression)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrDynamicMemberExpression)
  }

  public interface IrDynamicOperatorExpressionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression.IrDynamicOperator operator = 1;</code>
     */
    boolean hasOperator();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression.IrDynamicOperator operator = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.IrDynamicOperator getOperator();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 2;</code>
     */
    boolean hasReceiver();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getReceiver();

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression> 
        getArgumentList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getArgument(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
     */
    int getArgumentCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression}
   */
  public static final class IrDynamicOperatorExpression extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression)
      IrDynamicOperatorExpressionOrBuilder {
    // Use IrDynamicOperatorExpression.newBuilder() to construct.
    private IrDynamicOperatorExpression(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrDynamicOperatorExpression(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrDynamicOperatorExpression getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrDynamicOperatorExpression(
        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);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.IrDynamicOperator value = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.IrDynamicOperator.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000001;
                operator_ = value;
              }
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = receiver_.toBuilder();
              }
              receiver_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(receiver_);
                receiver_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                argument_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression>();
                mutable_bitField0_ |= 0x00000004;
              }
              argument_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.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_ & 0x00000004) == 0x00000004)) {
          argument_ = java.util.Collections.unmodifiableList(argument_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrDynamicOperatorExpression> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrDynamicOperatorExpression>() {
      public IrDynamicOperatorExpression parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrDynamicOperatorExpression(input, extensionRegistry);
      }
    };

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

    /**
     * Protobuf enum {@code org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression.IrDynamicOperator}
     */
    public enum IrDynamicOperator
        implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
      /**
       * <code>UNARY_PLUS = 1;</code>
       */
      UNARY_PLUS(0, 1),
      /**
       * <code>UNARY_MINUS = 2;</code>
       */
      UNARY_MINUS(1, 2),
      /**
       * <code>EXCL = 3;</code>
       */
      EXCL(2, 3),
      /**
       * <code>PREFIX_INCREMENT = 4;</code>
       */
      PREFIX_INCREMENT(3, 4),
      /**
       * <code>POSTFIX_INCREMENT = 5;</code>
       */
      POSTFIX_INCREMENT(4, 5),
      /**
       * <code>PREFIX_DECREMENT = 6;</code>
       */
      PREFIX_DECREMENT(5, 6),
      /**
       * <code>POSTFIX_DECREMENT = 7;</code>
       */
      POSTFIX_DECREMENT(6, 7),
      /**
       * <code>BINARY_PLUS = 8;</code>
       */
      BINARY_PLUS(7, 8),
      /**
       * <code>BINARY_MINUS = 9;</code>
       */
      BINARY_MINUS(8, 9),
      /**
       * <code>MUL = 10;</code>
       */
      MUL(9, 10),
      /**
       * <code>DIV = 11;</code>
       */
      DIV(10, 11),
      /**
       * <code>MOD = 12;</code>
       */
      MOD(11, 12),
      /**
       * <code>GT = 13;</code>
       */
      GT(12, 13),
      /**
       * <code>LT = 14;</code>
       */
      LT(13, 14),
      /**
       * <code>GE = 15;</code>
       */
      GE(14, 15),
      /**
       * <code>LE = 16;</code>
       */
      LE(15, 16),
      /**
       * <code>EQEQ = 17;</code>
       */
      EQEQ(16, 17),
      /**
       * <code>EXCLEQ = 18;</code>
       */
      EXCLEQ(17, 18),
      /**
       * <code>EQEQEQ = 19;</code>
       */
      EQEQEQ(18, 19),
      /**
       * <code>EXCLEQEQ = 20;</code>
       */
      EXCLEQEQ(19, 20),
      /**
       * <code>ANDAND = 21;</code>
       */
      ANDAND(20, 21),
      /**
       * <code>OROR = 22;</code>
       */
      OROR(21, 22),
      /**
       * <code>EQ = 23;</code>
       */
      EQ(22, 23),
      /**
       * <code>PLUSEQ = 24;</code>
       */
      PLUSEQ(23, 24),
      /**
       * <code>MINUSEQ = 25;</code>
       */
      MINUSEQ(24, 25),
      /**
       * <code>MULEQ = 26;</code>
       */
      MULEQ(25, 26),
      /**
       * <code>DIVEQ = 27;</code>
       */
      DIVEQ(26, 27),
      /**
       * <code>MODEQ = 28;</code>
       */
      MODEQ(27, 28),
      /**
       * <code>ARRAY_ACCESS = 29;</code>
       */
      ARRAY_ACCESS(28, 29),
      /**
       * <code>INVOKE = 30;</code>
       */
      INVOKE(29, 30),
      ;

      /**
       * <code>UNARY_PLUS = 1;</code>
       */
      public static final int UNARY_PLUS_VALUE = 1;
      /**
       * <code>UNARY_MINUS = 2;</code>
       */
      public static final int UNARY_MINUS_VALUE = 2;
      /**
       * <code>EXCL = 3;</code>
       */
      public static final int EXCL_VALUE = 3;
      /**
       * <code>PREFIX_INCREMENT = 4;</code>
       */
      public static final int PREFIX_INCREMENT_VALUE = 4;
      /**
       * <code>POSTFIX_INCREMENT = 5;</code>
       */
      public static final int POSTFIX_INCREMENT_VALUE = 5;
      /**
       * <code>PREFIX_DECREMENT = 6;</code>
       */
      public static final int PREFIX_DECREMENT_VALUE = 6;
      /**
       * <code>POSTFIX_DECREMENT = 7;</code>
       */
      public static final int POSTFIX_DECREMENT_VALUE = 7;
      /**
       * <code>BINARY_PLUS = 8;</code>
       */
      public static final int BINARY_PLUS_VALUE = 8;
      /**
       * <code>BINARY_MINUS = 9;</code>
       */
      public static final int BINARY_MINUS_VALUE = 9;
      /**
       * <code>MUL = 10;</code>
       */
      public static final int MUL_VALUE = 10;
      /**
       * <code>DIV = 11;</code>
       */
      public static final int DIV_VALUE = 11;
      /**
       * <code>MOD = 12;</code>
       */
      public static final int MOD_VALUE = 12;
      /**
       * <code>GT = 13;</code>
       */
      public static final int GT_VALUE = 13;
      /**
       * <code>LT = 14;</code>
       */
      public static final int LT_VALUE = 14;
      /**
       * <code>GE = 15;</code>
       */
      public static final int GE_VALUE = 15;
      /**
       * <code>LE = 16;</code>
       */
      public static final int LE_VALUE = 16;
      /**
       * <code>EQEQ = 17;</code>
       */
      public static final int EQEQ_VALUE = 17;
      /**
       * <code>EXCLEQ = 18;</code>
       */
      public static final int EXCLEQ_VALUE = 18;
      /**
       * <code>EQEQEQ = 19;</code>
       */
      public static final int EQEQEQ_VALUE = 19;
      /**
       * <code>EXCLEQEQ = 20;</code>
       */
      public static final int EXCLEQEQ_VALUE = 20;
      /**
       * <code>ANDAND = 21;</code>
       */
      public static final int ANDAND_VALUE = 21;
      /**
       * <code>OROR = 22;</code>
       */
      public static final int OROR_VALUE = 22;
      /**
       * <code>EQ = 23;</code>
       */
      public static final int EQ_VALUE = 23;
      /**
       * <code>PLUSEQ = 24;</code>
       */
      public static final int PLUSEQ_VALUE = 24;
      /**
       * <code>MINUSEQ = 25;</code>
       */
      public static final int MINUSEQ_VALUE = 25;
      /**
       * <code>MULEQ = 26;</code>
       */
      public static final int MULEQ_VALUE = 26;
      /**
       * <code>DIVEQ = 27;</code>
       */
      public static final int DIVEQ_VALUE = 27;
      /**
       * <code>MODEQ = 28;</code>
       */
      public static final int MODEQ_VALUE = 28;
      /**
       * <code>ARRAY_ACCESS = 29;</code>
       */
      public static final int ARRAY_ACCESS_VALUE = 29;
      /**
       * <code>INVOKE = 30;</code>
       */
      public static final int INVOKE_VALUE = 30;


      public final int getNumber() { return value; }

      public static IrDynamicOperator valueOf(int value) {
        switch (value) {
          case 1: return UNARY_PLUS;
          case 2: return UNARY_MINUS;
          case 3: return EXCL;
          case 4: return PREFIX_INCREMENT;
          case 5: return POSTFIX_INCREMENT;
          case 6: return PREFIX_DECREMENT;
          case 7: return POSTFIX_DECREMENT;
          case 8: return BINARY_PLUS;
          case 9: return BINARY_MINUS;
          case 10: return MUL;
          case 11: return DIV;
          case 12: return MOD;
          case 13: return GT;
          case 14: return LT;
          case 15: return GE;
          case 16: return LE;
          case 17: return EQEQ;
          case 18: return EXCLEQ;
          case 19: return EQEQEQ;
          case 20: return EXCLEQEQ;
          case 21: return ANDAND;
          case 22: return OROR;
          case 23: return EQ;
          case 24: return PLUSEQ;
          case 25: return MINUSEQ;
          case 26: return MULEQ;
          case 27: return DIVEQ;
          case 28: return MODEQ;
          case 29: return ARRAY_ACCESS;
          case 30: return INVOKE;
          default: return null;
        }
      }

      public static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<IrDynamicOperator>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<IrDynamicOperator>
          internalValueMap =
            new org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<IrDynamicOperator>() {
              public IrDynamicOperator findValueByNumber(int number) {
                return IrDynamicOperator.valueOf(number);
              }
            };

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression.IrDynamicOperator)
    }

    private int bitField0_;
    public static final int OPERATOR_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.IrDynamicOperator operator_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression.IrDynamicOperator operator = 1;</code>
     */
    public boolean hasOperator() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression.IrDynamicOperator operator = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.IrDynamicOperator getOperator() {
      return operator_;
    }

    public static final int RECEIVER_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression receiver_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 2;</code>
     */
    public boolean hasReceiver() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getReceiver() {
      return receiver_;
    }

    public static final int ARGUMENT_FIELD_NUMBER = 3;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression> argument_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression> getArgumentList() {
      return argument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpressionOrBuilder> 
        getArgumentOrBuilderList() {
      return argument_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
     */
    public int getArgumentCount() {
      return argument_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getArgument(int index) {
      return argument_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpressionOrBuilder getArgumentOrBuilder(
        int index) {
      return argument_.get(index);
    }

    private void initFields() {
      operator_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.IrDynamicOperator.UNARY_PLUS;
      receiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      argument_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeEnum(1, operator_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, receiver_);
      }
      for (int i = 0; i < argument_.size(); i++) {
        output.writeMessage(3, argument_.get(i));
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(1, operator_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, receiver_);
      }
      for (int i = 0; i < argument_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, argument_.get(i));
      }
      size += unknownFields.size();
      memoizedSerializedSize = size;
      return size;
    }

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

    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression 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.common.serialization.KotlinIr.IrDynamicOperatorExpression parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression 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.common.serialization.KotlinIr.IrDynamicOperatorExpression parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression 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.common.serialization.KotlinIr.IrDynamicOperatorExpression parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression 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.common.serialization.KotlinIr.IrDynamicOperatorExpression parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression 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.common.serialization.KotlinIr.IrDynamicOperatorExpression prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        operator_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.IrDynamicOperator.UNARY_PLUS;
        bitField0_ = (bitField0_ & ~0x00000001);
        receiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        argument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.operator_ = operator_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.receiver_ = receiver_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          argument_ = java.util.Collections.unmodifiableList(argument_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.argument_ = argument_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.getDefaultInstance()) return this;
        if (other.hasOperator()) {
          setOperator(other.getOperator());
        }
        if (other.hasReceiver()) {
          mergeReceiver(other.getReceiver());
        }
        if (!other.argument_.isEmpty()) {
          if (argument_.isEmpty()) {
            argument_ = other.argument_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureArgumentIsMutable();
            argument_.addAll(other.argument_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.IrDynamicOperator operator_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.IrDynamicOperator.UNARY_PLUS;
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression.IrDynamicOperator operator = 1;</code>
       */
      public boolean hasOperator() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression.IrDynamicOperator operator = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.IrDynamicOperator getOperator() {
        return operator_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression.IrDynamicOperator operator = 1;</code>
       */
      public Builder setOperator(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.IrDynamicOperator value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        operator_ = value;
        
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression.IrDynamicOperator operator = 1;</code>
       */
      public Builder clearOperator() {
        bitField0_ = (bitField0_ & ~0x00000001);
        operator_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.IrDynamicOperator.UNARY_PLUS;
        
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression receiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 2;</code>
       */
      public boolean hasReceiver() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getReceiver() {
        return receiver_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 2;</code>
       */
      public Builder setReceiver(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        receiver_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 2;</code>
       */
      public Builder setReceiver(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        receiver_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 2;</code>
       */
      public Builder mergeReceiver(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            receiver_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          receiver_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(receiver_).mergeFrom(value).buildPartial();
        } else {
          receiver_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression receiver = 2;</code>
       */
      public Builder clearReceiver() {
        receiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

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

      private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression> argument_ =
        java.util.Collections.emptyList();
      private void ensureArgumentIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          argument_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression>(argument_);
          bitField0_ |= 0x00000004;
         }
      }

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

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
       */
      public Builder setArgument(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        ensureArgumentIsMutable();
        argument_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
       */
      public Builder addArgument(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureArgumentIsMutable();
        argument_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
       */
      public Builder addArgument(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureArgumentIsMutable();
        argument_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
       */
      public Builder addArgument(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        ensureArgumentIsMutable();
        argument_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
       */
      public Builder addArgument(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        ensureArgumentIsMutable();
        argument_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
       */
      public Builder addAllArgument(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression> values) {
        ensureArgumentIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, argument_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrExpression argument = 3;</code>
       */
      public Builder clearArgument() {
        argument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);

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

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression)
  }

  public interface IrOperationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrOperation)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBlock block = 1;</code>
     */
    boolean hasBlock();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBlock block = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock getBlock();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBreak break = 2;</code>
     */
    boolean hasBreak();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBreak break = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak getBreak();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrCall call = 3;</code>
     */
    boolean hasCall();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrCall call = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall getCall();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClassReference class_reference = 4;</code>
     */
    boolean hasClassReference();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClassReference class_reference = 4;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference getClassReference();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrComposite composite = 5;</code>
     */
    boolean hasComposite();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrComposite composite = 5;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite getComposite();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConst const = 6;</code>
     */
    boolean hasConst();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConst const = 6;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst getConst();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrContinue continue = 7;</code>
     */
    boolean hasContinue();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrContinue continue = 7;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue getContinue();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDelegatingConstructorCall delegating_constructor_call = 8;</code>
     */
    boolean hasDelegatingConstructorCall();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDelegatingConstructorCall delegating_constructor_call = 8;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall getDelegatingConstructorCall();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDoWhile do_while = 9;</code>
     */
    boolean hasDoWhile();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDoWhile do_while = 9;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile getDoWhile();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrEnumConstructorCall enum_constructor_call = 10;</code>
     */
    boolean hasEnumConstructorCall();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrEnumConstructorCall enum_constructor_call = 10;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall getEnumConstructorCall();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunctionReference function_reference = 11;</code>
     */
    boolean hasFunctionReference();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunctionReference function_reference = 11;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference getFunctionReference();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetClass get_class = 12;</code>
     */
    boolean hasGetClass();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetClass get_class = 12;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass getGetClass();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetEnumValue get_enum_value = 13;</code>
     */
    boolean hasGetEnumValue();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetEnumValue get_enum_value = 13;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue getGetEnumValue();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetField get_field = 14;</code>
     */
    boolean hasGetField();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetField get_field = 14;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField getGetField();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetObject get_object = 15;</code>
     */
    boolean hasGetObject();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetObject get_object = 15;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject getGetObject();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetValue get_value = 16;</code>
     */
    boolean hasGetValue();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetValue get_value = 16;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue getGetValue();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrInstanceInitializerCall instance_initializer_call = 17;</code>
     */
    boolean hasInstanceInitializerCall();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrInstanceInitializerCall instance_initializer_call = 17;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall getInstanceInitializerCall();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrPropertyReference property_reference = 18;</code>
     */
    boolean hasPropertyReference();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrPropertyReference property_reference = 18;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference getPropertyReference();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrReturn return = 19;</code>
     */
    boolean hasReturn();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrReturn return = 19;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn getReturn();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSetField set_field = 20;</code>
     */
    boolean hasSetField();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSetField set_field = 20;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField getSetField();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSetVariable set_variable = 21;</code>
     */
    boolean hasSetVariable();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSetVariable set_variable = 21;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable getSetVariable();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStringConcat string_concat = 22;</code>
     */
    boolean hasStringConcat();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStringConcat string_concat = 22;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat getStringConcat();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrThrow throw = 23;</code>
     */
    boolean hasThrow();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrThrow throw = 23;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow getThrow();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTry try = 24;</code>
     */
    boolean hasTry();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTry try = 24;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry getTry();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeOp type_op = 25;</code>
     */
    boolean hasTypeOp();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeOp type_op = 25;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp getTypeOp();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrVararg vararg = 26;</code>
     */
    boolean hasVararg();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrVararg vararg = 26;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg getVararg();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrWhen when = 27;</code>
     */
    boolean hasWhen();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrWhen when = 27;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen getWhen();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrWhile while = 28;</code>
     */
    boolean hasWhile();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrWhile while = 28;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile getWhile();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicMemberExpression dynamic_member = 29;</code>
     */
    boolean hasDynamicMember();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicMemberExpression dynamic_member = 29;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression getDynamicMember();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression dynamic_operator = 30;</code>
     */
    boolean hasDynamicOperator();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression dynamic_operator = 30;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression getDynamicOperator();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedPropertyReference local_delegated_property_reference = 31;</code>
     */
    boolean hasLocalDelegatedPropertyReference();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedPropertyReference local_delegated_property_reference = 31;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference getLocalDelegatedPropertyReference();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall constructor_call = 32;</code>
     */
    boolean hasConstructorCall();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall constructor_call = 32;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall getConstructorCall();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrOperation}
   *
   * <pre>
   * TODO: we need an extension mechanism to accomodate new
   * IR operators in upcoming releases.
   * </pre>
   */
  public static final class IrOperation extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrOperation)
      IrOperationOrBuilder {
    // Use IrOperation.newBuilder() to construct.
    private IrOperation(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrOperation(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrOperation getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrOperation(
        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);
      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.KotlinIr.IrBlock.Builder subBuilder = null;
              if (operationCase_ == 1) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 1;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak.Builder subBuilder = null;
              if (operationCase_ == 2) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 2;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall.Builder subBuilder = null;
              if (operationCase_ == 3) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 3;
              break;
            }
            case 34: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference.Builder subBuilder = null;
              if (operationCase_ == 4) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 4;
              break;
            }
            case 42: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite.Builder subBuilder = null;
              if (operationCase_ == 5) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 5;
              break;
            }
            case 50: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst.Builder subBuilder = null;
              if (operationCase_ == 6) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 6;
              break;
            }
            case 58: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue.Builder subBuilder = null;
              if (operationCase_ == 7) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 7;
              break;
            }
            case 66: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall.Builder subBuilder = null;
              if (operationCase_ == 8) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 8;
              break;
            }
            case 74: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile.Builder subBuilder = null;
              if (operationCase_ == 9) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 9;
              break;
            }
            case 82: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall.Builder subBuilder = null;
              if (operationCase_ == 10) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 10;
              break;
            }
            case 90: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference.Builder subBuilder = null;
              if (operationCase_ == 11) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 11;
              break;
            }
            case 98: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass.Builder subBuilder = null;
              if (operationCase_ == 12) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 12;
              break;
            }
            case 106: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue.Builder subBuilder = null;
              if (operationCase_ == 13) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 13;
              break;
            }
            case 114: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField.Builder subBuilder = null;
              if (operationCase_ == 14) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 14;
              break;
            }
            case 122: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject.Builder subBuilder = null;
              if (operationCase_ == 15) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 15;
              break;
            }
            case 130: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue.Builder subBuilder = null;
              if (operationCase_ == 16) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 16;
              break;
            }
            case 138: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall.Builder subBuilder = null;
              if (operationCase_ == 17) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 17;
              break;
            }
            case 146: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference.Builder subBuilder = null;
              if (operationCase_ == 18) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 18;
              break;
            }
            case 154: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn.Builder subBuilder = null;
              if (operationCase_ == 19) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 19;
              break;
            }
            case 162: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField.Builder subBuilder = null;
              if (operationCase_ == 20) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 20;
              break;
            }
            case 170: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable.Builder subBuilder = null;
              if (operationCase_ == 21) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 21;
              break;
            }
            case 178: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat.Builder subBuilder = null;
              if (operationCase_ == 22) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 22;
              break;
            }
            case 186: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow.Builder subBuilder = null;
              if (operationCase_ == 23) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 23;
              break;
            }
            case 194: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry.Builder subBuilder = null;
              if (operationCase_ == 24) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 24;
              break;
            }
            case 202: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp.Builder subBuilder = null;
              if (operationCase_ == 25) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 25;
              break;
            }
            case 210: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg.Builder subBuilder = null;
              if (operationCase_ == 26) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 26;
              break;
            }
            case 218: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen.Builder subBuilder = null;
              if (operationCase_ == 27) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 27;
              break;
            }
            case 226: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile.Builder subBuilder = null;
              if (operationCase_ == 28) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 28;
              break;
            }
            case 234: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression.Builder subBuilder = null;
              if (operationCase_ == 29) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 29;
              break;
            }
            case 242: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.Builder subBuilder = null;
              if (operationCase_ == 30) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 30;
              break;
            }
            case 250: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference.Builder subBuilder = null;
              if (operationCase_ == 31) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 31;
              break;
            }
            case 258: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall.Builder subBuilder = null;
              if (operationCase_ == 32) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall) operation_).toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall) operation_);
                operation_ = subBuilder.buildPartial();
              }
              operationCase_ = 32;
              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<IrOperation> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrOperation>() {
      public IrOperation parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrOperation(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    private int operationCase_ = 0;
    private java.lang.Object operation_;
    public enum OperationCase
        implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
      BLOCK(1),
      BREAK(2),
      CALL(3),
      CLASS_REFERENCE(4),
      COMPOSITE(5),
      CONST(6),
      CONTINUE(7),
      DELEGATING_CONSTRUCTOR_CALL(8),
      DO_WHILE(9),
      ENUM_CONSTRUCTOR_CALL(10),
      FUNCTION_REFERENCE(11),
      GET_CLASS(12),
      GET_ENUM_VALUE(13),
      GET_FIELD(14),
      GET_OBJECT(15),
      GET_VALUE(16),
      INSTANCE_INITIALIZER_CALL(17),
      PROPERTY_REFERENCE(18),
      RETURN(19),
      SET_FIELD(20),
      SET_VARIABLE(21),
      STRING_CONCAT(22),
      THROW(23),
      TRY(24),
      TYPE_OP(25),
      VARARG(26),
      WHEN(27),
      WHILE(28),
      DYNAMIC_MEMBER(29),
      DYNAMIC_OPERATOR(30),
      LOCAL_DELEGATED_PROPERTY_REFERENCE(31),
      CONSTRUCTOR_CALL(32),
      OPERATION_NOT_SET(0);
      private int value = 0;
      private OperationCase(int value) {
        this.value = value;
      }
      public static OperationCase valueOf(int value) {
        switch (value) {
          case 1: return BLOCK;
          case 2: return BREAK;
          case 3: return CALL;
          case 4: return CLASS_REFERENCE;
          case 5: return COMPOSITE;
          case 6: return CONST;
          case 7: return CONTINUE;
          case 8: return DELEGATING_CONSTRUCTOR_CALL;
          case 9: return DO_WHILE;
          case 10: return ENUM_CONSTRUCTOR_CALL;
          case 11: return FUNCTION_REFERENCE;
          case 12: return GET_CLASS;
          case 13: return GET_ENUM_VALUE;
          case 14: return GET_FIELD;
          case 15: return GET_OBJECT;
          case 16: return GET_VALUE;
          case 17: return INSTANCE_INITIALIZER_CALL;
          case 18: return PROPERTY_REFERENCE;
          case 19: return RETURN;
          case 20: return SET_FIELD;
          case 21: return SET_VARIABLE;
          case 22: return STRING_CONCAT;
          case 23: return THROW;
          case 24: return TRY;
          case 25: return TYPE_OP;
          case 26: return VARARG;
          case 27: return WHEN;
          case 28: return WHILE;
          case 29: return DYNAMIC_MEMBER;
          case 30: return DYNAMIC_OPERATOR;
          case 31: return LOCAL_DELEGATED_PROPERTY_REFERENCE;
          case 32: return CONSTRUCTOR_CALL;
          case 0: return OPERATION_NOT_SET;
          default: throw new java.lang.IllegalArgumentException(
            "Value is undefined for this oneof enum.");
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public OperationCase
    getOperationCase() {
      return OperationCase.valueOf(
          operationCase_);
    }

    public static final int BLOCK_FIELD_NUMBER = 1;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBlock block = 1;</code>
     */
    public boolean hasBlock() {
      return operationCase_ == 1;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBlock block = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock getBlock() {
      if (operationCase_ == 1) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock.getDefaultInstance();
    }

    public static final int BREAK_FIELD_NUMBER = 2;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBreak break = 2;</code>
     */
    public boolean hasBreak() {
      return operationCase_ == 2;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBreak break = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak getBreak() {
      if (operationCase_ == 2) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak.getDefaultInstance();
    }

    public static final int CALL_FIELD_NUMBER = 3;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrCall call = 3;</code>
     */
    public boolean hasCall() {
      return operationCase_ == 3;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrCall call = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall getCall() {
      if (operationCase_ == 3) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall.getDefaultInstance();
    }

    public static final int CLASS_REFERENCE_FIELD_NUMBER = 4;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClassReference class_reference = 4;</code>
     */
    public boolean hasClassReference() {
      return operationCase_ == 4;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClassReference class_reference = 4;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference getClassReference() {
      if (operationCase_ == 4) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference.getDefaultInstance();
    }

    public static final int COMPOSITE_FIELD_NUMBER = 5;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrComposite composite = 5;</code>
     */
    public boolean hasComposite() {
      return operationCase_ == 5;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrComposite composite = 5;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite getComposite() {
      if (operationCase_ == 5) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite.getDefaultInstance();
    }

    public static final int CONST_FIELD_NUMBER = 6;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConst const = 6;</code>
     */
    public boolean hasConst() {
      return operationCase_ == 6;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConst const = 6;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst getConst() {
      if (operationCase_ == 6) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst.getDefaultInstance();
    }

    public static final int CONTINUE_FIELD_NUMBER = 7;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrContinue continue = 7;</code>
     */
    public boolean hasContinue() {
      return operationCase_ == 7;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrContinue continue = 7;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue getContinue() {
      if (operationCase_ == 7) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue.getDefaultInstance();
    }

    public static final int DELEGATING_CONSTRUCTOR_CALL_FIELD_NUMBER = 8;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDelegatingConstructorCall delegating_constructor_call = 8;</code>
     */
    public boolean hasDelegatingConstructorCall() {
      return operationCase_ == 8;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDelegatingConstructorCall delegating_constructor_call = 8;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall getDelegatingConstructorCall() {
      if (operationCase_ == 8) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall.getDefaultInstance();
    }

    public static final int DO_WHILE_FIELD_NUMBER = 9;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDoWhile do_while = 9;</code>
     */
    public boolean hasDoWhile() {
      return operationCase_ == 9;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDoWhile do_while = 9;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile getDoWhile() {
      if (operationCase_ == 9) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile.getDefaultInstance();
    }

    public static final int ENUM_CONSTRUCTOR_CALL_FIELD_NUMBER = 10;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrEnumConstructorCall enum_constructor_call = 10;</code>
     */
    public boolean hasEnumConstructorCall() {
      return operationCase_ == 10;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrEnumConstructorCall enum_constructor_call = 10;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall getEnumConstructorCall() {
      if (operationCase_ == 10) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall.getDefaultInstance();
    }

    public static final int FUNCTION_REFERENCE_FIELD_NUMBER = 11;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunctionReference function_reference = 11;</code>
     */
    public boolean hasFunctionReference() {
      return operationCase_ == 11;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunctionReference function_reference = 11;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference getFunctionReference() {
      if (operationCase_ == 11) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference.getDefaultInstance();
    }

    public static final int GET_CLASS_FIELD_NUMBER = 12;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetClass get_class = 12;</code>
     */
    public boolean hasGetClass() {
      return operationCase_ == 12;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetClass get_class = 12;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass getGetClass() {
      if (operationCase_ == 12) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass.getDefaultInstance();
    }

    public static final int GET_ENUM_VALUE_FIELD_NUMBER = 13;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetEnumValue get_enum_value = 13;</code>
     */
    public boolean hasGetEnumValue() {
      return operationCase_ == 13;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetEnumValue get_enum_value = 13;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue getGetEnumValue() {
      if (operationCase_ == 13) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue.getDefaultInstance();
    }

    public static final int GET_FIELD_FIELD_NUMBER = 14;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetField get_field = 14;</code>
     */
    public boolean hasGetField() {
      return operationCase_ == 14;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetField get_field = 14;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField getGetField() {
      if (operationCase_ == 14) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField.getDefaultInstance();
    }

    public static final int GET_OBJECT_FIELD_NUMBER = 15;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetObject get_object = 15;</code>
     */
    public boolean hasGetObject() {
      return operationCase_ == 15;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetObject get_object = 15;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject getGetObject() {
      if (operationCase_ == 15) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject.getDefaultInstance();
    }

    public static final int GET_VALUE_FIELD_NUMBER = 16;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetValue get_value = 16;</code>
     */
    public boolean hasGetValue() {
      return operationCase_ == 16;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetValue get_value = 16;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue getGetValue() {
      if (operationCase_ == 16) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue.getDefaultInstance();
    }

    public static final int INSTANCE_INITIALIZER_CALL_FIELD_NUMBER = 17;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrInstanceInitializerCall instance_initializer_call = 17;</code>
     */
    public boolean hasInstanceInitializerCall() {
      return operationCase_ == 17;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrInstanceInitializerCall instance_initializer_call = 17;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall getInstanceInitializerCall() {
      if (operationCase_ == 17) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall.getDefaultInstance();
    }

    public static final int PROPERTY_REFERENCE_FIELD_NUMBER = 18;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrPropertyReference property_reference = 18;</code>
     */
    public boolean hasPropertyReference() {
      return operationCase_ == 18;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrPropertyReference property_reference = 18;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference getPropertyReference() {
      if (operationCase_ == 18) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference.getDefaultInstance();
    }

    public static final int RETURN_FIELD_NUMBER = 19;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrReturn return = 19;</code>
     */
    public boolean hasReturn() {
      return operationCase_ == 19;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrReturn return = 19;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn getReturn() {
      if (operationCase_ == 19) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn.getDefaultInstance();
    }

    public static final int SET_FIELD_FIELD_NUMBER = 20;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSetField set_field = 20;</code>
     */
    public boolean hasSetField() {
      return operationCase_ == 20;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSetField set_field = 20;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField getSetField() {
      if (operationCase_ == 20) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField.getDefaultInstance();
    }

    public static final int SET_VARIABLE_FIELD_NUMBER = 21;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSetVariable set_variable = 21;</code>
     */
    public boolean hasSetVariable() {
      return operationCase_ == 21;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSetVariable set_variable = 21;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable getSetVariable() {
      if (operationCase_ == 21) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable.getDefaultInstance();
    }

    public static final int STRING_CONCAT_FIELD_NUMBER = 22;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStringConcat string_concat = 22;</code>
     */
    public boolean hasStringConcat() {
      return operationCase_ == 22;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStringConcat string_concat = 22;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat getStringConcat() {
      if (operationCase_ == 22) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat.getDefaultInstance();
    }

    public static final int THROW_FIELD_NUMBER = 23;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrThrow throw = 23;</code>
     */
    public boolean hasThrow() {
      return operationCase_ == 23;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrThrow throw = 23;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow getThrow() {
      if (operationCase_ == 23) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow.getDefaultInstance();
    }

    public static final int TRY_FIELD_NUMBER = 24;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTry try = 24;</code>
     */
    public boolean hasTry() {
      return operationCase_ == 24;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTry try = 24;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry getTry() {
      if (operationCase_ == 24) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry.getDefaultInstance();
    }

    public static final int TYPE_OP_FIELD_NUMBER = 25;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeOp type_op = 25;</code>
     */
    public boolean hasTypeOp() {
      return operationCase_ == 25;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeOp type_op = 25;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp getTypeOp() {
      if (operationCase_ == 25) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp.getDefaultInstance();
    }

    public static final int VARARG_FIELD_NUMBER = 26;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrVararg vararg = 26;</code>
     */
    public boolean hasVararg() {
      return operationCase_ == 26;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrVararg vararg = 26;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg getVararg() {
      if (operationCase_ == 26) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg.getDefaultInstance();
    }

    public static final int WHEN_FIELD_NUMBER = 27;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrWhen when = 27;</code>
     */
    public boolean hasWhen() {
      return operationCase_ == 27;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrWhen when = 27;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen getWhen() {
      if (operationCase_ == 27) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen.getDefaultInstance();
    }

    public static final int WHILE_FIELD_NUMBER = 28;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrWhile while = 28;</code>
     */
    public boolean hasWhile() {
      return operationCase_ == 28;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrWhile while = 28;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile getWhile() {
      if (operationCase_ == 28) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile.getDefaultInstance();
    }

    public static final int DYNAMIC_MEMBER_FIELD_NUMBER = 29;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicMemberExpression dynamic_member = 29;</code>
     */
    public boolean hasDynamicMember() {
      return operationCase_ == 29;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicMemberExpression dynamic_member = 29;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression getDynamicMember() {
      if (operationCase_ == 29) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression.getDefaultInstance();
    }

    public static final int DYNAMIC_OPERATOR_FIELD_NUMBER = 30;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression dynamic_operator = 30;</code>
     */
    public boolean hasDynamicOperator() {
      return operationCase_ == 30;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression dynamic_operator = 30;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression getDynamicOperator() {
      if (operationCase_ == 30) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.getDefaultInstance();
    }

    public static final int LOCAL_DELEGATED_PROPERTY_REFERENCE_FIELD_NUMBER = 31;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedPropertyReference local_delegated_property_reference = 31;</code>
     */
    public boolean hasLocalDelegatedPropertyReference() {
      return operationCase_ == 31;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedPropertyReference local_delegated_property_reference = 31;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference getLocalDelegatedPropertyReference() {
      if (operationCase_ == 31) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference.getDefaultInstance();
    }

    public static final int CONSTRUCTOR_CALL_FIELD_NUMBER = 32;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall constructor_call = 32;</code>
     */
    public boolean hasConstructorCall() {
      return operationCase_ == 32;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall constructor_call = 32;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall getConstructorCall() {
      if (operationCase_ == 32) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall) operation_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall.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 (hasBlock()) {
        if (!getBlock().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasBreak()) {
        if (!getBreak().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasCall()) {
        if (!getCall().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasClassReference()) {
        if (!getClassReference().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasComposite()) {
        if (!getComposite().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasConst()) {
        if (!getConst().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasContinue()) {
        if (!getContinue().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasDelegatingConstructorCall()) {
        if (!getDelegatingConstructorCall().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasDoWhile()) {
        if (!getDoWhile().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasEnumConstructorCall()) {
        if (!getEnumConstructorCall().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasFunctionReference()) {
        if (!getFunctionReference().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasGetClass()) {
        if (!getGetClass().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasGetEnumValue()) {
        if (!getGetEnumValue().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasGetField()) {
        if (!getGetField().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasGetObject()) {
        if (!getGetObject().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasGetValue()) {
        if (!getGetValue().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasInstanceInitializerCall()) {
        if (!getInstanceInitializerCall().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasPropertyReference()) {
        if (!getPropertyReference().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasReturn()) {
        if (!getReturn().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSetField()) {
        if (!getSetField().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSetVariable()) {
        if (!getSetVariable().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasStringConcat()) {
        if (!getStringConcat().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasThrow()) {
        if (!getThrow().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasTry()) {
        if (!getTry().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasTypeOp()) {
        if (!getTypeOp().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasVararg()) {
        if (!getVararg().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasWhen()) {
        if (!getWhen().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasWhile()) {
        if (!getWhile().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasDynamicMember()) {
        if (!getDynamicMember().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasDynamicOperator()) {
        if (!getDynamicOperator().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasLocalDelegatedPropertyReference()) {
        if (!getLocalDelegatedPropertyReference().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasConstructorCall()) {
        if (!getConstructorCall().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (operationCase_ == 1) {
        output.writeMessage(1, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock) operation_);
      }
      if (operationCase_ == 2) {
        output.writeMessage(2, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak) operation_);
      }
      if (operationCase_ == 3) {
        output.writeMessage(3, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall) operation_);
      }
      if (operationCase_ == 4) {
        output.writeMessage(4, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference) operation_);
      }
      if (operationCase_ == 5) {
        output.writeMessage(5, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite) operation_);
      }
      if (operationCase_ == 6) {
        output.writeMessage(6, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst) operation_);
      }
      if (operationCase_ == 7) {
        output.writeMessage(7, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue) operation_);
      }
      if (operationCase_ == 8) {
        output.writeMessage(8, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall) operation_);
      }
      if (operationCase_ == 9) {
        output.writeMessage(9, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile) operation_);
      }
      if (operationCase_ == 10) {
        output.writeMessage(10, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall) operation_);
      }
      if (operationCase_ == 11) {
        output.writeMessage(11, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference) operation_);
      }
      if (operationCase_ == 12) {
        output.writeMessage(12, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass) operation_);
      }
      if (operationCase_ == 13) {
        output.writeMessage(13, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue) operation_);
      }
      if (operationCase_ == 14) {
        output.writeMessage(14, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField) operation_);
      }
      if (operationCase_ == 15) {
        output.writeMessage(15, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject) operation_);
      }
      if (operationCase_ == 16) {
        output.writeMessage(16, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue) operation_);
      }
      if (operationCase_ == 17) {
        output.writeMessage(17, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall) operation_);
      }
      if (operationCase_ == 18) {
        output.writeMessage(18, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference) operation_);
      }
      if (operationCase_ == 19) {
        output.writeMessage(19, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn) operation_);
      }
      if (operationCase_ == 20) {
        output.writeMessage(20, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField) operation_);
      }
      if (operationCase_ == 21) {
        output.writeMessage(21, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable) operation_);
      }
      if (operationCase_ == 22) {
        output.writeMessage(22, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat) operation_);
      }
      if (operationCase_ == 23) {
        output.writeMessage(23, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow) operation_);
      }
      if (operationCase_ == 24) {
        output.writeMessage(24, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry) operation_);
      }
      if (operationCase_ == 25) {
        output.writeMessage(25, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp) operation_);
      }
      if (operationCase_ == 26) {
        output.writeMessage(26, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg) operation_);
      }
      if (operationCase_ == 27) {
        output.writeMessage(27, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen) operation_);
      }
      if (operationCase_ == 28) {
        output.writeMessage(28, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile) operation_);
      }
      if (operationCase_ == 29) {
        output.writeMessage(29, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression) operation_);
      }
      if (operationCase_ == 30) {
        output.writeMessage(30, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression) operation_);
      }
      if (operationCase_ == 31) {
        output.writeMessage(31, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference) operation_);
      }
      if (operationCase_ == 32) {
        output.writeMessage(32, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall) operation_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (operationCase_ == 1) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock) operation_);
      }
      if (operationCase_ == 2) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak) operation_);
      }
      if (operationCase_ == 3) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall) operation_);
      }
      if (operationCase_ == 4) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference) operation_);
      }
      if (operationCase_ == 5) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite) operation_);
      }
      if (operationCase_ == 6) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(6, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst) operation_);
      }
      if (operationCase_ == 7) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(7, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue) operation_);
      }
      if (operationCase_ == 8) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(8, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall) operation_);
      }
      if (operationCase_ == 9) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(9, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile) operation_);
      }
      if (operationCase_ == 10) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(10, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall) operation_);
      }
      if (operationCase_ == 11) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(11, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference) operation_);
      }
      if (operationCase_ == 12) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(12, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass) operation_);
      }
      if (operationCase_ == 13) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(13, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue) operation_);
      }
      if (operationCase_ == 14) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(14, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField) operation_);
      }
      if (operationCase_ == 15) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(15, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject) operation_);
      }
      if (operationCase_ == 16) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(16, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue) operation_);
      }
      if (operationCase_ == 17) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(17, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall) operation_);
      }
      if (operationCase_ == 18) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(18, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference) operation_);
      }
      if (operationCase_ == 19) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(19, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn) operation_);
      }
      if (operationCase_ == 20) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(20, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField) operation_);
      }
      if (operationCase_ == 21) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(21, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable) operation_);
      }
      if (operationCase_ == 22) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(22, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat) operation_);
      }
      if (operationCase_ == 23) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(23, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow) operation_);
      }
      if (operationCase_ == 24) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(24, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry) operation_);
      }
      if (operationCase_ == 25) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(25, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp) operation_);
      }
      if (operationCase_ == 26) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(26, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg) operation_);
      }
      if (operationCase_ == 27) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(27, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen) operation_);
      }
      if (operationCase_ == 28) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(28, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile) operation_);
      }
      if (operationCase_ == 29) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(29, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression) operation_);
      }
      if (operationCase_ == 30) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(30, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression) operation_);
      }
      if (operationCase_ == 31) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(31, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference) operation_);
      }
      if (operationCase_ == 32) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(32, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall) operation_);
      }
      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.common.serialization.KotlinIr.IrOperation parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation 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.common.serialization.KotlinIr.IrOperation parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation 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.common.serialization.KotlinIr.IrOperation parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation 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.common.serialization.KotlinIr.IrOperation parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation 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.common.serialization.KotlinIr.IrOperation parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation 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.common.serialization.KotlinIr.IrOperation prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrOperation}
     *
     * <pre>
     * TODO: we need an extension mechanism to accomodate new
     * IR operators in upcoming releases.
     * </pre>
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.backend.common.serialization.IrOperation)
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperationOrBuilder {
      // Construct using org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        operationCase_ = 0;
        operation_ = null;
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (operationCase_ == 1) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 2) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 3) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 4) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 5) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 6) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 7) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 8) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 9) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 10) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 11) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 12) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 13) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 14) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 15) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 16) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 17) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 18) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 19) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 20) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 21) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 22) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 23) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 24) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 25) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 26) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 27) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 28) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 29) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 30) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 31) {
          result.operation_ = operation_;
        }
        if (operationCase_ == 32) {
          result.operation_ = operation_;
        }
        result.bitField0_ = to_bitField0_;
        result.operationCase_ = operationCase_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation.getDefaultInstance()) return this;
        switch (other.getOperationCase()) {
          case BLOCK: {
            mergeBlock(other.getBlock());
            break;
          }
          case BREAK: {
            mergeBreak(other.getBreak());
            break;
          }
          case CALL: {
            mergeCall(other.getCall());
            break;
          }
          case CLASS_REFERENCE: {
            mergeClassReference(other.getClassReference());
            break;
          }
          case COMPOSITE: {
            mergeComposite(other.getComposite());
            break;
          }
          case CONST: {
            mergeConst(other.getConst());
            break;
          }
          case CONTINUE: {
            mergeContinue(other.getContinue());
            break;
          }
          case DELEGATING_CONSTRUCTOR_CALL: {
            mergeDelegatingConstructorCall(other.getDelegatingConstructorCall());
            break;
          }
          case DO_WHILE: {
            mergeDoWhile(other.getDoWhile());
            break;
          }
          case ENUM_CONSTRUCTOR_CALL: {
            mergeEnumConstructorCall(other.getEnumConstructorCall());
            break;
          }
          case FUNCTION_REFERENCE: {
            mergeFunctionReference(other.getFunctionReference());
            break;
          }
          case GET_CLASS: {
            mergeGetClass(other.getGetClass());
            break;
          }
          case GET_ENUM_VALUE: {
            mergeGetEnumValue(other.getGetEnumValue());
            break;
          }
          case GET_FIELD: {
            mergeGetField(other.getGetField());
            break;
          }
          case GET_OBJECT: {
            mergeGetObject(other.getGetObject());
            break;
          }
          case GET_VALUE: {
            mergeGetValue(other.getGetValue());
            break;
          }
          case INSTANCE_INITIALIZER_CALL: {
            mergeInstanceInitializerCall(other.getInstanceInitializerCall());
            break;
          }
          case PROPERTY_REFERENCE: {
            mergePropertyReference(other.getPropertyReference());
            break;
          }
          case RETURN: {
            mergeReturn(other.getReturn());
            break;
          }
          case SET_FIELD: {
            mergeSetField(other.getSetField());
            break;
          }
          case SET_VARIABLE: {
            mergeSetVariable(other.getSetVariable());
            break;
          }
          case STRING_CONCAT: {
            mergeStringConcat(other.getStringConcat());
            break;
          }
          case THROW: {
            mergeThrow(other.getThrow());
            break;
          }
          case TRY: {
            mergeTry(other.getTry());
            break;
          }
          case TYPE_OP: {
            mergeTypeOp(other.getTypeOp());
            break;
          }
          case VARARG: {
            mergeVararg(other.getVararg());
            break;
          }
          case WHEN: {
            mergeWhen(other.getWhen());
            break;
          }
          case WHILE: {
            mergeWhile(other.getWhile());
            break;
          }
          case DYNAMIC_MEMBER: {
            mergeDynamicMember(other.getDynamicMember());
            break;
          }
          case DYNAMIC_OPERATOR: {
            mergeDynamicOperator(other.getDynamicOperator());
            break;
          }
          case LOCAL_DELEGATED_PROPERTY_REFERENCE: {
            mergeLocalDelegatedPropertyReference(other.getLocalDelegatedPropertyReference());
            break;
          }
          case CONSTRUCTOR_CALL: {
            mergeConstructorCall(other.getConstructorCall());
            break;
          }
          case OPERATION_NOT_SET: {
            break;
          }
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (hasBlock()) {
          if (!getBlock().isInitialized()) {
            
            return false;
          }
        }
        if (hasBreak()) {
          if (!getBreak().isInitialized()) {
            
            return false;
          }
        }
        if (hasCall()) {
          if (!getCall().isInitialized()) {
            
            return false;
          }
        }
        if (hasClassReference()) {
          if (!getClassReference().isInitialized()) {
            
            return false;
          }
        }
        if (hasComposite()) {
          if (!getComposite().isInitialized()) {
            
            return false;
          }
        }
        if (hasConst()) {
          if (!getConst().isInitialized()) {
            
            return false;
          }
        }
        if (hasContinue()) {
          if (!getContinue().isInitialized()) {
            
            return false;
          }
        }
        if (hasDelegatingConstructorCall()) {
          if (!getDelegatingConstructorCall().isInitialized()) {
            
            return false;
          }
        }
        if (hasDoWhile()) {
          if (!getDoWhile().isInitialized()) {
            
            return false;
          }
        }
        if (hasEnumConstructorCall()) {
          if (!getEnumConstructorCall().isInitialized()) {
            
            return false;
          }
        }
        if (hasFunctionReference()) {
          if (!getFunctionReference().isInitialized()) {
            
            return false;
          }
        }
        if (hasGetClass()) {
          if (!getGetClass().isInitialized()) {
            
            return false;
          }
        }
        if (hasGetEnumValue()) {
          if (!getGetEnumValue().isInitialized()) {
            
            return false;
          }
        }
        if (hasGetField()) {
          if (!getGetField().isInitialized()) {
            
            return false;
          }
        }
        if (hasGetObject()) {
          if (!getGetObject().isInitialized()) {
            
            return false;
          }
        }
        if (hasGetValue()) {
          if (!getGetValue().isInitialized()) {
            
            return false;
          }
        }
        if (hasInstanceInitializerCall()) {
          if (!getInstanceInitializerCall().isInitialized()) {
            
            return false;
          }
        }
        if (hasPropertyReference()) {
          if (!getPropertyReference().isInitialized()) {
            
            return false;
          }
        }
        if (hasReturn()) {
          if (!getReturn().isInitialized()) {
            
            return false;
          }
        }
        if (hasSetField()) {
          if (!getSetField().isInitialized()) {
            
            return false;
          }
        }
        if (hasSetVariable()) {
          if (!getSetVariable().isInitialized()) {
            
            return false;
          }
        }
        if (hasStringConcat()) {
          if (!getStringConcat().isInitialized()) {
            
            return false;
          }
        }
        if (hasThrow()) {
          if (!getThrow().isInitialized()) {
            
            return false;
          }
        }
        if (hasTry()) {
          if (!getTry().isInitialized()) {
            
            return false;
          }
        }
        if (hasTypeOp()) {
          if (!getTypeOp().isInitialized()) {
            
            return false;
          }
        }
        if (hasVararg()) {
          if (!getVararg().isInitialized()) {
            
            return false;
          }
        }
        if (hasWhen()) {
          if (!getWhen().isInitialized()) {
            
            return false;
          }
        }
        if (hasWhile()) {
          if (!getWhile().isInitialized()) {
            
            return false;
          }
        }
        if (hasDynamicMember()) {
          if (!getDynamicMember().isInitialized()) {
            
            return false;
          }
        }
        if (hasDynamicOperator()) {
          if (!getDynamicOperator().isInitialized()) {
            
            return false;
          }
        }
        if (hasLocalDelegatedPropertyReference()) {
          if (!getLocalDelegatedPropertyReference().isInitialized()) {
            
            return false;
          }
        }
        if (hasConstructorCall()) {
          if (!getConstructorCall().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.common.serialization.KotlinIr.IrOperation parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int operationCase_ = 0;
      private java.lang.Object operation_;
      public OperationCase
          getOperationCase() {
        return OperationCase.valueOf(
            operationCase_);
      }

      public Builder clearOperation() {
        operationCase_ = 0;
        operation_ = null;
        return this;
      }

      private int bitField0_;

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBlock block = 1;</code>
       */
      public boolean hasBlock() {
        return operationCase_ == 1;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBlock block = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock getBlock() {
        if (operationCase_ == 1) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBlock block = 1;</code>
       */
      public Builder setBlock(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 1;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBlock block = 1;</code>
       */
      public Builder setBlock(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 1;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBlock block = 1;</code>
       */
      public Builder mergeBlock(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock value) {
        if (operationCase_ == 1 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlock) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 1;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBlock block = 1;</code>
       */
      public Builder clearBlock() {
        if (operationCase_ == 1) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBreak break = 2;</code>
       */
      public boolean hasBreak() {
        return operationCase_ == 2;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBreak break = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak getBreak() {
        if (operationCase_ == 2) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBreak break = 2;</code>
       */
      public Builder setBreak(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBreak break = 2;</code>
       */
      public Builder setBreak(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBreak break = 2;</code>
       */
      public Builder mergeBreak(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak value) {
        if (operationCase_ == 2 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBreak) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBreak break = 2;</code>
       */
      public Builder clearBreak() {
        if (operationCase_ == 2) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrCall call = 3;</code>
       */
      public boolean hasCall() {
        return operationCase_ == 3;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrCall call = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall getCall() {
        if (operationCase_ == 3) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrCall call = 3;</code>
       */
      public Builder setCall(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 3;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrCall call = 3;</code>
       */
      public Builder setCall(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 3;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrCall call = 3;</code>
       */
      public Builder mergeCall(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall value) {
        if (operationCase_ == 3 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCall) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 3;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrCall call = 3;</code>
       */
      public Builder clearCall() {
        if (operationCase_ == 3) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClassReference class_reference = 4;</code>
       */
      public boolean hasClassReference() {
        return operationCase_ == 4;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClassReference class_reference = 4;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference getClassReference() {
        if (operationCase_ == 4) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClassReference class_reference = 4;</code>
       */
      public Builder setClassReference(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 4;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClassReference class_reference = 4;</code>
       */
      public Builder setClassReference(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 4;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClassReference class_reference = 4;</code>
       */
      public Builder mergeClassReference(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference value) {
        if (operationCase_ == 4 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassReference) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 4;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClassReference class_reference = 4;</code>
       */
      public Builder clearClassReference() {
        if (operationCase_ == 4) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrComposite composite = 5;</code>
       */
      public boolean hasComposite() {
        return operationCase_ == 5;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrComposite composite = 5;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite getComposite() {
        if (operationCase_ == 5) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrComposite composite = 5;</code>
       */
      public Builder setComposite(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 5;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrComposite composite = 5;</code>
       */
      public Builder setComposite(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 5;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrComposite composite = 5;</code>
       */
      public Builder mergeComposite(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite value) {
        if (operationCase_ == 5 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrComposite) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 5;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrComposite composite = 5;</code>
       */
      public Builder clearComposite() {
        if (operationCase_ == 5) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConst const = 6;</code>
       */
      public boolean hasConst() {
        return operationCase_ == 6;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConst const = 6;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst getConst() {
        if (operationCase_ == 6) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConst const = 6;</code>
       */
      public Builder setConst(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 6;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConst const = 6;</code>
       */
      public Builder setConst(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 6;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConst const = 6;</code>
       */
      public Builder mergeConst(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst value) {
        if (operationCase_ == 6 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConst) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 6;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConst const = 6;</code>
       */
      public Builder clearConst() {
        if (operationCase_ == 6) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrContinue continue = 7;</code>
       */
      public boolean hasContinue() {
        return operationCase_ == 7;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrContinue continue = 7;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue getContinue() {
        if (operationCase_ == 7) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrContinue continue = 7;</code>
       */
      public Builder setContinue(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 7;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrContinue continue = 7;</code>
       */
      public Builder setContinue(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 7;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrContinue continue = 7;</code>
       */
      public Builder mergeContinue(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue value) {
        if (operationCase_ == 7 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrContinue) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 7;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrContinue continue = 7;</code>
       */
      public Builder clearContinue() {
        if (operationCase_ == 7) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDelegatingConstructorCall delegating_constructor_call = 8;</code>
       */
      public boolean hasDelegatingConstructorCall() {
        return operationCase_ == 8;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDelegatingConstructorCall delegating_constructor_call = 8;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall getDelegatingConstructorCall() {
        if (operationCase_ == 8) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDelegatingConstructorCall delegating_constructor_call = 8;</code>
       */
      public Builder setDelegatingConstructorCall(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 8;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDelegatingConstructorCall delegating_constructor_call = 8;</code>
       */
      public Builder setDelegatingConstructorCall(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 8;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDelegatingConstructorCall delegating_constructor_call = 8;</code>
       */
      public Builder mergeDelegatingConstructorCall(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall value) {
        if (operationCase_ == 8 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDelegatingConstructorCall) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 8;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDelegatingConstructorCall delegating_constructor_call = 8;</code>
       */
      public Builder clearDelegatingConstructorCall() {
        if (operationCase_ == 8) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDoWhile do_while = 9;</code>
       */
      public boolean hasDoWhile() {
        return operationCase_ == 9;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDoWhile do_while = 9;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile getDoWhile() {
        if (operationCase_ == 9) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDoWhile do_while = 9;</code>
       */
      public Builder setDoWhile(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 9;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDoWhile do_while = 9;</code>
       */
      public Builder setDoWhile(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 9;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDoWhile do_while = 9;</code>
       */
      public Builder mergeDoWhile(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile value) {
        if (operationCase_ == 9 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDoWhile) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 9;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDoWhile do_while = 9;</code>
       */
      public Builder clearDoWhile() {
        if (operationCase_ == 9) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrEnumConstructorCall enum_constructor_call = 10;</code>
       */
      public boolean hasEnumConstructorCall() {
        return operationCase_ == 10;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrEnumConstructorCall enum_constructor_call = 10;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall getEnumConstructorCall() {
        if (operationCase_ == 10) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrEnumConstructorCall enum_constructor_call = 10;</code>
       */
      public Builder setEnumConstructorCall(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 10;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrEnumConstructorCall enum_constructor_call = 10;</code>
       */
      public Builder setEnumConstructorCall(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 10;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrEnumConstructorCall enum_constructor_call = 10;</code>
       */
      public Builder mergeEnumConstructorCall(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall value) {
        if (operationCase_ == 10 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumConstructorCall) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 10;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrEnumConstructorCall enum_constructor_call = 10;</code>
       */
      public Builder clearEnumConstructorCall() {
        if (operationCase_ == 10) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunctionReference function_reference = 11;</code>
       */
      public boolean hasFunctionReference() {
        return operationCase_ == 11;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunctionReference function_reference = 11;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference getFunctionReference() {
        if (operationCase_ == 11) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunctionReference function_reference = 11;</code>
       */
      public Builder setFunctionReference(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 11;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunctionReference function_reference = 11;</code>
       */
      public Builder setFunctionReference(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 11;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunctionReference function_reference = 11;</code>
       */
      public Builder mergeFunctionReference(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference value) {
        if (operationCase_ == 11 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionReference) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 11;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunctionReference function_reference = 11;</code>
       */
      public Builder clearFunctionReference() {
        if (operationCase_ == 11) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetClass get_class = 12;</code>
       */
      public boolean hasGetClass() {
        return operationCase_ == 12;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetClass get_class = 12;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass getGetClass() {
        if (operationCase_ == 12) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetClass get_class = 12;</code>
       */
      public Builder setGetClass(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 12;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetClass get_class = 12;</code>
       */
      public Builder setGetClass(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 12;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetClass get_class = 12;</code>
       */
      public Builder mergeGetClass(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass value) {
        if (operationCase_ == 12 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetClass) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 12;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetClass get_class = 12;</code>
       */
      public Builder clearGetClass() {
        if (operationCase_ == 12) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetEnumValue get_enum_value = 13;</code>
       */
      public boolean hasGetEnumValue() {
        return operationCase_ == 13;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetEnumValue get_enum_value = 13;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue getGetEnumValue() {
        if (operationCase_ == 13) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetEnumValue get_enum_value = 13;</code>
       */
      public Builder setGetEnumValue(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 13;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetEnumValue get_enum_value = 13;</code>
       */
      public Builder setGetEnumValue(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 13;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetEnumValue get_enum_value = 13;</code>
       */
      public Builder mergeGetEnumValue(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue value) {
        if (operationCase_ == 13 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetEnumValue) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 13;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetEnumValue get_enum_value = 13;</code>
       */
      public Builder clearGetEnumValue() {
        if (operationCase_ == 13) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetField get_field = 14;</code>
       */
      public boolean hasGetField() {
        return operationCase_ == 14;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetField get_field = 14;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField getGetField() {
        if (operationCase_ == 14) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetField get_field = 14;</code>
       */
      public Builder setGetField(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 14;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetField get_field = 14;</code>
       */
      public Builder setGetField(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 14;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetField get_field = 14;</code>
       */
      public Builder mergeGetField(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField value) {
        if (operationCase_ == 14 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetField) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 14;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetField get_field = 14;</code>
       */
      public Builder clearGetField() {
        if (operationCase_ == 14) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetObject get_object = 15;</code>
       */
      public boolean hasGetObject() {
        return operationCase_ == 15;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetObject get_object = 15;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject getGetObject() {
        if (operationCase_ == 15) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetObject get_object = 15;</code>
       */
      public Builder setGetObject(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 15;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetObject get_object = 15;</code>
       */
      public Builder setGetObject(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 15;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetObject get_object = 15;</code>
       */
      public Builder mergeGetObject(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject value) {
        if (operationCase_ == 15 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetObject) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 15;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetObject get_object = 15;</code>
       */
      public Builder clearGetObject() {
        if (operationCase_ == 15) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetValue get_value = 16;</code>
       */
      public boolean hasGetValue() {
        return operationCase_ == 16;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetValue get_value = 16;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue getGetValue() {
        if (operationCase_ == 16) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetValue get_value = 16;</code>
       */
      public Builder setGetValue(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 16;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetValue get_value = 16;</code>
       */
      public Builder setGetValue(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 16;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetValue get_value = 16;</code>
       */
      public Builder mergeGetValue(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue value) {
        if (operationCase_ == 16 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrGetValue) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 16;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrGetValue get_value = 16;</code>
       */
      public Builder clearGetValue() {
        if (operationCase_ == 16) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrInstanceInitializerCall instance_initializer_call = 17;</code>
       */
      public boolean hasInstanceInitializerCall() {
        return operationCase_ == 17;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrInstanceInitializerCall instance_initializer_call = 17;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall getInstanceInitializerCall() {
        if (operationCase_ == 17) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrInstanceInitializerCall instance_initializer_call = 17;</code>
       */
      public Builder setInstanceInitializerCall(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 17;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrInstanceInitializerCall instance_initializer_call = 17;</code>
       */
      public Builder setInstanceInitializerCall(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 17;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrInstanceInitializerCall instance_initializer_call = 17;</code>
       */
      public Builder mergeInstanceInitializerCall(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall value) {
        if (operationCase_ == 17 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrInstanceInitializerCall) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 17;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrInstanceInitializerCall instance_initializer_call = 17;</code>
       */
      public Builder clearInstanceInitializerCall() {
        if (operationCase_ == 17) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrPropertyReference property_reference = 18;</code>
       */
      public boolean hasPropertyReference() {
        return operationCase_ == 18;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrPropertyReference property_reference = 18;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference getPropertyReference() {
        if (operationCase_ == 18) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrPropertyReference property_reference = 18;</code>
       */
      public Builder setPropertyReference(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 18;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrPropertyReference property_reference = 18;</code>
       */
      public Builder setPropertyReference(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 18;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrPropertyReference property_reference = 18;</code>
       */
      public Builder mergePropertyReference(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference value) {
        if (operationCase_ == 18 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrPropertyReference) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 18;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrPropertyReference property_reference = 18;</code>
       */
      public Builder clearPropertyReference() {
        if (operationCase_ == 18) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrReturn return = 19;</code>
       */
      public boolean hasReturn() {
        return operationCase_ == 19;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrReturn return = 19;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn getReturn() {
        if (operationCase_ == 19) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrReturn return = 19;</code>
       */
      public Builder setReturn(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 19;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrReturn return = 19;</code>
       */
      public Builder setReturn(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 19;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrReturn return = 19;</code>
       */
      public Builder mergeReturn(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn value) {
        if (operationCase_ == 19 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrReturn) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 19;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrReturn return = 19;</code>
       */
      public Builder clearReturn() {
        if (operationCase_ == 19) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSetField set_field = 20;</code>
       */
      public boolean hasSetField() {
        return operationCase_ == 20;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSetField set_field = 20;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField getSetField() {
        if (operationCase_ == 20) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSetField set_field = 20;</code>
       */
      public Builder setSetField(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 20;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSetField set_field = 20;</code>
       */
      public Builder setSetField(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 20;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSetField set_field = 20;</code>
       */
      public Builder mergeSetField(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField value) {
        if (operationCase_ == 20 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetField) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 20;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSetField set_field = 20;</code>
       */
      public Builder clearSetField() {
        if (operationCase_ == 20) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSetVariable set_variable = 21;</code>
       */
      public boolean hasSetVariable() {
        return operationCase_ == 21;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSetVariable set_variable = 21;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable getSetVariable() {
        if (operationCase_ == 21) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSetVariable set_variable = 21;</code>
       */
      public Builder setSetVariable(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 21;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSetVariable set_variable = 21;</code>
       */
      public Builder setSetVariable(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 21;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSetVariable set_variable = 21;</code>
       */
      public Builder mergeSetVariable(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable value) {
        if (operationCase_ == 21 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSetVariable) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 21;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSetVariable set_variable = 21;</code>
       */
      public Builder clearSetVariable() {
        if (operationCase_ == 21) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStringConcat string_concat = 22;</code>
       */
      public boolean hasStringConcat() {
        return operationCase_ == 22;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStringConcat string_concat = 22;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat getStringConcat() {
        if (operationCase_ == 22) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStringConcat string_concat = 22;</code>
       */
      public Builder setStringConcat(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 22;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStringConcat string_concat = 22;</code>
       */
      public Builder setStringConcat(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 22;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStringConcat string_concat = 22;</code>
       */
      public Builder mergeStringConcat(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat value) {
        if (operationCase_ == 22 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStringConcat) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 22;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStringConcat string_concat = 22;</code>
       */
      public Builder clearStringConcat() {
        if (operationCase_ == 22) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrThrow throw = 23;</code>
       */
      public boolean hasThrow() {
        return operationCase_ == 23;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrThrow throw = 23;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow getThrow() {
        if (operationCase_ == 23) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrThrow throw = 23;</code>
       */
      public Builder setThrow(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 23;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrThrow throw = 23;</code>
       */
      public Builder setThrow(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 23;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrThrow throw = 23;</code>
       */
      public Builder mergeThrow(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow value) {
        if (operationCase_ == 23 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrThrow) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 23;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrThrow throw = 23;</code>
       */
      public Builder clearThrow() {
        if (operationCase_ == 23) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTry try = 24;</code>
       */
      public boolean hasTry() {
        return operationCase_ == 24;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTry try = 24;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry getTry() {
        if (operationCase_ == 24) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTry try = 24;</code>
       */
      public Builder setTry(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 24;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTry try = 24;</code>
       */
      public Builder setTry(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 24;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTry try = 24;</code>
       */
      public Builder mergeTry(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry value) {
        if (operationCase_ == 24 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTry) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 24;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTry try = 24;</code>
       */
      public Builder clearTry() {
        if (operationCase_ == 24) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeOp type_op = 25;</code>
       */
      public boolean hasTypeOp() {
        return operationCase_ == 25;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeOp type_op = 25;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp getTypeOp() {
        if (operationCase_ == 25) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeOp type_op = 25;</code>
       */
      public Builder setTypeOp(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 25;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeOp type_op = 25;</code>
       */
      public Builder setTypeOp(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 25;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeOp type_op = 25;</code>
       */
      public Builder mergeTypeOp(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp value) {
        if (operationCase_ == 25 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeOp) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 25;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeOp type_op = 25;</code>
       */
      public Builder clearTypeOp() {
        if (operationCase_ == 25) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrVararg vararg = 26;</code>
       */
      public boolean hasVararg() {
        return operationCase_ == 26;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrVararg vararg = 26;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg getVararg() {
        if (operationCase_ == 26) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrVararg vararg = 26;</code>
       */
      public Builder setVararg(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 26;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrVararg vararg = 26;</code>
       */
      public Builder setVararg(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 26;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrVararg vararg = 26;</code>
       */
      public Builder mergeVararg(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg value) {
        if (operationCase_ == 26 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVararg) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 26;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrVararg vararg = 26;</code>
       */
      public Builder clearVararg() {
        if (operationCase_ == 26) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrWhen when = 27;</code>
       */
      public boolean hasWhen() {
        return operationCase_ == 27;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrWhen when = 27;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen getWhen() {
        if (operationCase_ == 27) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrWhen when = 27;</code>
       */
      public Builder setWhen(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 27;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrWhen when = 27;</code>
       */
      public Builder setWhen(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 27;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrWhen when = 27;</code>
       */
      public Builder mergeWhen(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen value) {
        if (operationCase_ == 27 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhen) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 27;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrWhen when = 27;</code>
       */
      public Builder clearWhen() {
        if (operationCase_ == 27) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrWhile while = 28;</code>
       */
      public boolean hasWhile() {
        return operationCase_ == 28;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrWhile while = 28;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile getWhile() {
        if (operationCase_ == 28) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrWhile while = 28;</code>
       */
      public Builder setWhile(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 28;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrWhile while = 28;</code>
       */
      public Builder setWhile(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 28;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrWhile while = 28;</code>
       */
      public Builder mergeWhile(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile value) {
        if (operationCase_ == 28 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrWhile) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 28;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrWhile while = 28;</code>
       */
      public Builder clearWhile() {
        if (operationCase_ == 28) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicMemberExpression dynamic_member = 29;</code>
       */
      public boolean hasDynamicMember() {
        return operationCase_ == 29;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicMemberExpression dynamic_member = 29;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression getDynamicMember() {
        if (operationCase_ == 29) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicMemberExpression dynamic_member = 29;</code>
       */
      public Builder setDynamicMember(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 29;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicMemberExpression dynamic_member = 29;</code>
       */
      public Builder setDynamicMember(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 29;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicMemberExpression dynamic_member = 29;</code>
       */
      public Builder mergeDynamicMember(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression value) {
        if (operationCase_ == 29 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicMemberExpression) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 29;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicMemberExpression dynamic_member = 29;</code>
       */
      public Builder clearDynamicMember() {
        if (operationCase_ == 29) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression dynamic_operator = 30;</code>
       */
      public boolean hasDynamicOperator() {
        return operationCase_ == 30;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression dynamic_operator = 30;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression getDynamicOperator() {
        if (operationCase_ == 30) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression dynamic_operator = 30;</code>
       */
      public Builder setDynamicOperator(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 30;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression dynamic_operator = 30;</code>
       */
      public Builder setDynamicOperator(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 30;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression dynamic_operator = 30;</code>
       */
      public Builder mergeDynamicOperator(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression value) {
        if (operationCase_ == 30 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDynamicOperatorExpression) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 30;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDynamicOperatorExpression dynamic_operator = 30;</code>
       */
      public Builder clearDynamicOperator() {
        if (operationCase_ == 30) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedPropertyReference local_delegated_property_reference = 31;</code>
       */
      public boolean hasLocalDelegatedPropertyReference() {
        return operationCase_ == 31;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedPropertyReference local_delegated_property_reference = 31;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference getLocalDelegatedPropertyReference() {
        if (operationCase_ == 31) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedPropertyReference local_delegated_property_reference = 31;</code>
       */
      public Builder setLocalDelegatedPropertyReference(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 31;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedPropertyReference local_delegated_property_reference = 31;</code>
       */
      public Builder setLocalDelegatedPropertyReference(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 31;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedPropertyReference local_delegated_property_reference = 31;</code>
       */
      public Builder mergeLocalDelegatedPropertyReference(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference value) {
        if (operationCase_ == 31 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedPropertyReference) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 31;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedPropertyReference local_delegated_property_reference = 31;</code>
       */
      public Builder clearLocalDelegatedPropertyReference() {
        if (operationCase_ == 31) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall constructor_call = 32;</code>
       */
      public boolean hasConstructorCall() {
        return operationCase_ == 32;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall constructor_call = 32;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall getConstructorCall() {
        if (operationCase_ == 32) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall) operation_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall constructor_call = 32;</code>
       */
      public Builder setConstructorCall(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        operationCase_ = 32;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall constructor_call = 32;</code>
       */
      public Builder setConstructorCall(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall.Builder builderForValue) {
        operation_ = builderForValue.build();

        operationCase_ = 32;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall constructor_call = 32;</code>
       */
      public Builder mergeConstructorCall(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall value) {
        if (operationCase_ == 32 &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall.getDefaultInstance()) {
          operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructorCall) operation_)
              .mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        operationCase_ = 32;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConstructorCall constructor_call = 32;</code>
       */
      public Builder clearConstructorCall() {
        if (operationCase_ == 32) {
          operationCase_ = 0;
          operation_ = null;
          
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrOperation)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrOperation)
  }

  public interface IrExpressionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrExpression)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrOperation operation = 1;</code>
     */
    boolean hasOperation();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrOperation operation = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation getOperation();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 2;</code>
     */
    boolean hasType();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getType();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 3;</code>
     */
    boolean hasCoordinates();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates getCoordinates();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrExpression}
   */
  public static final class IrExpression extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrExpression)
      IrExpressionOrBuilder {
    // Use IrExpression.newBuilder() to construct.
    private IrExpression(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrExpression(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrExpression getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrExpression(
        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);
      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.KotlinIr.IrOperation.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = operation_.toBuilder();
              }
              operation_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(operation_);
                operation_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = type_.toBuilder();
              }
              type_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(type_);
                type_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = coordinates_.toBuilder();
              }
              coordinates_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(coordinates_);
                coordinates_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              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<IrExpression> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrExpression>() {
      public IrExpression parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrExpression(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int OPERATION_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation operation_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrOperation operation = 1;</code>
     */
    public boolean hasOperation() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrOperation operation = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation getOperation() {
      return operation_;
    }

    public static final int TYPE_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex type_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 2;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getType() {
      return type_;
    }

    public static final int COORDINATES_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates coordinates_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 3;</code>
     */
    public boolean hasCoordinates() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates getCoordinates() {
      return coordinates_;
    }

    private void initFields() {
      operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation.getDefaultInstance();
      type_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
      coordinates_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, operation_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, type_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, coordinates_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, operation_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, type_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, coordinates_);
      }
      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.common.serialization.KotlinIr.IrExpression parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression 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.common.serialization.KotlinIr.IrExpression parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression 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.common.serialization.KotlinIr.IrExpression parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression 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.common.serialization.KotlinIr.IrExpression parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression 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.common.serialization.KotlinIr.IrExpression parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression 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.common.serialization.KotlinIr.IrExpression prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        coordinates_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.operation_ = operation_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.coordinates_ = coordinates_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) return this;
        if (other.hasOperation()) {
          mergeOperation(other.getOperation());
        }
        if (other.hasType()) {
          mergeType(other.getType());
        }
        if (other.hasCoordinates()) {
          mergeCoordinates(other.getCoordinates());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasOperation()) {
          
          return false;
        }
        if (!hasType()) {
          
          return false;
        }
        if (!hasCoordinates()) {
          
          return false;
        }
        if (!getOperation().isInitialized()) {
          
          return false;
        }
        if (!getType().isInitialized()) {
          
          return false;
        }
        if (!getCoordinates().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.common.serialization.KotlinIr.IrExpression parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrOperation operation = 1;</code>
       */
      public boolean hasOperation() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrOperation operation = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation getOperation() {
        return operation_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrOperation operation = 1;</code>
       */
      public Builder setOperation(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operation_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrOperation operation = 1;</code>
       */
      public Builder setOperation(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation.Builder builderForValue) {
        operation_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrOperation operation = 1;</code>
       */
      public Builder mergeOperation(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            operation_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation.getDefaultInstance()) {
          operation_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation.newBuilder(operation_).mergeFrom(value).buildPartial();
        } else {
          operation_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrOperation operation = 1;</code>
       */
      public Builder clearOperation() {
        operation_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrOperation.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex type_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 2;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getType() {
        return type_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 2;</code>
       */
      public Builder setType(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (value == null) {
          throw new NullPointerException();
        }
        type_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 2;</code>
       */
      public Builder setType(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder builderForValue) {
        type_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 2;</code>
       */
      public Builder mergeType(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            type_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance()) {
          type_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.newBuilder(type_).mergeFrom(value).buildPartial();
        } else {
          type_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 2;</code>
       */
      public Builder clearType() {
        type_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates coordinates_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 3;</code>
       */
      public boolean hasCoordinates() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates getCoordinates() {
        return coordinates_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 3;</code>
       */
      public Builder setCoordinates(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates value) {
        if (value == null) {
          throw new NullPointerException();
        }
        coordinates_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 3;</code>
       */
      public Builder setCoordinates(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.Builder builderForValue) {
        coordinates_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 3;</code>
       */
      public Builder mergeCoordinates(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            coordinates_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance()) {
          coordinates_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.newBuilder(coordinates_).mergeFrom(value).buildPartial();
        } else {
          coordinates_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 3;</code>
       */
      public Builder clearCoordinates() {
        coordinates_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrExpression)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrExpression)
  }

  public interface NullableIrExpressionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

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

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

    public NullableIrExpression getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private NullableIrExpression(
        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);
      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.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = expression_.toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(expression_);
                expression_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              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<NullableIrExpression> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<NullableIrExpression>() {
      public NullableIrExpression parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new NullableIrExpression(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int EXPRESSION_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression expression_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
     */
    public boolean hasExpression() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getExpression() {
      return expression_;
    }

    private void initFields() {
      expression_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 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 (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, expression_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, expression_);
      }
      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.common.serialization.KotlinIr.NullableIrExpression parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression 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.common.serialization.KotlinIr.NullableIrExpression parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression 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.common.serialization.KotlinIr.NullableIrExpression parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression 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.common.serialization.KotlinIr.NullableIrExpression parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression 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.common.serialization.KotlinIr.NullableIrExpression parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression 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.common.serialization.KotlinIr.NullableIrExpression prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        expression_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.expression_ = expression_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.NullableIrExpression.getDefaultInstance()) return this;
        if (other.hasExpression()) {
          mergeExpression(other.getExpression());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression expression_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
       */
      public boolean hasExpression() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getExpression() {
        return expression_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
       */
      public Builder setExpression(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
       */
      public Builder setExpression(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        expression_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
       */
      public Builder mergeExpression(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            expression_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          expression_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(expression_).mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 1;</code>
       */
      public Builder clearExpression() {
        expression_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.NullableIrExpression)
  }

  public interface IrDeclarationBaseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    boolean hasSymbol();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationOrigin origin = 2;</code>
     */
    boolean hasOrigin();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationOrigin origin = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin getOrigin();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 3;</code>
     */
    boolean hasCoordinates();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates getCoordinates();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 4;</code>
     */
    boolean hasAnnotations();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 4;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations getAnnotations();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase}
   */
  public static final class IrDeclarationBase extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase)
      IrDeclarationBaseOrBuilder {
    // Use IrDeclarationBase.newBuilder() to construct.
    private IrDeclarationBase(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrDeclarationBase(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrDeclarationBase getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrDeclarationBase(
        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);
      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.KotlinIr.IrSymbol.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = symbol_.toBuilder();
              }
              symbol_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(symbol_);
                symbol_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = origin_.toBuilder();
              }
              origin_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(origin_);
                origin_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = coordinates_.toBuilder();
              }
              coordinates_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(coordinates_);
                coordinates_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 34: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = annotations_.toBuilder();
              }
              annotations_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(annotations_);
                annotations_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              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<IrDeclarationBase> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrDeclarationBase>() {
      public IrDeclarationBase parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrDeclarationBase(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int SYMBOL_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public boolean hasSymbol() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
      return symbol_;
    }

    public static final int ORIGIN_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin origin_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationOrigin origin = 2;</code>
     */
    public boolean hasOrigin() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationOrigin origin = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin getOrigin() {
      return origin_;
    }

    public static final int COORDINATES_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates coordinates_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 3;</code>
     */
    public boolean hasCoordinates() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates getCoordinates() {
      return coordinates_;
    }

    public static final int ANNOTATIONS_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations annotations_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 4;</code>
     */
    public boolean hasAnnotations() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 4;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations getAnnotations() {
      return annotations_;
    }

    private void initFields() {
      symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin.getDefaultInstance();
      coordinates_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance();
      annotations_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasSymbol()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasOrigin()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasCoordinates()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAnnotations()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getSymbol().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getOrigin().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getCoordinates().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getAnnotations().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, symbol_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, origin_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, coordinates_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, annotations_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, symbol_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, origin_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, coordinates_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, annotations_);
      }
      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.common.serialization.KotlinIr.IrDeclarationBase parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase 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.common.serialization.KotlinIr.IrDeclarationBase parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase 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.common.serialization.KotlinIr.IrDeclarationBase parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase 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.common.serialization.KotlinIr.IrDeclarationBase parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase 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.common.serialization.KotlinIr.IrDeclarationBase parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase 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.common.serialization.KotlinIr.IrDeclarationBase prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        coordinates_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        annotations_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.symbol_ = symbol_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.origin_ = origin_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.coordinates_ = coordinates_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.annotations_ = annotations_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance()) return this;
        if (other.hasSymbol()) {
          mergeSymbol(other.getSymbol());
        }
        if (other.hasOrigin()) {
          mergeOrigin(other.getOrigin());
        }
        if (other.hasCoordinates()) {
          mergeCoordinates(other.getCoordinates());
        }
        if (other.hasAnnotations()) {
          mergeAnnotations(other.getAnnotations());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSymbol()) {
          
          return false;
        }
        if (!hasOrigin()) {
          
          return false;
        }
        if (!hasCoordinates()) {
          
          return false;
        }
        if (!hasAnnotations()) {
          
          return false;
        }
        if (!getSymbol().isInitialized()) {
          
          return false;
        }
        if (!getOrigin().isInitialized()) {
          
          return false;
        }
        if (!getCoordinates().isInitialized()) {
          
          return false;
        }
        if (!getAnnotations().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.common.serialization.KotlinIr.IrDeclarationBase parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public boolean hasSymbol() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol() {
        return symbol_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        symbol_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder setSymbol(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        symbol_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder mergeSymbol(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            symbol_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance()) {
          symbol_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.newBuilder(symbol_).mergeFrom(value).buildPartial();
        } else {
          symbol_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 1;</code>
       */
      public Builder clearSymbol() {
        symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationOrigin origin = 2;</code>
       */
      public boolean hasOrigin() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationOrigin origin = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin getOrigin() {
        return origin_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationOrigin origin = 2;</code>
       */
      public Builder setOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin value) {
        if (value == null) {
          throw new NullPointerException();
        }
        origin_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationOrigin origin = 2;</code>
       */
      public Builder setOrigin(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin.Builder builderForValue) {
        origin_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationOrigin origin = 2;</code>
       */
      public Builder mergeOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            origin_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin.getDefaultInstance()) {
          origin_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin.newBuilder(origin_).mergeFrom(value).buildPartial();
        } else {
          origin_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationOrigin origin = 2;</code>
       */
      public Builder clearOrigin() {
        origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrigin.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates coordinates_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 3;</code>
       */
      public boolean hasCoordinates() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates getCoordinates() {
        return coordinates_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 3;</code>
       */
      public Builder setCoordinates(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates value) {
        if (value == null) {
          throw new NullPointerException();
        }
        coordinates_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 3;</code>
       */
      public Builder setCoordinates(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.Builder builderForValue) {
        coordinates_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 3;</code>
       */
      public Builder mergeCoordinates(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            coordinates_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance()) {
          coordinates_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.newBuilder(coordinates_).mergeFrom(value).buildPartial();
        } else {
          coordinates_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 3;</code>
       */
      public Builder clearCoordinates() {
        coordinates_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations annotations_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 4;</code>
       */
      public boolean hasAnnotations() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 4;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations getAnnotations() {
        return annotations_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 4;</code>
       */
      public Builder setAnnotations(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations value) {
        if (value == null) {
          throw new NullPointerException();
        }
        annotations_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 4;</code>
       */
      public Builder setAnnotations(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.Builder builderForValue) {
        annotations_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 4;</code>
       */
      public Builder mergeAnnotations(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            annotations_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance()) {
          annotations_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.newBuilder(annotations_).mergeFrom(value).buildPartial();
        } else {
          annotations_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Annotations annotations = 4;</code>
       */
      public Builder clearAnnotations() {
        annotations_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Annotations.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase)
  }

  public interface IrFunctionBaseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    boolean hasBase();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    boolean hasName();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 3;</code>
     */
    boolean hasVisibility();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility getVisibility();

    /**
     * <code>required bool is_inline = 4;</code>
     */
    boolean hasIsInline();
    /**
     * <code>required bool is_inline = 4;</code>
     */
    boolean getIsInline();

    /**
     * <code>required bool is_external = 5;</code>
     */
    boolean hasIsExternal();
    /**
     * <code>required bool is_external = 5;</code>
     */
    boolean getIsExternal();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer type_parameters = 6;</code>
     */
    boolean hasTypeParameters();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer type_parameters = 6;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer getTypeParameters();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter dispatch_receiver = 7;</code>
     */
    boolean hasDispatchReceiver();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter dispatch_receiver = 7;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter getDispatchReceiver();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter extension_receiver = 8;</code>
     */
    boolean hasExtensionReceiver();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter extension_receiver = 8;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter getExtensionReceiver();

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter value_parameter = 9;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter> 
        getValueParameterList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter value_parameter = 9;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter getValueParameter(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter value_parameter = 9;</code>
     */
    int getValueParameterCount();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatement body = 10;</code>
     */
    boolean hasBody();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatement body = 10;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getBody();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex return_type = 11;</code>
     */
    boolean hasReturnType();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex return_type = 11;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getReturnType();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase}
   */
  public static final class IrFunctionBase extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase)
      IrFunctionBaseOrBuilder {
    // Use IrFunctionBase.newBuilder() to construct.
    private IrFunctionBase(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrFunctionBase(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrFunctionBase getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrFunctionBase(
        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);
      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.KotlinIr.IrDeclarationBase.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = base_.toBuilder();
              }
              base_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(base_);
                base_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = name_.toBuilder();
              }
              name_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(name_);
                name_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = visibility_.toBuilder();
              }
              visibility_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(visibility_);
                visibility_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              isInline_ = input.readBool();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              isExternal_ = input.readBool();
              break;
            }
            case 50: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.Builder subBuilder = null;
              if (((bitField0_ & 0x00000020) == 0x00000020)) {
                subBuilder = typeParameters_.toBuilder();
              }
              typeParameters_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(typeParameters_);
                typeParameters_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000020;
              break;
            }
            case 58: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.Builder subBuilder = null;
              if (((bitField0_ & 0x00000040) == 0x00000040)) {
                subBuilder = dispatchReceiver_.toBuilder();
              }
              dispatchReceiver_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(dispatchReceiver_);
                dispatchReceiver_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000040;
              break;
            }
            case 66: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.Builder subBuilder = null;
              if (((bitField0_ & 0x00000080) == 0x00000080)) {
                subBuilder = extensionReceiver_.toBuilder();
              }
              extensionReceiver_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(extensionReceiver_);
                extensionReceiver_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000080;
              break;
            }
            case 74: {
              if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                valueParameter_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter>();
                mutable_bitField0_ |= 0x00000100;
              }
              valueParameter_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.PARSER, extensionRegistry));
              break;
            }
            case 82: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.Builder subBuilder = null;
              if (((bitField0_ & 0x00000100) == 0x00000100)) {
                subBuilder = body_.toBuilder();
              }
              body_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(body_);
                body_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000100;
              break;
            }
            case 90: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder subBuilder = null;
              if (((bitField0_ & 0x00000200) == 0x00000200)) {
                subBuilder = returnType_.toBuilder();
              }
              returnType_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(returnType_);
                returnType_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000200;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
          valueParameter_ = java.util.Collections.unmodifiableList(valueParameter_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrFunctionBase> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrFunctionBase>() {
      public IrFunctionBase parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrFunctionBase(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int BASE_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase base_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    public boolean hasBase() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase() {
      return base_;
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
      return name_;
    }

    public static final int VISIBILITY_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility visibility_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 3;</code>
     */
    public boolean hasVisibility() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility getVisibility() {
      return visibility_;
    }

    public static final int IS_INLINE_FIELD_NUMBER = 4;
    private boolean isInline_;
    /**
     * <code>required bool is_inline = 4;</code>
     */
    public boolean hasIsInline() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required bool is_inline = 4;</code>
     */
    public boolean getIsInline() {
      return isInline_;
    }

    public static final int IS_EXTERNAL_FIELD_NUMBER = 5;
    private boolean isExternal_;
    /**
     * <code>required bool is_external = 5;</code>
     */
    public boolean hasIsExternal() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>required bool is_external = 5;</code>
     */
    public boolean getIsExternal() {
      return isExternal_;
    }

    public static final int TYPE_PARAMETERS_FIELD_NUMBER = 6;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer typeParameters_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer type_parameters = 6;</code>
     */
    public boolean hasTypeParameters() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer type_parameters = 6;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer getTypeParameters() {
      return typeParameters_;
    }

    public static final int DISPATCH_RECEIVER_FIELD_NUMBER = 7;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter dispatchReceiver_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter dispatch_receiver = 7;</code>
     */
    public boolean hasDispatchReceiver() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter dispatch_receiver = 7;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter getDispatchReceiver() {
      return dispatchReceiver_;
    }

    public static final int EXTENSION_RECEIVER_FIELD_NUMBER = 8;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter extensionReceiver_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter extension_receiver = 8;</code>
     */
    public boolean hasExtensionReceiver() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter extension_receiver = 8;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter getExtensionReceiver() {
      return extensionReceiver_;
    }

    public static final int VALUE_PARAMETER_FIELD_NUMBER = 9;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter> valueParameter_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter value_parameter = 9;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter> getValueParameterList() {
      return valueParameter_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter value_parameter = 9;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameterOrBuilder> 
        getValueParameterOrBuilderList() {
      return valueParameter_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter value_parameter = 9;</code>
     */
    public int getValueParameterCount() {
      return valueParameter_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter value_parameter = 9;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter getValueParameter(int index) {
      return valueParameter_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter value_parameter = 9;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameterOrBuilder getValueParameterOrBuilder(
        int index) {
      return valueParameter_.get(index);
    }

    public static final int BODY_FIELD_NUMBER = 10;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement body_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatement body = 10;</code>
     */
    public boolean hasBody() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatement body = 10;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getBody() {
      return body_;
    }

    public static final int RETURN_TYPE_FIELD_NUMBER = 11;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex returnType_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex return_type = 11;</code>
     */
    public boolean hasReturnType() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex return_type = 11;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getReturnType() {
      return returnType_;
    }

    private void initFields() {
      base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      visibility_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance();
      isInline_ = false;
      isExternal_ = false;
      typeParameters_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.getDefaultInstance();
      dispatchReceiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.getDefaultInstance();
      extensionReceiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.getDefaultInstance();
      valueParameter_ = java.util.Collections.emptyList();
      body_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.getDefaultInstance();
      returnType_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasBase()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVisibility()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsInline()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsExternal()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTypeParameters()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasReturnType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getBase().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getName().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getVisibility().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTypeParameters().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasDispatchReceiver()) {
        if (!getDispatchReceiver().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasExtensionReceiver()) {
        if (!getExtensionReceiver().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getValueParameterCount(); i++) {
        if (!getValueParameter(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasBody()) {
        if (!getBody().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!getReturnType().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, name_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, visibility_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBool(4, isInline_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBool(5, isExternal_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeMessage(6, typeParameters_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeMessage(7, dispatchReceiver_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeMessage(8, extensionReceiver_);
      }
      for (int i = 0; i < valueParameter_.size(); i++) {
        output.writeMessage(9, valueParameter_.get(i));
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeMessage(10, body_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeMessage(11, returnType_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, name_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, visibility_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(4, isInline_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(5, isExternal_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(6, typeParameters_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(7, dispatchReceiver_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(8, extensionReceiver_);
      }
      for (int i = 0; i < valueParameter_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(9, valueParameter_.get(i));
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(10, body_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(11, returnType_);
      }
      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.common.serialization.KotlinIr.IrFunctionBase parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase 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.common.serialization.KotlinIr.IrFunctionBase parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase 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.common.serialization.KotlinIr.IrFunctionBase parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase 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.common.serialization.KotlinIr.IrFunctionBase parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase 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.common.serialization.KotlinIr.IrFunctionBase parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase 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.common.serialization.KotlinIr.IrFunctionBase prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        visibility_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        isInline_ = false;
        bitField0_ = (bitField0_ & ~0x00000008);
        isExternal_ = false;
        bitField0_ = (bitField0_ & ~0x00000010);
        typeParameters_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000020);
        dispatchReceiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000040);
        extensionReceiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000080);
        valueParameter_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000100);
        body_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000200);
        returnType_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000400);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.base_ = base_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.visibility_ = visibility_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.isInline_ = isInline_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.isExternal_ = isExternal_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.typeParameters_ = typeParameters_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.dispatchReceiver_ = dispatchReceiver_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.extensionReceiver_ = extensionReceiver_;
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          valueParameter_ = java.util.Collections.unmodifiableList(valueParameter_);
          bitField0_ = (bitField0_ & ~0x00000100);
        }
        result.valueParameter_ = valueParameter_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000100;
        }
        result.body_ = body_;
        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
          to_bitField0_ |= 0x00000200;
        }
        result.returnType_ = returnType_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase.getDefaultInstance()) return this;
        if (other.hasBase()) {
          mergeBase(other.getBase());
        }
        if (other.hasName()) {
          mergeName(other.getName());
        }
        if (other.hasVisibility()) {
          mergeVisibility(other.getVisibility());
        }
        if (other.hasIsInline()) {
          setIsInline(other.getIsInline());
        }
        if (other.hasIsExternal()) {
          setIsExternal(other.getIsExternal());
        }
        if (other.hasTypeParameters()) {
          mergeTypeParameters(other.getTypeParameters());
        }
        if (other.hasDispatchReceiver()) {
          mergeDispatchReceiver(other.getDispatchReceiver());
        }
        if (other.hasExtensionReceiver()) {
          mergeExtensionReceiver(other.getExtensionReceiver());
        }
        if (!other.valueParameter_.isEmpty()) {
          if (valueParameter_.isEmpty()) {
            valueParameter_ = other.valueParameter_;
            bitField0_ = (bitField0_ & ~0x00000100);
          } else {
            ensureValueParameterIsMutable();
            valueParameter_.addAll(other.valueParameter_);
          }
          
        }
        if (other.hasBody()) {
          mergeBody(other.getBody());
        }
        if (other.hasReturnType()) {
          mergeReturnType(other.getReturnType());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasBase()) {
          
          return false;
        }
        if (!hasName()) {
          
          return false;
        }
        if (!hasVisibility()) {
          
          return false;
        }
        if (!hasIsInline()) {
          
          return false;
        }
        if (!hasIsExternal()) {
          
          return false;
        }
        if (!hasTypeParameters()) {
          
          return false;
        }
        if (!hasReturnType()) {
          
          return false;
        }
        if (!getBase().isInitialized()) {
          
          return false;
        }
        if (!getName().isInitialized()) {
          
          return false;
        }
        if (!getVisibility().isInitialized()) {
          
          return false;
        }
        if (!getTypeParameters().isInitialized()) {
          
          return false;
        }
        if (hasDispatchReceiver()) {
          if (!getDispatchReceiver().isInitialized()) {
            
            return false;
          }
        }
        if (hasExtensionReceiver()) {
          if (!getExtensionReceiver().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getValueParameterCount(); i++) {
          if (!getValueParameter(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasBody()) {
          if (!getBody().isInitialized()) {
            
            return false;
          }
        }
        if (!getReturnType().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.common.serialization.KotlinIr.IrFunctionBase parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public boolean hasBase() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase() {
        return base_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder setBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase value) {
        if (value == null) {
          throw new NullPointerException();
        }
        base_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder setBase(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.Builder builderForValue) {
        base_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder mergeBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            base_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance()) {
          base_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.newBuilder(base_).mergeFrom(value).buildPartial();
        } else {
          base_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder clearBase() {
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
        return name_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder setName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        name_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder setName(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        name_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder mergeName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            name_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          name_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(name_).mergeFrom(value).buildPartial();
        } else {
          name_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder clearName() {
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility visibility_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 3;</code>
       */
      public boolean hasVisibility() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility getVisibility() {
        return visibility_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 3;</code>
       */
      public Builder setVisibility(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility value) {
        if (value == null) {
          throw new NullPointerException();
        }
        visibility_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 3;</code>
       */
      public Builder setVisibility(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.Builder builderForValue) {
        visibility_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 3;</code>
       */
      public Builder mergeVisibility(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            visibility_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance()) {
          visibility_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.newBuilder(visibility_).mergeFrom(value).buildPartial();
        } else {
          visibility_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 3;</code>
       */
      public Builder clearVisibility() {
        visibility_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance();

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

      private boolean isInline_ ;
      /**
       * <code>required bool is_inline = 4;</code>
       */
      public boolean hasIsInline() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required bool is_inline = 4;</code>
       */
      public boolean getIsInline() {
        return isInline_;
      }
      /**
       * <code>required bool is_inline = 4;</code>
       */
      public Builder setIsInline(boolean value) {
        bitField0_ |= 0x00000008;
        isInline_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_inline = 4;</code>
       */
      public Builder clearIsInline() {
        bitField0_ = (bitField0_ & ~0x00000008);
        isInline_ = false;
        
        return this;
      }

      private boolean isExternal_ ;
      /**
       * <code>required bool is_external = 5;</code>
       */
      public boolean hasIsExternal() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>required bool is_external = 5;</code>
       */
      public boolean getIsExternal() {
        return isExternal_;
      }
      /**
       * <code>required bool is_external = 5;</code>
       */
      public Builder setIsExternal(boolean value) {
        bitField0_ |= 0x00000010;
        isExternal_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_external = 5;</code>
       */
      public Builder clearIsExternal() {
        bitField0_ = (bitField0_ & ~0x00000010);
        isExternal_ = false;
        
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer typeParameters_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer type_parameters = 6;</code>
       */
      public boolean hasTypeParameters() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer type_parameters = 6;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer getTypeParameters() {
        return typeParameters_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer type_parameters = 6;</code>
       */
      public Builder setTypeParameters(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer value) {
        if (value == null) {
          throw new NullPointerException();
        }
        typeParameters_ = value;

        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer type_parameters = 6;</code>
       */
      public Builder setTypeParameters(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.Builder builderForValue) {
        typeParameters_ = builderForValue.build();

        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer type_parameters = 6;</code>
       */
      public Builder mergeTypeParameters(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer value) {
        if (((bitField0_ & 0x00000020) == 0x00000020) &&
            typeParameters_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.getDefaultInstance()) {
          typeParameters_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.newBuilder(typeParameters_).mergeFrom(value).buildPartial();
        } else {
          typeParameters_ = value;
        }

        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer type_parameters = 6;</code>
       */
      public Builder clearTypeParameters() {
        typeParameters_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter dispatchReceiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter dispatch_receiver = 7;</code>
       */
      public boolean hasDispatchReceiver() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter dispatch_receiver = 7;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter getDispatchReceiver() {
        return dispatchReceiver_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter dispatch_receiver = 7;</code>
       */
      public Builder setDispatchReceiver(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        dispatchReceiver_ = value;

        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter dispatch_receiver = 7;</code>
       */
      public Builder setDispatchReceiver(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.Builder builderForValue) {
        dispatchReceiver_ = builderForValue.build();

        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter dispatch_receiver = 7;</code>
       */
      public Builder mergeDispatchReceiver(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter value) {
        if (((bitField0_ & 0x00000040) == 0x00000040) &&
            dispatchReceiver_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.getDefaultInstance()) {
          dispatchReceiver_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.newBuilder(dispatchReceiver_).mergeFrom(value).buildPartial();
        } else {
          dispatchReceiver_ = value;
        }

        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter dispatch_receiver = 7;</code>
       */
      public Builder clearDispatchReceiver() {
        dispatchReceiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter extensionReceiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter extension_receiver = 8;</code>
       */
      public boolean hasExtensionReceiver() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter extension_receiver = 8;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter getExtensionReceiver() {
        return extensionReceiver_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter extension_receiver = 8;</code>
       */
      public Builder setExtensionReceiver(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        extensionReceiver_ = value;

        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter extension_receiver = 8;</code>
       */
      public Builder setExtensionReceiver(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.Builder builderForValue) {
        extensionReceiver_ = builderForValue.build();

        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter extension_receiver = 8;</code>
       */
      public Builder mergeExtensionReceiver(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter value) {
        if (((bitField0_ & 0x00000080) == 0x00000080) &&
            extensionReceiver_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.getDefaultInstance()) {
          extensionReceiver_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.newBuilder(extensionReceiver_).mergeFrom(value).buildPartial();
        } else {
          extensionReceiver_ = value;
        }

        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter extension_receiver = 8;</code>
       */
      public Builder clearExtensionReceiver() {
        extensionReceiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.getDefaultInstance();

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

      private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter> valueParameter_ =
        java.util.Collections.emptyList();
      private void ensureValueParameterIsMutable() {
        if (!((bitField0_ & 0x00000100) == 0x00000100)) {
          valueParameter_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter>(valueParameter_);
          bitField0_ |= 0x00000100;
         }
      }

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

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter value_parameter = 9;</code>
       */
      public Builder setValueParameter(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.Builder builderForValue) {
        ensureValueParameterIsMutable();
        valueParameter_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter value_parameter = 9;</code>
       */
      public Builder addValueParameter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureValueParameterIsMutable();
        valueParameter_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter value_parameter = 9;</code>
       */
      public Builder addValueParameter(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureValueParameterIsMutable();
        valueParameter_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter value_parameter = 9;</code>
       */
      public Builder addValueParameter(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.Builder builderForValue) {
        ensureValueParameterIsMutable();
        valueParameter_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter value_parameter = 9;</code>
       */
      public Builder addValueParameter(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.Builder builderForValue) {
        ensureValueParameterIsMutable();
        valueParameter_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter value_parameter = 9;</code>
       */
      public Builder addAllValueParameter(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter> values) {
        ensureValueParameterIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, valueParameter_);

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

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter value_parameter = 9;</code>
       */
      public Builder removeValueParameter(int index) {
        ensureValueParameterIsMutable();
        valueParameter_.remove(index);

        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement body_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatement body = 10;</code>
       */
      public boolean hasBody() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatement body = 10;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getBody() {
        return body_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatement body = 10;</code>
       */
      public Builder setBody(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        body_ = value;

        bitField0_ |= 0x00000200;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatement body = 10;</code>
       */
      public Builder setBody(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.Builder builderForValue) {
        body_ = builderForValue.build();

        bitField0_ |= 0x00000200;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatement body = 10;</code>
       */
      public Builder mergeBody(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement value) {
        if (((bitField0_ & 0x00000200) == 0x00000200) &&
            body_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.getDefaultInstance()) {
          body_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.newBuilder(body_).mergeFrom(value).buildPartial();
        } else {
          body_ = value;
        }

        bitField0_ |= 0x00000200;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrStatement body = 10;</code>
       */
      public Builder clearBody() {
        body_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex returnType_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex return_type = 11;</code>
       */
      public boolean hasReturnType() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex return_type = 11;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getReturnType() {
        return returnType_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex return_type = 11;</code>
       */
      public Builder setReturnType(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (value == null) {
          throw new NullPointerException();
        }
        returnType_ = value;

        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex return_type = 11;</code>
       */
      public Builder setReturnType(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder builderForValue) {
        returnType_ = builderForValue.build();

        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex return_type = 11;</code>
       */
      public Builder mergeReturnType(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (((bitField0_ & 0x00000400) == 0x00000400) &&
            returnType_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance()) {
          returnType_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.newBuilder(returnType_).mergeFrom(value).buildPartial();
        } else {
          returnType_ = value;
        }

        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex return_type = 11;</code>
       */
      public Builder clearReturnType() {
        returnType_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase)
  }

  public interface IrFunctionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrFunction)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase base = 1;</code>
     */
    boolean hasBase();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase base = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase getBase();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 2;</code>
     */
    boolean hasModality();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind getModality();

    /**
     * <code>required bool is_tailrec = 3;</code>
     */
    boolean hasIsTailrec();
    /**
     * <code>required bool is_tailrec = 3;</code>
     */
    boolean getIsTailrec();

    /**
     * <code>required bool is_suspend = 4;</code>
     */
    boolean hasIsSuspend();
    /**
     * <code>required bool is_suspend = 4;</code>
     */
    boolean getIsSuspend();

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol overridden = 5;</code>
     *
     * <pre>
     *optional UniqId corresponding_property = 7;
     * </pre>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol> 
        getOverriddenList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol overridden = 5;</code>
     *
     * <pre>
     *optional UniqId corresponding_property = 7;
     * </pre>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getOverridden(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol overridden = 5;</code>
     *
     * <pre>
     *optional UniqId corresponding_property = 7;
     * </pre>
     */
    int getOverriddenCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrFunction}
   */
  public static final class IrFunction extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrFunction)
      IrFunctionOrBuilder {
    // Use IrFunction.newBuilder() to construct.
    private IrFunction(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrFunction(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrFunction getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrFunction(
        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);
      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.KotlinIr.IrFunctionBase.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = base_.toBuilder();
              }
              base_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(base_);
                base_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 16: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind value = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000002;
                modality_ = value;
              }
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              isTailrec_ = input.readBool();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              isSuspend_ = input.readBool();
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                overridden_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol>();
                mutable_bitField0_ |= 0x00000010;
              }
              overridden_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.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_ & 0x00000010) == 0x00000010)) {
          overridden_ = java.util.Collections.unmodifiableList(overridden_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrFunction> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrFunction>() {
      public IrFunction parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrFunction(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int BASE_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase base_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase base = 1;</code>
     */
    public boolean hasBase() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase base = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase getBase() {
      return base_;
    }

    public static final int MODALITY_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind modality_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 2;</code>
     */
    public boolean hasModality() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind getModality() {
      return modality_;
    }

    public static final int IS_TAILREC_FIELD_NUMBER = 3;
    private boolean isTailrec_;
    /**
     * <code>required bool is_tailrec = 3;</code>
     */
    public boolean hasIsTailrec() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required bool is_tailrec = 3;</code>
     */
    public boolean getIsTailrec() {
      return isTailrec_;
    }

    public static final int IS_SUSPEND_FIELD_NUMBER = 4;
    private boolean isSuspend_;
    /**
     * <code>required bool is_suspend = 4;</code>
     */
    public boolean hasIsSuspend() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required bool is_suspend = 4;</code>
     */
    public boolean getIsSuspend() {
      return isSuspend_;
    }

    public static final int OVERRIDDEN_FIELD_NUMBER = 5;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol> overridden_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol overridden = 5;</code>
     *
     * <pre>
     *optional UniqId corresponding_property = 7;
     * </pre>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol> getOverriddenList() {
      return overridden_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol overridden = 5;</code>
     *
     * <pre>
     *optional UniqId corresponding_property = 7;
     * </pre>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolOrBuilder> 
        getOverriddenOrBuilderList() {
      return overridden_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol overridden = 5;</code>
     *
     * <pre>
     *optional UniqId corresponding_property = 7;
     * </pre>
     */
    public int getOverriddenCount() {
      return overridden_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol overridden = 5;</code>
     *
     * <pre>
     *optional UniqId corresponding_property = 7;
     * </pre>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getOverridden(int index) {
      return overridden_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol overridden = 5;</code>
     *
     * <pre>
     *optional UniqId corresponding_property = 7;
     * </pre>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbolOrBuilder getOverriddenOrBuilder(
        int index) {
      return overridden_.get(index);
    }

    private void initFields() {
      base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase.getDefaultInstance();
      modality_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind.FINAL_MODALITY;
      isTailrec_ = false;
      isSuspend_ = false;
      overridden_ = 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 (!hasBase()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasModality()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsTailrec()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsSuspend()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getBase().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getOverriddenCount(); i++) {
        if (!getOverridden(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeEnum(2, modality_.getNumber());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBool(3, isTailrec_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBool(4, isSuspend_);
      }
      for (int i = 0; i < overridden_.size(); i++) {
        output.writeMessage(5, overridden_.get(i));
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(2, modality_.getNumber());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(3, isTailrec_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(4, isSuspend_);
      }
      for (int i = 0; i < overridden_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, overridden_.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.common.serialization.KotlinIr.IrFunction parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction 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.common.serialization.KotlinIr.IrFunction parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction 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.common.serialization.KotlinIr.IrFunction parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction 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.common.serialization.KotlinIr.IrFunction parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction 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.common.serialization.KotlinIr.IrFunction parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction 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.common.serialization.KotlinIr.IrFunction prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        modality_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind.FINAL_MODALITY;
        bitField0_ = (bitField0_ & ~0x00000002);
        isTailrec_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        isSuspend_ = false;
        bitField0_ = (bitField0_ & ~0x00000008);
        overridden_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.base_ = base_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.modality_ = modality_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.isTailrec_ = isTailrec_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.isSuspend_ = isSuspend_;
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          overridden_ = java.util.Collections.unmodifiableList(overridden_);
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.overridden_ = overridden_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance()) return this;
        if (other.hasBase()) {
          mergeBase(other.getBase());
        }
        if (other.hasModality()) {
          setModality(other.getModality());
        }
        if (other.hasIsTailrec()) {
          setIsTailrec(other.getIsTailrec());
        }
        if (other.hasIsSuspend()) {
          setIsSuspend(other.getIsSuspend());
        }
        if (!other.overridden_.isEmpty()) {
          if (overridden_.isEmpty()) {
            overridden_ = other.overridden_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureOverriddenIsMutable();
            overridden_.addAll(other.overridden_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasBase()) {
          
          return false;
        }
        if (!hasModality()) {
          
          return false;
        }
        if (!hasIsTailrec()) {
          
          return false;
        }
        if (!hasIsSuspend()) {
          
          return false;
        }
        if (!getBase().isInitialized()) {
          
          return false;
        }
        for (int i = 0; i < getOverriddenCount(); i++) {
          if (!getOverridden(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.common.serialization.KotlinIr.IrFunction parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase base = 1;</code>
       */
      public boolean hasBase() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase base = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase getBase() {
        return base_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase base = 1;</code>
       */
      public Builder setBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase value) {
        if (value == null) {
          throw new NullPointerException();
        }
        base_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase base = 1;</code>
       */
      public Builder setBase(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase.Builder builderForValue) {
        base_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase base = 1;</code>
       */
      public Builder mergeBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            base_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase.getDefaultInstance()) {
          base_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase.newBuilder(base_).mergeFrom(value).buildPartial();
        } else {
          base_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase base = 1;</code>
       */
      public Builder clearBase() {
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind modality_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind.FINAL_MODALITY;
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 2;</code>
       */
      public boolean hasModality() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind getModality() {
        return modality_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 2;</code>
       */
      public Builder setModality(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        modality_ = value;
        
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 2;</code>
       */
      public Builder clearModality() {
        bitField0_ = (bitField0_ & ~0x00000002);
        modality_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind.FINAL_MODALITY;
        
        return this;
      }

      private boolean isTailrec_ ;
      /**
       * <code>required bool is_tailrec = 3;</code>
       */
      public boolean hasIsTailrec() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required bool is_tailrec = 3;</code>
       */
      public boolean getIsTailrec() {
        return isTailrec_;
      }
      /**
       * <code>required bool is_tailrec = 3;</code>
       */
      public Builder setIsTailrec(boolean value) {
        bitField0_ |= 0x00000004;
        isTailrec_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_tailrec = 3;</code>
       */
      public Builder clearIsTailrec() {
        bitField0_ = (bitField0_ & ~0x00000004);
        isTailrec_ = false;
        
        return this;
      }

      private boolean isSuspend_ ;
      /**
       * <code>required bool is_suspend = 4;</code>
       */
      public boolean hasIsSuspend() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required bool is_suspend = 4;</code>
       */
      public boolean getIsSuspend() {
        return isSuspend_;
      }
      /**
       * <code>required bool is_suspend = 4;</code>
       */
      public Builder setIsSuspend(boolean value) {
        bitField0_ |= 0x00000008;
        isSuspend_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_suspend = 4;</code>
       */
      public Builder clearIsSuspend() {
        bitField0_ = (bitField0_ & ~0x00000008);
        isSuspend_ = false;
        
        return this;
      }

      private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol> overridden_ =
        java.util.Collections.emptyList();
      private void ensureOverriddenIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          overridden_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol>(overridden_);
          bitField0_ |= 0x00000010;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol overridden = 5;</code>
       *
       * <pre>
       *optional UniqId corresponding_property = 7;
       * </pre>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol> getOverriddenList() {
        return java.util.Collections.unmodifiableList(overridden_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol overridden = 5;</code>
       *
       * <pre>
       *optional UniqId corresponding_property = 7;
       * </pre>
       */
      public int getOverriddenCount() {
        return overridden_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol overridden = 5;</code>
       *
       * <pre>
       *optional UniqId corresponding_property = 7;
       * </pre>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getOverridden(int index) {
        return overridden_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol overridden = 5;</code>
       *
       * <pre>
       *optional UniqId corresponding_property = 7;
       * </pre>
       */
      public Builder setOverridden(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureOverriddenIsMutable();
        overridden_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol overridden = 5;</code>
       *
       * <pre>
       *optional UniqId corresponding_property = 7;
       * </pre>
       */
      public Builder setOverridden(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        ensureOverriddenIsMutable();
        overridden_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol overridden = 5;</code>
       *
       * <pre>
       *optional UniqId corresponding_property = 7;
       * </pre>
       */
      public Builder addOverridden(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureOverriddenIsMutable();
        overridden_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol overridden = 5;</code>
       *
       * <pre>
       *optional UniqId corresponding_property = 7;
       * </pre>
       */
      public Builder addOverridden(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureOverriddenIsMutable();
        overridden_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol overridden = 5;</code>
       *
       * <pre>
       *optional UniqId corresponding_property = 7;
       * </pre>
       */
      public Builder addOverridden(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        ensureOverriddenIsMutable();
        overridden_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol overridden = 5;</code>
       *
       * <pre>
       *optional UniqId corresponding_property = 7;
       * </pre>
       */
      public Builder addOverridden(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.Builder builderForValue) {
        ensureOverriddenIsMutable();
        overridden_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol overridden = 5;</code>
       *
       * <pre>
       *optional UniqId corresponding_property = 7;
       * </pre>
       */
      public Builder addAllOverridden(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol> values) {
        ensureOverriddenIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, overridden_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol overridden = 5;</code>
       *
       * <pre>
       *optional UniqId corresponding_property = 7;
       * </pre>
       */
      public Builder clearOverridden() {
        overridden_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrSymbol overridden = 5;</code>
       *
       * <pre>
       *optional UniqId corresponding_property = 7;
       * </pre>
       */
      public Builder removeOverridden(int index) {
        ensureOverriddenIsMutable();
        overridden_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrFunction)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrFunction)
  }

  public interface IrConstructorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrConstructor)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase base = 1;</code>
     */
    boolean hasBase();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase base = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase getBase();

    /**
     * <code>required bool is_primary = 2;</code>
     */
    boolean hasIsPrimary();
    /**
     * <code>required bool is_primary = 2;</code>
     */
    boolean getIsPrimary();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrConstructor}
   */
  public static final class IrConstructor extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrConstructor)
      IrConstructorOrBuilder {
    // Use IrConstructor.newBuilder() to construct.
    private IrConstructor(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrConstructor(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrConstructor getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrConstructor(
        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);
      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.KotlinIr.IrFunctionBase.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = base_.toBuilder();
              }
              base_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(base_);
                base_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              isPrimary_ = input.readBool();
              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<IrConstructor> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrConstructor>() {
      public IrConstructor parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrConstructor(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int BASE_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase base_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase base = 1;</code>
     */
    public boolean hasBase() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase base = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase getBase() {
      return base_;
    }

    public static final int IS_PRIMARY_FIELD_NUMBER = 2;
    private boolean isPrimary_;
    /**
     * <code>required bool is_primary = 2;</code>
     */
    public boolean hasIsPrimary() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required bool is_primary = 2;</code>
     */
    public boolean getIsPrimary() {
      return isPrimary_;
    }

    private void initFields() {
      base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase.getDefaultInstance();
      isPrimary_ = false;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasBase()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsPrimary()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getBase().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBool(2, isPrimary_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(2, isPrimary_);
      }
      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.common.serialization.KotlinIr.IrConstructor parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor 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.common.serialization.KotlinIr.IrConstructor parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor 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.common.serialization.KotlinIr.IrConstructor parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor 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.common.serialization.KotlinIr.IrConstructor parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor 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.common.serialization.KotlinIr.IrConstructor parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor 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.common.serialization.KotlinIr.IrConstructor prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        isPrimary_ = false;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.base_ = base_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.isPrimary_ = isPrimary_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor.getDefaultInstance()) return this;
        if (other.hasBase()) {
          mergeBase(other.getBase());
        }
        if (other.hasIsPrimary()) {
          setIsPrimary(other.getIsPrimary());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasBase()) {
          
          return false;
        }
        if (!hasIsPrimary()) {
          
          return false;
        }
        if (!getBase().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.common.serialization.KotlinIr.IrConstructor parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase base = 1;</code>
       */
      public boolean hasBase() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase base = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase getBase() {
        return base_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase base = 1;</code>
       */
      public Builder setBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase value) {
        if (value == null) {
          throw new NullPointerException();
        }
        base_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase base = 1;</code>
       */
      public Builder setBase(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase.Builder builderForValue) {
        base_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase base = 1;</code>
       */
      public Builder mergeBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            base_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase.getDefaultInstance()) {
          base_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase.newBuilder(base_).mergeFrom(value).buildPartial();
        } else {
          base_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrFunctionBase base = 1;</code>
       */
      public Builder clearBase() {
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunctionBase.getDefaultInstance();

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

      private boolean isPrimary_ ;
      /**
       * <code>required bool is_primary = 2;</code>
       */
      public boolean hasIsPrimary() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required bool is_primary = 2;</code>
       */
      public boolean getIsPrimary() {
        return isPrimary_;
      }
      /**
       * <code>required bool is_primary = 2;</code>
       */
      public Builder setIsPrimary(boolean value) {
        bitField0_ |= 0x00000002;
        isPrimary_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_primary = 2;</code>
       */
      public Builder clearIsPrimary() {
        bitField0_ = (bitField0_ & ~0x00000002);
        isPrimary_ = false;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrConstructor)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrConstructor)
  }

  public interface IrFieldOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrField)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    boolean hasBase();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 2;</code>
     */
    boolean hasInitializer();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getInitializer();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 3;</code>
     */
    boolean hasName();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 4;</code>
     */
    boolean hasVisibility();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 4;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility getVisibility();

    /**
     * <code>required bool is_final = 5;</code>
     */
    boolean hasIsFinal();
    /**
     * <code>required bool is_final = 5;</code>
     */
    boolean getIsFinal();

    /**
     * <code>required bool is_external = 6;</code>
     */
    boolean hasIsExternal();
    /**
     * <code>required bool is_external = 6;</code>
     */
    boolean getIsExternal();

    /**
     * <code>required bool is_static = 7;</code>
     */
    boolean hasIsStatic();
    /**
     * <code>required bool is_static = 7;</code>
     */
    boolean getIsStatic();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 8;</code>
     */
    boolean hasType();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 8;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getType();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrField}
   */
  public static final class IrField extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrField)
      IrFieldOrBuilder {
    // Use IrField.newBuilder() to construct.
    private IrField(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrField(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrField getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrField(
        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);
      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.KotlinIr.IrDeclarationBase.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = base_.toBuilder();
              }
              base_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(base_);
                base_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = initializer_.toBuilder();
              }
              initializer_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(initializer_);
                initializer_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = name_.toBuilder();
              }
              name_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(name_);
                name_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 34: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = visibility_.toBuilder();
              }
              visibility_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(visibility_);
                visibility_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              isFinal_ = input.readBool();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              isExternal_ = input.readBool();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000040;
              isStatic_ = input.readBool();
              break;
            }
            case 66: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder subBuilder = null;
              if (((bitField0_ & 0x00000080) == 0x00000080)) {
                subBuilder = type_.toBuilder();
              }
              type_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(type_);
                type_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000080;
              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<IrField> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrField>() {
      public IrField parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrField(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int BASE_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase base_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    public boolean hasBase() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase() {
      return base_;
    }

    public static final int INITIALIZER_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression initializer_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 2;</code>
     */
    public boolean hasInitializer() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getInitializer() {
      return initializer_;
    }

    public static final int NAME_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 3;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
      return name_;
    }

    public static final int VISIBILITY_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility visibility_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 4;</code>
     */
    public boolean hasVisibility() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 4;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility getVisibility() {
      return visibility_;
    }

    public static final int IS_FINAL_FIELD_NUMBER = 5;
    private boolean isFinal_;
    /**
     * <code>required bool is_final = 5;</code>
     */
    public boolean hasIsFinal() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>required bool is_final = 5;</code>
     */
    public boolean getIsFinal() {
      return isFinal_;
    }

    public static final int IS_EXTERNAL_FIELD_NUMBER = 6;
    private boolean isExternal_;
    /**
     * <code>required bool is_external = 6;</code>
     */
    public boolean hasIsExternal() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>required bool is_external = 6;</code>
     */
    public boolean getIsExternal() {
      return isExternal_;
    }

    public static final int IS_STATIC_FIELD_NUMBER = 7;
    private boolean isStatic_;
    /**
     * <code>required bool is_static = 7;</code>
     */
    public boolean hasIsStatic() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>required bool is_static = 7;</code>
     */
    public boolean getIsStatic() {
      return isStatic_;
    }

    public static final int TYPE_FIELD_NUMBER = 8;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex type_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 8;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 8;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getType() {
      return type_;
    }

    private void initFields() {
      base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      initializer_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      visibility_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance();
      isFinal_ = false;
      isExternal_ = false;
      isStatic_ = false;
      type_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasBase()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVisibility()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsFinal()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsExternal()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsStatic()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getBase().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasInitializer()) {
        if (!getInitializer().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!getName().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getVisibility().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getType().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, initializer_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, name_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, visibility_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBool(5, isFinal_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBool(6, isExternal_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBool(7, isStatic_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeMessage(8, type_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, initializer_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, name_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, visibility_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(5, isFinal_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(6, isExternal_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(7, isStatic_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(8, type_);
      }
      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.common.serialization.KotlinIr.IrField parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField 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.common.serialization.KotlinIr.IrField parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField 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.common.serialization.KotlinIr.IrField parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField 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.common.serialization.KotlinIr.IrField parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField 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.common.serialization.KotlinIr.IrField parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField 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.common.serialization.KotlinIr.IrField prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        initializer_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        visibility_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        isFinal_ = false;
        bitField0_ = (bitField0_ & ~0x00000010);
        isExternal_ = false;
        bitField0_ = (bitField0_ & ~0x00000020);
        isStatic_ = false;
        bitField0_ = (bitField0_ & ~0x00000040);
        type_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.base_ = base_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.initializer_ = initializer_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.visibility_ = visibility_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.isFinal_ = isFinal_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.isExternal_ = isExternal_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.isStatic_ = isStatic_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.type_ = type_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField.getDefaultInstance()) return this;
        if (other.hasBase()) {
          mergeBase(other.getBase());
        }
        if (other.hasInitializer()) {
          mergeInitializer(other.getInitializer());
        }
        if (other.hasName()) {
          mergeName(other.getName());
        }
        if (other.hasVisibility()) {
          mergeVisibility(other.getVisibility());
        }
        if (other.hasIsFinal()) {
          setIsFinal(other.getIsFinal());
        }
        if (other.hasIsExternal()) {
          setIsExternal(other.getIsExternal());
        }
        if (other.hasIsStatic()) {
          setIsStatic(other.getIsStatic());
        }
        if (other.hasType()) {
          mergeType(other.getType());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasBase()) {
          
          return false;
        }
        if (!hasName()) {
          
          return false;
        }
        if (!hasVisibility()) {
          
          return false;
        }
        if (!hasIsFinal()) {
          
          return false;
        }
        if (!hasIsExternal()) {
          
          return false;
        }
        if (!hasIsStatic()) {
          
          return false;
        }
        if (!hasType()) {
          
          return false;
        }
        if (!getBase().isInitialized()) {
          
          return false;
        }
        if (hasInitializer()) {
          if (!getInitializer().isInitialized()) {
            
            return false;
          }
        }
        if (!getName().isInitialized()) {
          
          return false;
        }
        if (!getVisibility().isInitialized()) {
          
          return false;
        }
        if (!getType().isInitialized()) {
          
          return false;
        }
        return true;
      }

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public boolean hasBase() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase() {
        return base_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder setBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase value) {
        if (value == null) {
          throw new NullPointerException();
        }
        base_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder setBase(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.Builder builderForValue) {
        base_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder mergeBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            base_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance()) {
          base_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.newBuilder(base_).mergeFrom(value).buildPartial();
        } else {
          base_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder clearBase() {
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression initializer_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 2;</code>
       */
      public boolean hasInitializer() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getInitializer() {
        return initializer_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 2;</code>
       */
      public Builder setInitializer(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        initializer_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 2;</code>
       */
      public Builder setInitializer(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        initializer_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 2;</code>
       */
      public Builder mergeInitializer(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            initializer_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          initializer_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(initializer_).mergeFrom(value).buildPartial();
        } else {
          initializer_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 2;</code>
       */
      public Builder clearInitializer() {
        initializer_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 3;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
        return name_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 3;</code>
       */
      public Builder setName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        name_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 3;</code>
       */
      public Builder setName(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        name_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 3;</code>
       */
      public Builder mergeName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            name_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          name_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(name_).mergeFrom(value).buildPartial();
        } else {
          name_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 3;</code>
       */
      public Builder clearName() {
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility visibility_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 4;</code>
       */
      public boolean hasVisibility() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 4;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility getVisibility() {
        return visibility_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 4;</code>
       */
      public Builder setVisibility(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility value) {
        if (value == null) {
          throw new NullPointerException();
        }
        visibility_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 4;</code>
       */
      public Builder setVisibility(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.Builder builderForValue) {
        visibility_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 4;</code>
       */
      public Builder mergeVisibility(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            visibility_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance()) {
          visibility_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.newBuilder(visibility_).mergeFrom(value).buildPartial();
        } else {
          visibility_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 4;</code>
       */
      public Builder clearVisibility() {
        visibility_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance();

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

      private boolean isFinal_ ;
      /**
       * <code>required bool is_final = 5;</code>
       */
      public boolean hasIsFinal() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>required bool is_final = 5;</code>
       */
      public boolean getIsFinal() {
        return isFinal_;
      }
      /**
       * <code>required bool is_final = 5;</code>
       */
      public Builder setIsFinal(boolean value) {
        bitField0_ |= 0x00000010;
        isFinal_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_final = 5;</code>
       */
      public Builder clearIsFinal() {
        bitField0_ = (bitField0_ & ~0x00000010);
        isFinal_ = false;
        
        return this;
      }

      private boolean isExternal_ ;
      /**
       * <code>required bool is_external = 6;</code>
       */
      public boolean hasIsExternal() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>required bool is_external = 6;</code>
       */
      public boolean getIsExternal() {
        return isExternal_;
      }
      /**
       * <code>required bool is_external = 6;</code>
       */
      public Builder setIsExternal(boolean value) {
        bitField0_ |= 0x00000020;
        isExternal_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_external = 6;</code>
       */
      public Builder clearIsExternal() {
        bitField0_ = (bitField0_ & ~0x00000020);
        isExternal_ = false;
        
        return this;
      }

      private boolean isStatic_ ;
      /**
       * <code>required bool is_static = 7;</code>
       */
      public boolean hasIsStatic() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>required bool is_static = 7;</code>
       */
      public boolean getIsStatic() {
        return isStatic_;
      }
      /**
       * <code>required bool is_static = 7;</code>
       */
      public Builder setIsStatic(boolean value) {
        bitField0_ |= 0x00000040;
        isStatic_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_static = 7;</code>
       */
      public Builder clearIsStatic() {
        bitField0_ = (bitField0_ & ~0x00000040);
        isStatic_ = false;
        
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex type_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 8;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 8;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getType() {
        return type_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 8;</code>
       */
      public Builder setType(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (value == null) {
          throw new NullPointerException();
        }
        type_ = value;

        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 8;</code>
       */
      public Builder setType(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder builderForValue) {
        type_ = builderForValue.build();

        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 8;</code>
       */
      public Builder mergeType(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (((bitField0_ & 0x00000080) == 0x00000080) &&
            type_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance()) {
          type_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.newBuilder(type_).mergeFrom(value).buildPartial();
        } else {
          type_ = value;
        }

        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 8;</code>
       */
      public Builder clearType() {
        type_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrField)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrField)
  }

  public interface IrLocalDelegatedPropertyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedProperty)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    boolean hasBase();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    boolean hasName();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 3;</code>
     */
    boolean hasType();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getType();

    /**
     * <code>required bool is_var = 4;</code>
     */
    boolean hasIsVar();
    /**
     * <code>required bool is_var = 4;</code>
     */
    boolean getIsVar();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrVariable delegate = 5;</code>
     */
    boolean hasDelegate();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrVariable delegate = 5;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable getDelegate();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction getter = 6;</code>
     */
    boolean hasGetter();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction getter = 6;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction getGetter();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction setter = 7;</code>
     */
    boolean hasSetter();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction setter = 7;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction getSetter();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedProperty}
   */
  public static final class IrLocalDelegatedProperty extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedProperty)
      IrLocalDelegatedPropertyOrBuilder {
    // Use IrLocalDelegatedProperty.newBuilder() to construct.
    private IrLocalDelegatedProperty(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrLocalDelegatedProperty(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrLocalDelegatedProperty getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrLocalDelegatedProperty(
        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);
      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.KotlinIr.IrDeclarationBase.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = base_.toBuilder();
              }
              base_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(base_);
                base_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = name_.toBuilder();
              }
              name_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(name_);
                name_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = type_.toBuilder();
              }
              type_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(type_);
                type_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              isVar_ = input.readBool();
              break;
            }
            case 42: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                subBuilder = delegate_.toBuilder();
              }
              delegate_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(delegate_);
                delegate_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
            case 50: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.Builder subBuilder = null;
              if (((bitField0_ & 0x00000020) == 0x00000020)) {
                subBuilder = getter_.toBuilder();
              }
              getter_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(getter_);
                getter_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000020;
              break;
            }
            case 58: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.Builder subBuilder = null;
              if (((bitField0_ & 0x00000040) == 0x00000040)) {
                subBuilder = setter_.toBuilder();
              }
              setter_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(setter_);
                setter_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000040;
              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<IrLocalDelegatedProperty> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrLocalDelegatedProperty>() {
      public IrLocalDelegatedProperty parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrLocalDelegatedProperty(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int BASE_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase base_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    public boolean hasBase() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase() {
      return base_;
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
      return name_;
    }

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

    public static final int IS_VAR_FIELD_NUMBER = 4;
    private boolean isVar_;
    /**
     * <code>required bool is_var = 4;</code>
     */
    public boolean hasIsVar() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required bool is_var = 4;</code>
     */
    public boolean getIsVar() {
      return isVar_;
    }

    public static final int DELEGATE_FIELD_NUMBER = 5;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable delegate_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrVariable delegate = 5;</code>
     */
    public boolean hasDelegate() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrVariable delegate = 5;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable getDelegate() {
      return delegate_;
    }

    public static final int GETTER_FIELD_NUMBER = 6;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction getter_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction getter = 6;</code>
     */
    public boolean hasGetter() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction getter = 6;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction getGetter() {
      return getter_;
    }

    public static final int SETTER_FIELD_NUMBER = 7;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction setter_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction setter = 7;</code>
     */
    public boolean hasSetter() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction setter = 7;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction getSetter() {
      return setter_;
    }

    private void initFields() {
      base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      type_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
      isVar_ = false;
      delegate_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.getDefaultInstance();
      getter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance();
      setter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasBase()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsVar()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasDelegate()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getBase().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getName().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getType().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getDelegate().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasGetter()) {
        if (!getGetter().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSetter()) {
        if (!getSetter().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, name_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, type_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBool(4, isVar_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(5, delegate_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeMessage(6, getter_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeMessage(7, setter_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, name_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, type_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(4, isVar_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, delegate_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(6, getter_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(7, setter_);
      }
      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.common.serialization.KotlinIr.IrLocalDelegatedProperty parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty 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.common.serialization.KotlinIr.IrLocalDelegatedProperty parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty 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.common.serialization.KotlinIr.IrLocalDelegatedProperty parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty 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.common.serialization.KotlinIr.IrLocalDelegatedProperty parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty 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.common.serialization.KotlinIr.IrLocalDelegatedProperty parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty 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.common.serialization.KotlinIr.IrLocalDelegatedProperty prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        type_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        isVar_ = false;
        bitField0_ = (bitField0_ & ~0x00000008);
        delegate_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000010);
        getter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000020);
        setter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.base_ = base_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.isVar_ = isVar_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.delegate_ = delegate_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.getter_ = getter_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.setter_ = setter_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty.getDefaultInstance()) return this;
        if (other.hasBase()) {
          mergeBase(other.getBase());
        }
        if (other.hasName()) {
          mergeName(other.getName());
        }
        if (other.hasType()) {
          mergeType(other.getType());
        }
        if (other.hasIsVar()) {
          setIsVar(other.getIsVar());
        }
        if (other.hasDelegate()) {
          mergeDelegate(other.getDelegate());
        }
        if (other.hasGetter()) {
          mergeGetter(other.getGetter());
        }
        if (other.hasSetter()) {
          mergeSetter(other.getSetter());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasBase()) {
          
          return false;
        }
        if (!hasName()) {
          
          return false;
        }
        if (!hasType()) {
          
          return false;
        }
        if (!hasIsVar()) {
          
          return false;
        }
        if (!hasDelegate()) {
          
          return false;
        }
        if (!getBase().isInitialized()) {
          
          return false;
        }
        if (!getName().isInitialized()) {
          
          return false;
        }
        if (!getType().isInitialized()) {
          
          return false;
        }
        if (!getDelegate().isInitialized()) {
          
          return false;
        }
        if (hasGetter()) {
          if (!getGetter().isInitialized()) {
            
            return false;
          }
        }
        if (hasSetter()) {
          if (!getSetter().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.common.serialization.KotlinIr.IrLocalDelegatedProperty parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public boolean hasBase() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase() {
        return base_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder setBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase value) {
        if (value == null) {
          throw new NullPointerException();
        }
        base_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder setBase(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.Builder builderForValue) {
        base_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder mergeBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            base_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance()) {
          base_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.newBuilder(base_).mergeFrom(value).buildPartial();
        } else {
          base_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder clearBase() {
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
        return name_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder setName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        name_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder setName(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        name_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder mergeName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            name_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          name_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(name_).mergeFrom(value).buildPartial();
        } else {
          name_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder clearName() {
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

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

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

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

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

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

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

      private boolean isVar_ ;
      /**
       * <code>required bool is_var = 4;</code>
       */
      public boolean hasIsVar() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required bool is_var = 4;</code>
       */
      public boolean getIsVar() {
        return isVar_;
      }
      /**
       * <code>required bool is_var = 4;</code>
       */
      public Builder setIsVar(boolean value) {
        bitField0_ |= 0x00000008;
        isVar_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_var = 4;</code>
       */
      public Builder clearIsVar() {
        bitField0_ = (bitField0_ & ~0x00000008);
        isVar_ = false;
        
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable delegate_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrVariable delegate = 5;</code>
       */
      public boolean hasDelegate() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrVariable delegate = 5;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable getDelegate() {
        return delegate_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrVariable delegate = 5;</code>
       */
      public Builder setDelegate(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        delegate_ = value;

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrVariable delegate = 5;</code>
       */
      public Builder setDelegate(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.Builder builderForValue) {
        delegate_ = builderForValue.build();

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrVariable delegate = 5;</code>
       */
      public Builder mergeDelegate(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable value) {
        if (((bitField0_ & 0x00000010) == 0x00000010) &&
            delegate_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.getDefaultInstance()) {
          delegate_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.newBuilder(delegate_).mergeFrom(value).buildPartial();
        } else {
          delegate_ = value;
        }

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrVariable delegate = 5;</code>
       */
      public Builder clearDelegate() {
        delegate_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction getter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction getter = 6;</code>
       */
      public boolean hasGetter() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction getter = 6;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction getGetter() {
        return getter_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction getter = 6;</code>
       */
      public Builder setGetter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction value) {
        if (value == null) {
          throw new NullPointerException();
        }
        getter_ = value;

        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction getter = 6;</code>
       */
      public Builder setGetter(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.Builder builderForValue) {
        getter_ = builderForValue.build();

        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction getter = 6;</code>
       */
      public Builder mergeGetter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction value) {
        if (((bitField0_ & 0x00000020) == 0x00000020) &&
            getter_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance()) {
          getter_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.newBuilder(getter_).mergeFrom(value).buildPartial();
        } else {
          getter_ = value;
        }

        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction getter = 6;</code>
       */
      public Builder clearGetter() {
        getter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction setter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction setter = 7;</code>
       */
      public boolean hasSetter() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction setter = 7;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction getSetter() {
        return setter_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction setter = 7;</code>
       */
      public Builder setSetter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction value) {
        if (value == null) {
          throw new NullPointerException();
        }
        setter_ = value;

        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction setter = 7;</code>
       */
      public Builder setSetter(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.Builder builderForValue) {
        setter_ = builderForValue.build();

        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction setter = 7;</code>
       */
      public Builder mergeSetter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction value) {
        if (((bitField0_ & 0x00000040) == 0x00000040) &&
            setter_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance()) {
          setter_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.newBuilder(setter_).mergeFrom(value).buildPartial();
        } else {
          setter_ = value;
        }

        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction setter = 7;</code>
       */
      public Builder clearSetter() {
        setter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedProperty)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedProperty)
  }

  public interface IrPropertyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrProperty)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    boolean hasBase();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    boolean hasName();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 3;</code>
     */
    boolean hasVisibility();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility getVisibility();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 4;</code>
     */
    boolean hasModality();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 4;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind getModality();

    /**
     * <code>required bool is_var = 5;</code>
     */
    boolean hasIsVar();
    /**
     * <code>required bool is_var = 5;</code>
     */
    boolean getIsVar();

    /**
     * <code>required bool is_const = 6;</code>
     */
    boolean hasIsConst();
    /**
     * <code>required bool is_const = 6;</code>
     */
    boolean getIsConst();

    /**
     * <code>required bool is_lateinit = 7;</code>
     */
    boolean hasIsLateinit();
    /**
     * <code>required bool is_lateinit = 7;</code>
     */
    boolean getIsLateinit();

    /**
     * <code>required bool is_delegated = 8;</code>
     */
    boolean hasIsDelegated();
    /**
     * <code>required bool is_delegated = 8;</code>
     */
    boolean getIsDelegated();

    /**
     * <code>required bool is_external = 9;</code>
     */
    boolean hasIsExternal();
    /**
     * <code>required bool is_external = 9;</code>
     */
    boolean getIsExternal();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrField backing_field = 10;</code>
     */
    boolean hasBackingField();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrField backing_field = 10;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField getBackingField();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction getter = 11;</code>
     */
    boolean hasGetter();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction getter = 11;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction getGetter();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction setter = 12;</code>
     */
    boolean hasSetter();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction setter = 12;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction getSetter();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrProperty}
   */
  public static final class IrProperty extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrProperty)
      IrPropertyOrBuilder {
    // Use IrProperty.newBuilder() to construct.
    private IrProperty(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrProperty(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrProperty getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrProperty(
        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);
      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.KotlinIr.IrDeclarationBase.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = base_.toBuilder();
              }
              base_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(base_);
                base_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = name_.toBuilder();
              }
              name_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(name_);
                name_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = visibility_.toBuilder();
              }
              visibility_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(visibility_);
                visibility_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 32: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind value = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000008;
                modality_ = value;
              }
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              isVar_ = input.readBool();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              isConst_ = input.readBool();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000040;
              isLateinit_ = input.readBool();
              break;
            }
            case 64: {
              bitField0_ |= 0x00000080;
              isDelegated_ = input.readBool();
              break;
            }
            case 72: {
              bitField0_ |= 0x00000100;
              isExternal_ = input.readBool();
              break;
            }
            case 82: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField.Builder subBuilder = null;
              if (((bitField0_ & 0x00000200) == 0x00000200)) {
                subBuilder = backingField_.toBuilder();
              }
              backingField_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(backingField_);
                backingField_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000200;
              break;
            }
            case 90: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.Builder subBuilder = null;
              if (((bitField0_ & 0x00000400) == 0x00000400)) {
                subBuilder = getter_.toBuilder();
              }
              getter_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(getter_);
                getter_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000400;
              break;
            }
            case 98: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.Builder subBuilder = null;
              if (((bitField0_ & 0x00000800) == 0x00000800)) {
                subBuilder = setter_.toBuilder();
              }
              setter_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(setter_);
                setter_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000800;
              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<IrProperty> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrProperty>() {
      public IrProperty parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrProperty(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int BASE_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase base_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    public boolean hasBase() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase() {
      return base_;
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
      return name_;
    }

    public static final int VISIBILITY_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility visibility_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 3;</code>
     */
    public boolean hasVisibility() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility getVisibility() {
      return visibility_;
    }

    public static final int MODALITY_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind modality_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 4;</code>
     */
    public boolean hasModality() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 4;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind getModality() {
      return modality_;
    }

    public static final int IS_VAR_FIELD_NUMBER = 5;
    private boolean isVar_;
    /**
     * <code>required bool is_var = 5;</code>
     */
    public boolean hasIsVar() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>required bool is_var = 5;</code>
     */
    public boolean getIsVar() {
      return isVar_;
    }

    public static final int IS_CONST_FIELD_NUMBER = 6;
    private boolean isConst_;
    /**
     * <code>required bool is_const = 6;</code>
     */
    public boolean hasIsConst() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>required bool is_const = 6;</code>
     */
    public boolean getIsConst() {
      return isConst_;
    }

    public static final int IS_LATEINIT_FIELD_NUMBER = 7;
    private boolean isLateinit_;
    /**
     * <code>required bool is_lateinit = 7;</code>
     */
    public boolean hasIsLateinit() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>required bool is_lateinit = 7;</code>
     */
    public boolean getIsLateinit() {
      return isLateinit_;
    }

    public static final int IS_DELEGATED_FIELD_NUMBER = 8;
    private boolean isDelegated_;
    /**
     * <code>required bool is_delegated = 8;</code>
     */
    public boolean hasIsDelegated() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>required bool is_delegated = 8;</code>
     */
    public boolean getIsDelegated() {
      return isDelegated_;
    }

    public static final int IS_EXTERNAL_FIELD_NUMBER = 9;
    private boolean isExternal_;
    /**
     * <code>required bool is_external = 9;</code>
     */
    public boolean hasIsExternal() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * <code>required bool is_external = 9;</code>
     */
    public boolean getIsExternal() {
      return isExternal_;
    }

    public static final int BACKING_FIELD_FIELD_NUMBER = 10;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField backingField_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrField backing_field = 10;</code>
     */
    public boolean hasBackingField() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrField backing_field = 10;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField getBackingField() {
      return backingField_;
    }

    public static final int GETTER_FIELD_NUMBER = 11;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction getter_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction getter = 11;</code>
     */
    public boolean hasGetter() {
      return ((bitField0_ & 0x00000400) == 0x00000400);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction getter = 11;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction getGetter() {
      return getter_;
    }

    public static final int SETTER_FIELD_NUMBER = 12;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction setter_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction setter = 12;</code>
     */
    public boolean hasSetter() {
      return ((bitField0_ & 0x00000800) == 0x00000800);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction setter = 12;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction getSetter() {
      return setter_;
    }

    private void initFields() {
      base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      visibility_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance();
      modality_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind.FINAL_MODALITY;
      isVar_ = false;
      isConst_ = false;
      isLateinit_ = false;
      isDelegated_ = false;
      isExternal_ = false;
      backingField_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField.getDefaultInstance();
      getter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance();
      setter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasBase()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVisibility()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasModality()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsVar()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsConst()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsLateinit()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsDelegated()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsExternal()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getBase().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getName().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getVisibility().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasBackingField()) {
        if (!getBackingField().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasGetter()) {
        if (!getGetter().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSetter()) {
        if (!getSetter().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, name_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, visibility_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeEnum(4, modality_.getNumber());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBool(5, isVar_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBool(6, isConst_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBool(7, isLateinit_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeBool(8, isDelegated_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeBool(9, isExternal_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeMessage(10, backingField_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        output.writeMessage(11, getter_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        output.writeMessage(12, setter_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, name_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, visibility_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(4, modality_.getNumber());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(5, isVar_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(6, isConst_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(7, isLateinit_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(8, isDelegated_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(9, isExternal_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(10, backingField_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(11, getter_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(12, setter_);
      }
      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.common.serialization.KotlinIr.IrProperty parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty 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.common.serialization.KotlinIr.IrProperty parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty 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.common.serialization.KotlinIr.IrProperty parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty 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.common.serialization.KotlinIr.IrProperty parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty 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.common.serialization.KotlinIr.IrProperty parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty 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.common.serialization.KotlinIr.IrProperty prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        visibility_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        modality_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind.FINAL_MODALITY;
        bitField0_ = (bitField0_ & ~0x00000008);
        isVar_ = false;
        bitField0_ = (bitField0_ & ~0x00000010);
        isConst_ = false;
        bitField0_ = (bitField0_ & ~0x00000020);
        isLateinit_ = false;
        bitField0_ = (bitField0_ & ~0x00000040);
        isDelegated_ = false;
        bitField0_ = (bitField0_ & ~0x00000080);
        isExternal_ = false;
        bitField0_ = (bitField0_ & ~0x00000100);
        backingField_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000200);
        getter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000400);
        setter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000800);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.base_ = base_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.visibility_ = visibility_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.modality_ = modality_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.isVar_ = isVar_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.isConst_ = isConst_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.isLateinit_ = isLateinit_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.isDelegated_ = isDelegated_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000100;
        }
        result.isExternal_ = isExternal_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000200;
        }
        result.backingField_ = backingField_;
        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
          to_bitField0_ |= 0x00000400;
        }
        result.getter_ = getter_;
        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
          to_bitField0_ |= 0x00000800;
        }
        result.setter_ = setter_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty.getDefaultInstance()) return this;
        if (other.hasBase()) {
          mergeBase(other.getBase());
        }
        if (other.hasName()) {
          mergeName(other.getName());
        }
        if (other.hasVisibility()) {
          mergeVisibility(other.getVisibility());
        }
        if (other.hasModality()) {
          setModality(other.getModality());
        }
        if (other.hasIsVar()) {
          setIsVar(other.getIsVar());
        }
        if (other.hasIsConst()) {
          setIsConst(other.getIsConst());
        }
        if (other.hasIsLateinit()) {
          setIsLateinit(other.getIsLateinit());
        }
        if (other.hasIsDelegated()) {
          setIsDelegated(other.getIsDelegated());
        }
        if (other.hasIsExternal()) {
          setIsExternal(other.getIsExternal());
        }
        if (other.hasBackingField()) {
          mergeBackingField(other.getBackingField());
        }
        if (other.hasGetter()) {
          mergeGetter(other.getGetter());
        }
        if (other.hasSetter()) {
          mergeSetter(other.getSetter());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasBase()) {
          
          return false;
        }
        if (!hasName()) {
          
          return false;
        }
        if (!hasVisibility()) {
          
          return false;
        }
        if (!hasModality()) {
          
          return false;
        }
        if (!hasIsVar()) {
          
          return false;
        }
        if (!hasIsConst()) {
          
          return false;
        }
        if (!hasIsLateinit()) {
          
          return false;
        }
        if (!hasIsDelegated()) {
          
          return false;
        }
        if (!hasIsExternal()) {
          
          return false;
        }
        if (!getBase().isInitialized()) {
          
          return false;
        }
        if (!getName().isInitialized()) {
          
          return false;
        }
        if (!getVisibility().isInitialized()) {
          
          return false;
        }
        if (hasBackingField()) {
          if (!getBackingField().isInitialized()) {
            
            return false;
          }
        }
        if (hasGetter()) {
          if (!getGetter().isInitialized()) {
            
            return false;
          }
        }
        if (hasSetter()) {
          if (!getSetter().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.common.serialization.KotlinIr.IrProperty parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public boolean hasBase() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase() {
        return base_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder setBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase value) {
        if (value == null) {
          throw new NullPointerException();
        }
        base_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder setBase(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.Builder builderForValue) {
        base_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder mergeBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            base_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance()) {
          base_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.newBuilder(base_).mergeFrom(value).buildPartial();
        } else {
          base_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder clearBase() {
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
        return name_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder setName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        name_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder setName(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        name_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder mergeName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            name_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          name_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(name_).mergeFrom(value).buildPartial();
        } else {
          name_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder clearName() {
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility visibility_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 3;</code>
       */
      public boolean hasVisibility() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility getVisibility() {
        return visibility_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 3;</code>
       */
      public Builder setVisibility(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility value) {
        if (value == null) {
          throw new NullPointerException();
        }
        visibility_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 3;</code>
       */
      public Builder setVisibility(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.Builder builderForValue) {
        visibility_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 3;</code>
       */
      public Builder mergeVisibility(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            visibility_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance()) {
          visibility_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.newBuilder(visibility_).mergeFrom(value).buildPartial();
        } else {
          visibility_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 3;</code>
       */
      public Builder clearVisibility() {
        visibility_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind modality_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind.FINAL_MODALITY;
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 4;</code>
       */
      public boolean hasModality() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 4;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind getModality() {
        return modality_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 4;</code>
       */
      public Builder setModality(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000008;
        modality_ = value;
        
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 4;</code>
       */
      public Builder clearModality() {
        bitField0_ = (bitField0_ & ~0x00000008);
        modality_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind.FINAL_MODALITY;
        
        return this;
      }

      private boolean isVar_ ;
      /**
       * <code>required bool is_var = 5;</code>
       */
      public boolean hasIsVar() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>required bool is_var = 5;</code>
       */
      public boolean getIsVar() {
        return isVar_;
      }
      /**
       * <code>required bool is_var = 5;</code>
       */
      public Builder setIsVar(boolean value) {
        bitField0_ |= 0x00000010;
        isVar_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_var = 5;</code>
       */
      public Builder clearIsVar() {
        bitField0_ = (bitField0_ & ~0x00000010);
        isVar_ = false;
        
        return this;
      }

      private boolean isConst_ ;
      /**
       * <code>required bool is_const = 6;</code>
       */
      public boolean hasIsConst() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>required bool is_const = 6;</code>
       */
      public boolean getIsConst() {
        return isConst_;
      }
      /**
       * <code>required bool is_const = 6;</code>
       */
      public Builder setIsConst(boolean value) {
        bitField0_ |= 0x00000020;
        isConst_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_const = 6;</code>
       */
      public Builder clearIsConst() {
        bitField0_ = (bitField0_ & ~0x00000020);
        isConst_ = false;
        
        return this;
      }

      private boolean isLateinit_ ;
      /**
       * <code>required bool is_lateinit = 7;</code>
       */
      public boolean hasIsLateinit() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>required bool is_lateinit = 7;</code>
       */
      public boolean getIsLateinit() {
        return isLateinit_;
      }
      /**
       * <code>required bool is_lateinit = 7;</code>
       */
      public Builder setIsLateinit(boolean value) {
        bitField0_ |= 0x00000040;
        isLateinit_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_lateinit = 7;</code>
       */
      public Builder clearIsLateinit() {
        bitField0_ = (bitField0_ & ~0x00000040);
        isLateinit_ = false;
        
        return this;
      }

      private boolean isDelegated_ ;
      /**
       * <code>required bool is_delegated = 8;</code>
       */
      public boolean hasIsDelegated() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>required bool is_delegated = 8;</code>
       */
      public boolean getIsDelegated() {
        return isDelegated_;
      }
      /**
       * <code>required bool is_delegated = 8;</code>
       */
      public Builder setIsDelegated(boolean value) {
        bitField0_ |= 0x00000080;
        isDelegated_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_delegated = 8;</code>
       */
      public Builder clearIsDelegated() {
        bitField0_ = (bitField0_ & ~0x00000080);
        isDelegated_ = false;
        
        return this;
      }

      private boolean isExternal_ ;
      /**
       * <code>required bool is_external = 9;</code>
       */
      public boolean hasIsExternal() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>required bool is_external = 9;</code>
       */
      public boolean getIsExternal() {
        return isExternal_;
      }
      /**
       * <code>required bool is_external = 9;</code>
       */
      public Builder setIsExternal(boolean value) {
        bitField0_ |= 0x00000100;
        isExternal_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_external = 9;</code>
       */
      public Builder clearIsExternal() {
        bitField0_ = (bitField0_ & ~0x00000100);
        isExternal_ = false;
        
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField backingField_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrField backing_field = 10;</code>
       */
      public boolean hasBackingField() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrField backing_field = 10;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField getBackingField() {
        return backingField_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrField backing_field = 10;</code>
       */
      public Builder setBackingField(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField value) {
        if (value == null) {
          throw new NullPointerException();
        }
        backingField_ = value;

        bitField0_ |= 0x00000200;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrField backing_field = 10;</code>
       */
      public Builder setBackingField(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField.Builder builderForValue) {
        backingField_ = builderForValue.build();

        bitField0_ |= 0x00000200;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrField backing_field = 10;</code>
       */
      public Builder mergeBackingField(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField value) {
        if (((bitField0_ & 0x00000200) == 0x00000200) &&
            backingField_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField.getDefaultInstance()) {
          backingField_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField.newBuilder(backingField_).mergeFrom(value).buildPartial();
        } else {
          backingField_ = value;
        }

        bitField0_ |= 0x00000200;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrField backing_field = 10;</code>
       */
      public Builder clearBackingField() {
        backingField_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction getter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction getter = 11;</code>
       */
      public boolean hasGetter() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction getter = 11;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction getGetter() {
        return getter_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction getter = 11;</code>
       */
      public Builder setGetter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction value) {
        if (value == null) {
          throw new NullPointerException();
        }
        getter_ = value;

        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction getter = 11;</code>
       */
      public Builder setGetter(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.Builder builderForValue) {
        getter_ = builderForValue.build();

        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction getter = 11;</code>
       */
      public Builder mergeGetter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction value) {
        if (((bitField0_ & 0x00000400) == 0x00000400) &&
            getter_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance()) {
          getter_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.newBuilder(getter_).mergeFrom(value).buildPartial();
        } else {
          getter_ = value;
        }

        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction getter = 11;</code>
       */
      public Builder clearGetter() {
        getter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction setter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction setter = 12;</code>
       */
      public boolean hasSetter() {
        return ((bitField0_ & 0x00000800) == 0x00000800);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction setter = 12;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction getSetter() {
        return setter_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction setter = 12;</code>
       */
      public Builder setSetter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction value) {
        if (value == null) {
          throw new NullPointerException();
        }
        setter_ = value;

        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction setter = 12;</code>
       */
      public Builder setSetter(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.Builder builderForValue) {
        setter_ = builderForValue.build();

        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction setter = 12;</code>
       */
      public Builder mergeSetter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction value) {
        if (((bitField0_ & 0x00000800) == 0x00000800) &&
            setter_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance()) {
          setter_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.newBuilder(setter_).mergeFrom(value).buildPartial();
        } else {
          setter_ = value;
        }

        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction setter = 12;</code>
       */
      public Builder clearSetter() {
        setter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrProperty)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrProperty)
  }

  public interface IrVariableOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrVariable)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    boolean hasBase();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    boolean hasName();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 3;</code>
     */
    boolean hasType();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getType();

    /**
     * <code>required bool is_var = 4;</code>
     */
    boolean hasIsVar();
    /**
     * <code>required bool is_var = 4;</code>
     */
    boolean getIsVar();

    /**
     * <code>required bool is_const = 5;</code>
     */
    boolean hasIsConst();
    /**
     * <code>required bool is_const = 5;</code>
     */
    boolean getIsConst();

    /**
     * <code>required bool is_lateinit = 6;</code>
     */
    boolean hasIsLateinit();
    /**
     * <code>required bool is_lateinit = 6;</code>
     */
    boolean getIsLateinit();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 7;</code>
     */
    boolean hasInitializer();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 7;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getInitializer();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrVariable}
   */
  public static final class IrVariable extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrVariable)
      IrVariableOrBuilder {
    // Use IrVariable.newBuilder() to construct.
    private IrVariable(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrVariable(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrVariable getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrVariable(
        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);
      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.KotlinIr.IrDeclarationBase.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = base_.toBuilder();
              }
              base_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(base_);
                base_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = name_.toBuilder();
              }
              name_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(name_);
                name_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = type_.toBuilder();
              }
              type_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(type_);
                type_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              isVar_ = input.readBool();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              isConst_ = input.readBool();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              isLateinit_ = input.readBool();
              break;
            }
            case 58: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000040) == 0x00000040)) {
                subBuilder = initializer_.toBuilder();
              }
              initializer_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(initializer_);
                initializer_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000040;
              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<IrVariable> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrVariable>() {
      public IrVariable parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrVariable(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int BASE_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase base_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    public boolean hasBase() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase() {
      return base_;
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
      return name_;
    }

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

    public static final int IS_VAR_FIELD_NUMBER = 4;
    private boolean isVar_;
    /**
     * <code>required bool is_var = 4;</code>
     */
    public boolean hasIsVar() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required bool is_var = 4;</code>
     */
    public boolean getIsVar() {
      return isVar_;
    }

    public static final int IS_CONST_FIELD_NUMBER = 5;
    private boolean isConst_;
    /**
     * <code>required bool is_const = 5;</code>
     */
    public boolean hasIsConst() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>required bool is_const = 5;</code>
     */
    public boolean getIsConst() {
      return isConst_;
    }

    public static final int IS_LATEINIT_FIELD_NUMBER = 6;
    private boolean isLateinit_;
    /**
     * <code>required bool is_lateinit = 6;</code>
     */
    public boolean hasIsLateinit() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>required bool is_lateinit = 6;</code>
     */
    public boolean getIsLateinit() {
      return isLateinit_;
    }

    public static final int INITIALIZER_FIELD_NUMBER = 7;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression initializer_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 7;</code>
     */
    public boolean hasInitializer() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 7;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getInitializer() {
      return initializer_;
    }

    private void initFields() {
      base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      type_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
      isVar_ = false;
      isConst_ = false;
      isLateinit_ = false;
      initializer_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasBase()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsVar()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsConst()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsLateinit()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getBase().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getName().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getType().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasInitializer()) {
        if (!getInitializer().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, name_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, type_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBool(4, isVar_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBool(5, isConst_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBool(6, isLateinit_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeMessage(7, initializer_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, name_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, type_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(4, isVar_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(5, isConst_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(6, isLateinit_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(7, initializer_);
      }
      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.common.serialization.KotlinIr.IrVariable parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable 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.common.serialization.KotlinIr.IrVariable parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable 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.common.serialization.KotlinIr.IrVariable parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable 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.common.serialization.KotlinIr.IrVariable parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable 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.common.serialization.KotlinIr.IrVariable parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable 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.common.serialization.KotlinIr.IrVariable prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        type_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        isVar_ = false;
        bitField0_ = (bitField0_ & ~0x00000008);
        isConst_ = false;
        bitField0_ = (bitField0_ & ~0x00000010);
        isLateinit_ = false;
        bitField0_ = (bitField0_ & ~0x00000020);
        initializer_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.base_ = base_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.isVar_ = isVar_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.isConst_ = isConst_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.isLateinit_ = isLateinit_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.initializer_ = initializer_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.getDefaultInstance()) return this;
        if (other.hasBase()) {
          mergeBase(other.getBase());
        }
        if (other.hasName()) {
          mergeName(other.getName());
        }
        if (other.hasType()) {
          mergeType(other.getType());
        }
        if (other.hasIsVar()) {
          setIsVar(other.getIsVar());
        }
        if (other.hasIsConst()) {
          setIsConst(other.getIsConst());
        }
        if (other.hasIsLateinit()) {
          setIsLateinit(other.getIsLateinit());
        }
        if (other.hasInitializer()) {
          mergeInitializer(other.getInitializer());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasBase()) {
          
          return false;
        }
        if (!hasName()) {
          
          return false;
        }
        if (!hasType()) {
          
          return false;
        }
        if (!hasIsVar()) {
          
          return false;
        }
        if (!hasIsConst()) {
          
          return false;
        }
        if (!hasIsLateinit()) {
          
          return false;
        }
        if (!getBase().isInitialized()) {
          
          return false;
        }
        if (!getName().isInitialized()) {
          
          return false;
        }
        if (!getType().isInitialized()) {
          
          return false;
        }
        if (hasInitializer()) {
          if (!getInitializer().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.common.serialization.KotlinIr.IrVariable parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public boolean hasBase() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase() {
        return base_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder setBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase value) {
        if (value == null) {
          throw new NullPointerException();
        }
        base_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder setBase(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.Builder builderForValue) {
        base_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder mergeBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            base_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance()) {
          base_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.newBuilder(base_).mergeFrom(value).buildPartial();
        } else {
          base_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder clearBase() {
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
        return name_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder setName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        name_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder setName(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        name_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder mergeName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            name_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          name_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(name_).mergeFrom(value).buildPartial();
        } else {
          name_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder clearName() {
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

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

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

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

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

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

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

      private boolean isVar_ ;
      /**
       * <code>required bool is_var = 4;</code>
       */
      public boolean hasIsVar() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required bool is_var = 4;</code>
       */
      public boolean getIsVar() {
        return isVar_;
      }
      /**
       * <code>required bool is_var = 4;</code>
       */
      public Builder setIsVar(boolean value) {
        bitField0_ |= 0x00000008;
        isVar_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_var = 4;</code>
       */
      public Builder clearIsVar() {
        bitField0_ = (bitField0_ & ~0x00000008);
        isVar_ = false;
        
        return this;
      }

      private boolean isConst_ ;
      /**
       * <code>required bool is_const = 5;</code>
       */
      public boolean hasIsConst() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>required bool is_const = 5;</code>
       */
      public boolean getIsConst() {
        return isConst_;
      }
      /**
       * <code>required bool is_const = 5;</code>
       */
      public Builder setIsConst(boolean value) {
        bitField0_ |= 0x00000010;
        isConst_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_const = 5;</code>
       */
      public Builder clearIsConst() {
        bitField0_ = (bitField0_ & ~0x00000010);
        isConst_ = false;
        
        return this;
      }

      private boolean isLateinit_ ;
      /**
       * <code>required bool is_lateinit = 6;</code>
       */
      public boolean hasIsLateinit() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>required bool is_lateinit = 6;</code>
       */
      public boolean getIsLateinit() {
        return isLateinit_;
      }
      /**
       * <code>required bool is_lateinit = 6;</code>
       */
      public Builder setIsLateinit(boolean value) {
        bitField0_ |= 0x00000020;
        isLateinit_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_lateinit = 6;</code>
       */
      public Builder clearIsLateinit() {
        bitField0_ = (bitField0_ & ~0x00000020);
        isLateinit_ = false;
        
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression initializer_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 7;</code>
       */
      public boolean hasInitializer() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 7;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getInitializer() {
        return initializer_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 7;</code>
       */
      public Builder setInitializer(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        initializer_ = value;

        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 7;</code>
       */
      public Builder setInitializer(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        initializer_ = builderForValue.build();

        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 7;</code>
       */
      public Builder mergeInitializer(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000040) == 0x00000040) &&
            initializer_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          initializer_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(initializer_).mergeFrom(value).buildPartial();
        } else {
          initializer_ = value;
        }

        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 7;</code>
       */
      public Builder clearInitializer() {
        initializer_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrVariable)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrVariable)
  }

  public interface IrValueParameterOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrValueParameter)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    boolean hasBase();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    boolean hasName();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName();

    /**
     * <code>required int32 index = 3;</code>
     */
    boolean hasIndex();
    /**
     * <code>required int32 index = 3;</code>
     */
    int getIndex();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 4;</code>
     */
    boolean hasType();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 4;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getType();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex vararg_element_type = 5;</code>
     */
    boolean hasVarargElementType();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex vararg_element_type = 5;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getVarargElementType();

    /**
     * <code>required bool is_crossinline = 6;</code>
     */
    boolean hasIsCrossinline();
    /**
     * <code>required bool is_crossinline = 6;</code>
     */
    boolean getIsCrossinline();

    /**
     * <code>required bool is_noinline = 7;</code>
     */
    boolean hasIsNoinline();
    /**
     * <code>required bool is_noinline = 7;</code>
     */
    boolean getIsNoinline();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression default_value = 8;</code>
     */
    boolean hasDefaultValue();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression default_value = 8;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getDefaultValue();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrValueParameter}
   */
  public static final class IrValueParameter extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrValueParameter)
      IrValueParameterOrBuilder {
    // Use IrValueParameter.newBuilder() to construct.
    private IrValueParameter(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrValueParameter(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrValueParameter getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrValueParameter(
        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);
      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.KotlinIr.IrDeclarationBase.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = base_.toBuilder();
              }
              base_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(base_);
                base_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = name_.toBuilder();
              }
              name_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(name_);
                name_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              index_ = input.readInt32();
              break;
            }
            case 34: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = type_.toBuilder();
              }
              type_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(type_);
                type_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 42: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                subBuilder = varargElementType_.toBuilder();
              }
              varargElementType_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(varargElementType_);
                varargElementType_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              isCrossinline_ = input.readBool();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000040;
              isNoinline_ = input.readBool();
              break;
            }
            case 66: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000080) == 0x00000080)) {
                subBuilder = defaultValue_.toBuilder();
              }
              defaultValue_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(defaultValue_);
                defaultValue_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000080;
              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<IrValueParameter> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrValueParameter>() {
      public IrValueParameter parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrValueParameter(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int BASE_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase base_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    public boolean hasBase() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase() {
      return base_;
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
      return name_;
    }

    public static final int INDEX_FIELD_NUMBER = 3;
    private int index_;
    /**
     * <code>required int32 index = 3;</code>
     */
    public boolean hasIndex() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required int32 index = 3;</code>
     */
    public int getIndex() {
      return index_;
    }

    public static final int TYPE_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex type_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 4;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 4;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getType() {
      return type_;
    }

    public static final int VARARG_ELEMENT_TYPE_FIELD_NUMBER = 5;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex varargElementType_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex vararg_element_type = 5;</code>
     */
    public boolean hasVarargElementType() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex vararg_element_type = 5;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getVarargElementType() {
      return varargElementType_;
    }

    public static final int IS_CROSSINLINE_FIELD_NUMBER = 6;
    private boolean isCrossinline_;
    /**
     * <code>required bool is_crossinline = 6;</code>
     */
    public boolean hasIsCrossinline() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>required bool is_crossinline = 6;</code>
     */
    public boolean getIsCrossinline() {
      return isCrossinline_;
    }

    public static final int IS_NOINLINE_FIELD_NUMBER = 7;
    private boolean isNoinline_;
    /**
     * <code>required bool is_noinline = 7;</code>
     */
    public boolean hasIsNoinline() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>required bool is_noinline = 7;</code>
     */
    public boolean getIsNoinline() {
      return isNoinline_;
    }

    public static final int DEFAULT_VALUE_FIELD_NUMBER = 8;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression defaultValue_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression default_value = 8;</code>
     */
    public boolean hasDefaultValue() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression default_value = 8;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getDefaultValue() {
      return defaultValue_;
    }

    private void initFields() {
      base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      index_ = 0;
      type_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
      varargElementType_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
      isCrossinline_ = false;
      isNoinline_ = false;
      defaultValue_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasBase()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIndex()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsCrossinline()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsNoinline()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getBase().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getName().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getType().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasVarargElementType()) {
        if (!getVarargElementType().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasDefaultValue()) {
        if (!getDefaultValue().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, name_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(3, index_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, type_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(5, varargElementType_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBool(6, isCrossinline_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBool(7, isNoinline_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeMessage(8, defaultValue_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, name_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(3, index_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, type_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, varargElementType_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(6, isCrossinline_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(7, isNoinline_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(8, defaultValue_);
      }
      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.common.serialization.KotlinIr.IrValueParameter parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter 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.common.serialization.KotlinIr.IrValueParameter parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter 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.common.serialization.KotlinIr.IrValueParameter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter 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.common.serialization.KotlinIr.IrValueParameter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter 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.common.serialization.KotlinIr.IrValueParameter parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter 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.common.serialization.KotlinIr.IrValueParameter prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        index_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        type_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        varargElementType_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000010);
        isCrossinline_ = false;
        bitField0_ = (bitField0_ & ~0x00000020);
        isNoinline_ = false;
        bitField0_ = (bitField0_ & ~0x00000040);
        defaultValue_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.base_ = base_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.index_ = index_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.varargElementType_ = varargElementType_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.isCrossinline_ = isCrossinline_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.isNoinline_ = isNoinline_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.defaultValue_ = defaultValue_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.getDefaultInstance()) return this;
        if (other.hasBase()) {
          mergeBase(other.getBase());
        }
        if (other.hasName()) {
          mergeName(other.getName());
        }
        if (other.hasIndex()) {
          setIndex(other.getIndex());
        }
        if (other.hasType()) {
          mergeType(other.getType());
        }
        if (other.hasVarargElementType()) {
          mergeVarargElementType(other.getVarargElementType());
        }
        if (other.hasIsCrossinline()) {
          setIsCrossinline(other.getIsCrossinline());
        }
        if (other.hasIsNoinline()) {
          setIsNoinline(other.getIsNoinline());
        }
        if (other.hasDefaultValue()) {
          mergeDefaultValue(other.getDefaultValue());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasBase()) {
          
          return false;
        }
        if (!hasName()) {
          
          return false;
        }
        if (!hasIndex()) {
          
          return false;
        }
        if (!hasType()) {
          
          return false;
        }
        if (!hasIsCrossinline()) {
          
          return false;
        }
        if (!hasIsNoinline()) {
          
          return false;
        }
        if (!getBase().isInitialized()) {
          
          return false;
        }
        if (!getName().isInitialized()) {
          
          return false;
        }
        if (!getType().isInitialized()) {
          
          return false;
        }
        if (hasVarargElementType()) {
          if (!getVarargElementType().isInitialized()) {
            
            return false;
          }
        }
        if (hasDefaultValue()) {
          if (!getDefaultValue().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.common.serialization.KotlinIr.IrValueParameter parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public boolean hasBase() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase() {
        return base_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder setBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase value) {
        if (value == null) {
          throw new NullPointerException();
        }
        base_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder setBase(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.Builder builderForValue) {
        base_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder mergeBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            base_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance()) {
          base_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.newBuilder(base_).mergeFrom(value).buildPartial();
        } else {
          base_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder clearBase() {
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
        return name_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder setName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        name_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder setName(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        name_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder mergeName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            name_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          name_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(name_).mergeFrom(value).buildPartial();
        } else {
          name_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder clearName() {
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

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

      private int index_ ;
      /**
       * <code>required int32 index = 3;</code>
       */
      public boolean hasIndex() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required int32 index = 3;</code>
       */
      public int getIndex() {
        return index_;
      }
      /**
       * <code>required int32 index = 3;</code>
       */
      public Builder setIndex(int value) {
        bitField0_ |= 0x00000004;
        index_ = value;
        
        return this;
      }
      /**
       * <code>required int32 index = 3;</code>
       */
      public Builder clearIndex() {
        bitField0_ = (bitField0_ & ~0x00000004);
        index_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex type_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 4;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 4;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getType() {
        return type_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 4;</code>
       */
      public Builder setType(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (value == null) {
          throw new NullPointerException();
        }
        type_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 4;</code>
       */
      public Builder setType(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder builderForValue) {
        type_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 4;</code>
       */
      public Builder mergeType(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            type_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance()) {
          type_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.newBuilder(type_).mergeFrom(value).buildPartial();
        } else {
          type_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex type = 4;</code>
       */
      public Builder clearType() {
        type_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex varargElementType_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex vararg_element_type = 5;</code>
       */
      public boolean hasVarargElementType() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex vararg_element_type = 5;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getVarargElementType() {
        return varargElementType_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex vararg_element_type = 5;</code>
       */
      public Builder setVarargElementType(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (value == null) {
          throw new NullPointerException();
        }
        varargElementType_ = value;

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex vararg_element_type = 5;</code>
       */
      public Builder setVarargElementType(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder builderForValue) {
        varargElementType_ = builderForValue.build();

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex vararg_element_type = 5;</code>
       */
      public Builder mergeVarargElementType(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (((bitField0_ & 0x00000010) == 0x00000010) &&
            varargElementType_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance()) {
          varargElementType_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.newBuilder(varargElementType_).mergeFrom(value).buildPartial();
        } else {
          varargElementType_ = value;
        }

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex vararg_element_type = 5;</code>
       */
      public Builder clearVarargElementType() {
        varargElementType_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.getDefaultInstance();

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

      private boolean isCrossinline_ ;
      /**
       * <code>required bool is_crossinline = 6;</code>
       */
      public boolean hasIsCrossinline() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>required bool is_crossinline = 6;</code>
       */
      public boolean getIsCrossinline() {
        return isCrossinline_;
      }
      /**
       * <code>required bool is_crossinline = 6;</code>
       */
      public Builder setIsCrossinline(boolean value) {
        bitField0_ |= 0x00000020;
        isCrossinline_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_crossinline = 6;</code>
       */
      public Builder clearIsCrossinline() {
        bitField0_ = (bitField0_ & ~0x00000020);
        isCrossinline_ = false;
        
        return this;
      }

      private boolean isNoinline_ ;
      /**
       * <code>required bool is_noinline = 7;</code>
       */
      public boolean hasIsNoinline() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>required bool is_noinline = 7;</code>
       */
      public boolean getIsNoinline() {
        return isNoinline_;
      }
      /**
       * <code>required bool is_noinline = 7;</code>
       */
      public Builder setIsNoinline(boolean value) {
        bitField0_ |= 0x00000040;
        isNoinline_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_noinline = 7;</code>
       */
      public Builder clearIsNoinline() {
        bitField0_ = (bitField0_ & ~0x00000040);
        isNoinline_ = false;
        
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression defaultValue_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression default_value = 8;</code>
       */
      public boolean hasDefaultValue() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression default_value = 8;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getDefaultValue() {
        return defaultValue_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression default_value = 8;</code>
       */
      public Builder setDefaultValue(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        defaultValue_ = value;

        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression default_value = 8;</code>
       */
      public Builder setDefaultValue(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        defaultValue_ = builderForValue.build();

        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression default_value = 8;</code>
       */
      public Builder mergeDefaultValue(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000080) == 0x00000080) &&
            defaultValue_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          defaultValue_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(defaultValue_).mergeFrom(value).buildPartial();
        } else {
          defaultValue_ = value;
        }

        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression default_value = 8;</code>
       */
      public Builder clearDefaultValue() {
        defaultValue_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrValueParameter)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrValueParameter)
  }

  public interface IrTypeParameterOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    boolean hasBase();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    boolean hasName();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName();

    /**
     * <code>required int32 index = 3;</code>
     */
    boolean hasIndex();
    /**
     * <code>required int32 index = 3;</code>
     */
    int getIndex();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeVariance variance = 4;</code>
     */
    boolean hasVariance();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeVariance variance = 4;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance getVariance();

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 5;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex> 
        getSuperTypeList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 5;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getSuperType(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 5;</code>
     */
    int getSuperTypeCount();

    /**
     * <code>required bool is_reified = 6;</code>
     */
    boolean hasIsReified();
    /**
     * <code>required bool is_reified = 6;</code>
     */
    boolean getIsReified();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter}
   */
  public static final class IrTypeParameter extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter)
      IrTypeParameterOrBuilder {
    // Use IrTypeParameter.newBuilder() to construct.
    private IrTypeParameter(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrTypeParameter(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrTypeParameter getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrTypeParameter(
        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);
      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.KotlinIr.IrDeclarationBase.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = base_.toBuilder();
              }
              base_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(base_);
                base_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = name_.toBuilder();
              }
              name_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(name_);
                name_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              index_ = input.readInt32();
              break;
            }
            case 32: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance value = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000008;
                variance_ = value;
              }
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                superType_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex>();
                mutable_bitField0_ |= 0x00000010;
              }
              superType_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.PARSER, extensionRegistry));
              break;
            }
            case 48: {
              bitField0_ |= 0x00000010;
              isReified_ = input.readBool();
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          superType_ = java.util.Collections.unmodifiableList(superType_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrTypeParameter> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrTypeParameter>() {
      public IrTypeParameter parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrTypeParameter(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int BASE_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase base_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    public boolean hasBase() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase() {
      return base_;
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
      return name_;
    }

    public static final int INDEX_FIELD_NUMBER = 3;
    private int index_;
    /**
     * <code>required int32 index = 3;</code>
     */
    public boolean hasIndex() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required int32 index = 3;</code>
     */
    public int getIndex() {
      return index_;
    }

    public static final int VARIANCE_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance variance_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeVariance variance = 4;</code>
     */
    public boolean hasVariance() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeVariance variance = 4;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance getVariance() {
      return variance_;
    }

    public static final int SUPER_TYPE_FIELD_NUMBER = 5;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex> superType_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 5;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex> getSuperTypeList() {
      return superType_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 5;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndexOrBuilder> 
        getSuperTypeOrBuilderList() {
      return superType_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 5;</code>
     */
    public int getSuperTypeCount() {
      return superType_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 5;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getSuperType(int index) {
      return superType_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 5;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndexOrBuilder getSuperTypeOrBuilder(
        int index) {
      return superType_.get(index);
    }

    public static final int IS_REIFIED_FIELD_NUMBER = 6;
    private boolean isReified_;
    /**
     * <code>required bool is_reified = 6;</code>
     */
    public boolean hasIsReified() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>required bool is_reified = 6;</code>
     */
    public boolean getIsReified() {
      return isReified_;
    }

    private void initFields() {
      base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      index_ = 0;
      variance_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance.IN;
      superType_ = java.util.Collections.emptyList();
      isReified_ = false;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasBase()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIndex()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVariance()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsReified()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getBase().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getName().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getSuperTypeCount(); i++) {
        if (!getSuperType(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, name_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(3, index_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeEnum(4, variance_.getNumber());
      }
      for (int i = 0; i < superType_.size(); i++) {
        output.writeMessage(5, superType_.get(i));
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBool(6, isReified_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, name_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(3, index_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(4, variance_.getNumber());
      }
      for (int i = 0; i < superType_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, superType_.get(i));
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(6, isReified_);
      }
      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.common.serialization.KotlinIr.IrTypeParameter parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter 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.common.serialization.KotlinIr.IrTypeParameter parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter 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.common.serialization.KotlinIr.IrTypeParameter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter 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.common.serialization.KotlinIr.IrTypeParameter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter 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.common.serialization.KotlinIr.IrTypeParameter parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter 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.common.serialization.KotlinIr.IrTypeParameter prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        index_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        variance_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance.IN;
        bitField0_ = (bitField0_ & ~0x00000008);
        superType_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        isReified_ = false;
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

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

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.base_ = base_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.index_ = index_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.variance_ = variance_;
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          superType_ = java.util.Collections.unmodifiableList(superType_);
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.superType_ = superType_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000010;
        }
        result.isReified_ = isReified_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter.getDefaultInstance()) return this;
        if (other.hasBase()) {
          mergeBase(other.getBase());
        }
        if (other.hasName()) {
          mergeName(other.getName());
        }
        if (other.hasIndex()) {
          setIndex(other.getIndex());
        }
        if (other.hasVariance()) {
          setVariance(other.getVariance());
        }
        if (!other.superType_.isEmpty()) {
          if (superType_.isEmpty()) {
            superType_ = other.superType_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureSuperTypeIsMutable();
            superType_.addAll(other.superType_);
          }
          
        }
        if (other.hasIsReified()) {
          setIsReified(other.getIsReified());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasBase()) {
          
          return false;
        }
        if (!hasName()) {
          
          return false;
        }
        if (!hasIndex()) {
          
          return false;
        }
        if (!hasVariance()) {
          
          return false;
        }
        if (!hasIsReified()) {
          
          return false;
        }
        if (!getBase().isInitialized()) {
          
          return false;
        }
        if (!getName().isInitialized()) {
          
          return false;
        }
        for (int i = 0; i < getSuperTypeCount(); i++) {
          if (!getSuperType(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.common.serialization.KotlinIr.IrTypeParameter parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public boolean hasBase() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase() {
        return base_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder setBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase value) {
        if (value == null) {
          throw new NullPointerException();
        }
        base_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder setBase(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.Builder builderForValue) {
        base_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder mergeBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            base_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance()) {
          base_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.newBuilder(base_).mergeFrom(value).buildPartial();
        } else {
          base_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder clearBase() {
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();

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

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
        return name_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder setName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        name_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder setName(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        name_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder mergeName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            name_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          name_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(name_).mergeFrom(value).buildPartial();
        } else {
          name_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder clearName() {
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

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

      private int index_ ;
      /**
       * <code>required int32 index = 3;</code>
       */
      public boolean hasIndex() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required int32 index = 3;</code>
       */
      public int getIndex() {
        return index_;
      }
      /**
       * <code>required int32 index = 3;</code>
       */
      public Builder setIndex(int value) {
        bitField0_ |= 0x00000004;
        index_ = value;
        
        return this;
      }
      /**
       * <code>required int32 index = 3;</code>
       */
      public Builder clearIndex() {
        bitField0_ = (bitField0_ & ~0x00000004);
        index_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance variance_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance.IN;
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeVariance variance = 4;</code>
       */
      public boolean hasVariance() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeVariance variance = 4;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance getVariance() {
        return variance_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeVariance variance = 4;</code>
       */
      public Builder setVariance(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000008;
        variance_ = value;
        
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeVariance variance = 4;</code>
       */
      public Builder clearVariance() {
        bitField0_ = (bitField0_ & ~0x00000008);
        variance_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeVariance.IN;
        
        return this;
      }

      private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex> superType_ =
        java.util.Collections.emptyList();
      private void ensureSuperTypeIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          superType_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex>(superType_);
          bitField0_ |= 0x00000010;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 5;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex> getSuperTypeList() {
        return java.util.Collections.unmodifiableList(superType_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 5;</code>
       */
      public int getSuperTypeCount() {
        return superType_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 5;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getSuperType(int index) {
        return superType_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 5;</code>
       */
      public Builder setSuperType(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSuperTypeIsMutable();
        superType_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 5;</code>
       */
      public Builder setSuperType(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder builderForValue) {
        ensureSuperTypeIsMutable();
        superType_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 5;</code>
       */
      public Builder addSuperType(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSuperTypeIsMutable();
        superType_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 5;</code>
       */
      public Builder addSuperType(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSuperTypeIsMutable();
        superType_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 5;</code>
       */
      public Builder addSuperType(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder builderForValue) {
        ensureSuperTypeIsMutable();
        superType_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 5;</code>
       */
      public Builder addSuperType(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder builderForValue) {
        ensureSuperTypeIsMutable();
        superType_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 5;</code>
       */
      public Builder addAllSuperType(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex> values) {
        ensureSuperTypeIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, superType_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 5;</code>
       */
      public Builder clearSuperType() {
        superType_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 5;</code>
       */
      public Builder removeSuperType(int index) {
        ensureSuperTypeIsMutable();
        superType_.remove(index);

        return this;
      }

      private boolean isReified_ ;
      /**
       * <code>required bool is_reified = 6;</code>
       */
      public boolean hasIsReified() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>required bool is_reified = 6;</code>
       */
      public boolean getIsReified() {
        return isReified_;
      }
      /**
       * <code>required bool is_reified = 6;</code>
       */
      public Builder setIsReified(boolean value) {
        bitField0_ |= 0x00000020;
        isReified_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_reified = 6;</code>
       */
      public Builder clearIsReified() {
        bitField0_ = (bitField0_ & ~0x00000020);
        isReified_ = false;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter)
  }

  public interface IrTypeParameterContainerOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter type_parameter = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter> 
        getTypeParameterList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter type_parameter = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter getTypeParameter(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter type_parameter = 1;</code>
     */
    int getTypeParameterCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer}
   */
  public static final class IrTypeParameterContainer extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer)
      IrTypeParameterContainerOrBuilder {
    // Use IrTypeParameterContainer.newBuilder() to construct.
    private IrTypeParameterContainer(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrTypeParameterContainer(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrTypeParameterContainer getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrTypeParameterContainer(
        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);
      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)) {
                typeParameter_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter>();
                mutable_bitField0_ |= 0x00000001;
              }
              typeParameter_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter.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)) {
          typeParameter_ = java.util.Collections.unmodifiableList(typeParameter_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrTypeParameterContainer> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrTypeParameterContainer>() {
      public IrTypeParameterContainer parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrTypeParameterContainer(input, extensionRegistry);
      }
    };

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

    public static final int TYPE_PARAMETER_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter> typeParameter_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter type_parameter = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter> getTypeParameterList() {
      return typeParameter_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter type_parameter = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterOrBuilder> 
        getTypeParameterOrBuilderList() {
      return typeParameter_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter type_parameter = 1;</code>
     */
    public int getTypeParameterCount() {
      return typeParameter_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter type_parameter = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter getTypeParameter(int index) {
      return typeParameter_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter type_parameter = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterOrBuilder getTypeParameterOrBuilder(
        int index) {
      return typeParameter_.get(index);
    }

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

      for (int i = 0; i < getTypeParameterCount(); i++) {
        if (!getTypeParameter(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 < typeParameter_.size(); i++) {
        output.writeMessage(1, typeParameter_.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 < typeParameter_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, typeParameter_.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.common.serialization.KotlinIr.IrTypeParameterContainer parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer 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.common.serialization.KotlinIr.IrTypeParameterContainer parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer 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.common.serialization.KotlinIr.IrTypeParameterContainer parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer 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.common.serialization.KotlinIr.IrTypeParameterContainer parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer 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.common.serialization.KotlinIr.IrTypeParameterContainer parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer 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.common.serialization.KotlinIr.IrTypeParameterContainer prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer)
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainerOrBuilder {
      // Construct using org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        typeParameter_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          typeParameter_ = java.util.Collections.unmodifiableList(typeParameter_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.typeParameter_ = typeParameter_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.getDefaultInstance()) return this;
        if (!other.typeParameter_.isEmpty()) {
          if (typeParameter_.isEmpty()) {
            typeParameter_ = other.typeParameter_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureTypeParameterIsMutable();
            typeParameter_.addAll(other.typeParameter_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getTypeParameterCount(); i++) {
          if (!getTypeParameter(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.common.serialization.KotlinIr.IrTypeParameterContainer parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer) 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.KotlinIr.IrTypeParameter> typeParameter_ =
        java.util.Collections.emptyList();
      private void ensureTypeParameterIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          typeParameter_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter>(typeParameter_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter type_parameter = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter> getTypeParameterList() {
        return java.util.Collections.unmodifiableList(typeParameter_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter type_parameter = 1;</code>
       */
      public int getTypeParameterCount() {
        return typeParameter_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter type_parameter = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter getTypeParameter(int index) {
        return typeParameter_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter type_parameter = 1;</code>
       */
      public Builder setTypeParameter(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeParameterIsMutable();
        typeParameter_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter type_parameter = 1;</code>
       */
      public Builder setTypeParameter(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter.Builder builderForValue) {
        ensureTypeParameterIsMutable();
        typeParameter_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter type_parameter = 1;</code>
       */
      public Builder addTypeParameter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeParameterIsMutable();
        typeParameter_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter type_parameter = 1;</code>
       */
      public Builder addTypeParameter(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypeParameterIsMutable();
        typeParameter_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter type_parameter = 1;</code>
       */
      public Builder addTypeParameter(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter.Builder builderForValue) {
        ensureTypeParameterIsMutable();
        typeParameter_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter type_parameter = 1;</code>
       */
      public Builder addTypeParameter(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter.Builder builderForValue) {
        ensureTypeParameterIsMutable();
        typeParameter_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter type_parameter = 1;</code>
       */
      public Builder addAllTypeParameter(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter> values) {
        ensureTypeParameterIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, typeParameter_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter type_parameter = 1;</code>
       */
      public Builder clearTypeParameter() {
        typeParameter_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter type_parameter = 1;</code>
       */
      public Builder removeTypeParameter(int index) {
        ensureTypeParameterIsMutable();
        typeParameter_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer)
    }

    static {
      defaultInstance = new IrTypeParameterContainer(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer)
  }

  public interface IrClassOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrClass)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    boolean hasBase();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    boolean hasName();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.ClassKind kind = 3;</code>
     */
    boolean hasKind();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.ClassKind kind = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ClassKind getKind();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 4;</code>
     */
    boolean hasVisibility();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 4;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility getVisibility();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 5;</code>
     */
    boolean hasModality();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 5;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind getModality();

    /**
     * <code>required bool is_companion = 6;</code>
     *
     * <pre>
     * TODO: consider using flags for the booleans.
     * </pre>
     */
    boolean hasIsCompanion();
    /**
     * <code>required bool is_companion = 6;</code>
     *
     * <pre>
     * TODO: consider using flags for the booleans.
     * </pre>
     */
    boolean getIsCompanion();

    /**
     * <code>required bool is_inner = 7;</code>
     */
    boolean hasIsInner();
    /**
     * <code>required bool is_inner = 7;</code>
     */
    boolean getIsInner();

    /**
     * <code>required bool is_data = 8;</code>
     */
    boolean hasIsData();
    /**
     * <code>required bool is_data = 8;</code>
     */
    boolean getIsData();

    /**
     * <code>required bool is_external = 9;</code>
     */
    boolean hasIsExternal();
    /**
     * <code>required bool is_external = 9;</code>
     */
    boolean getIsExternal();

    /**
     * <code>required bool is_inline = 10;</code>
     */
    boolean hasIsInline();
    /**
     * <code>required bool is_inline = 10;</code>
     */
    boolean getIsInline();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter this_receiver = 11;</code>
     */
    boolean hasThisReceiver();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter this_receiver = 11;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter getThisReceiver();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer type_parameters = 12;</code>
     */
    boolean hasTypeParameters();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer type_parameters = 12;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer getTypeParameters();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationContainer declaration_container = 13;</code>
     */
    boolean hasDeclarationContainer();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationContainer declaration_container = 13;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer getDeclarationContainer();

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 14;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex> 
        getSuperTypeList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 14;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getSuperType(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 14;</code>
     */
    int getSuperTypeCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrClass}
   */
  public static final class IrClass extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrClass)
      IrClassOrBuilder {
    // Use IrClass.newBuilder() to construct.
    private IrClass(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrClass(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

    private static final IrClass defaultInstance;
    public static IrClass getDefaultInstance() {
      return defaultInstance;
    }

    public IrClass getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrClass(
        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);
      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.KotlinIr.IrDeclarationBase.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = base_.toBuilder();
              }
              base_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(base_);
                base_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = name_.toBuilder();
              }
              name_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(name_);
                name_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 24: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ClassKind value = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ClassKind.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000004;
                kind_ = value;
              }
              break;
            }
            case 34: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = visibility_.toBuilder();
              }
              visibility_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(visibility_);
                visibility_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 40: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind value = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000010;
                modality_ = value;
              }
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              isCompanion_ = input.readBool();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000040;
              isInner_ = input.readBool();
              break;
            }
            case 64: {
              bitField0_ |= 0x00000080;
              isData_ = input.readBool();
              break;
            }
            case 72: {
              bitField0_ |= 0x00000100;
              isExternal_ = input.readBool();
              break;
            }
            case 80: {
              bitField0_ |= 0x00000200;
              isInline_ = input.readBool();
              break;
            }
            case 90: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.Builder subBuilder = null;
              if (((bitField0_ & 0x00000400) == 0x00000400)) {
                subBuilder = thisReceiver_.toBuilder();
              }
              thisReceiver_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(thisReceiver_);
                thisReceiver_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000400;
              break;
            }
            case 98: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.Builder subBuilder = null;
              if (((bitField0_ & 0x00000800) == 0x00000800)) {
                subBuilder = typeParameters_.toBuilder();
              }
              typeParameters_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(typeParameters_);
                typeParameters_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000800;
              break;
            }
            case 106: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer.Builder subBuilder = null;
              if (((bitField0_ & 0x00001000) == 0x00001000)) {
                subBuilder = declarationContainer_.toBuilder();
              }
              declarationContainer_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(declarationContainer_);
                declarationContainer_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00001000;
              break;
            }
            case 114: {
              if (!((mutable_bitField0_ & 0x00002000) == 0x00002000)) {
                superType_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex>();
                mutable_bitField0_ |= 0x00002000;
              }
              superType_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.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_ & 0x00002000) == 0x00002000)) {
          superType_ = java.util.Collections.unmodifiableList(superType_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrClass> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrClass>() {
      public IrClass parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrClass(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<IrClass> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int BASE_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase base_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    public boolean hasBase() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase() {
      return base_;
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
      return name_;
    }

    public static final int KIND_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ClassKind kind_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.ClassKind kind = 3;</code>
     */
    public boolean hasKind() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.ClassKind kind = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ClassKind getKind() {
      return kind_;
    }

    public static final int VISIBILITY_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility visibility_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 4;</code>
     */
    public boolean hasVisibility() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 4;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility getVisibility() {
      return visibility_;
    }

    public static final int MODALITY_FIELD_NUMBER = 5;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind modality_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 5;</code>
     */
    public boolean hasModality() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 5;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind getModality() {
      return modality_;
    }

    public static final int IS_COMPANION_FIELD_NUMBER = 6;
    private boolean isCompanion_;
    /**
     * <code>required bool is_companion = 6;</code>
     *
     * <pre>
     * TODO: consider using flags for the booleans.
     * </pre>
     */
    public boolean hasIsCompanion() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>required bool is_companion = 6;</code>
     *
     * <pre>
     * TODO: consider using flags for the booleans.
     * </pre>
     */
    public boolean getIsCompanion() {
      return isCompanion_;
    }

    public static final int IS_INNER_FIELD_NUMBER = 7;
    private boolean isInner_;
    /**
     * <code>required bool is_inner = 7;</code>
     */
    public boolean hasIsInner() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>required bool is_inner = 7;</code>
     */
    public boolean getIsInner() {
      return isInner_;
    }

    public static final int IS_DATA_FIELD_NUMBER = 8;
    private boolean isData_;
    /**
     * <code>required bool is_data = 8;</code>
     */
    public boolean hasIsData() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>required bool is_data = 8;</code>
     */
    public boolean getIsData() {
      return isData_;
    }

    public static final int IS_EXTERNAL_FIELD_NUMBER = 9;
    private boolean isExternal_;
    /**
     * <code>required bool is_external = 9;</code>
     */
    public boolean hasIsExternal() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * <code>required bool is_external = 9;</code>
     */
    public boolean getIsExternal() {
      return isExternal_;
    }

    public static final int IS_INLINE_FIELD_NUMBER = 10;
    private boolean isInline_;
    /**
     * <code>required bool is_inline = 10;</code>
     */
    public boolean hasIsInline() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    /**
     * <code>required bool is_inline = 10;</code>
     */
    public boolean getIsInline() {
      return isInline_;
    }

    public static final int THIS_RECEIVER_FIELD_NUMBER = 11;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter thisReceiver_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter this_receiver = 11;</code>
     */
    public boolean hasThisReceiver() {
      return ((bitField0_ & 0x00000400) == 0x00000400);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter this_receiver = 11;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter getThisReceiver() {
      return thisReceiver_;
    }

    public static final int TYPE_PARAMETERS_FIELD_NUMBER = 12;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer typeParameters_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer type_parameters = 12;</code>
     */
    public boolean hasTypeParameters() {
      return ((bitField0_ & 0x00000800) == 0x00000800);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer type_parameters = 12;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer getTypeParameters() {
      return typeParameters_;
    }

    public static final int DECLARATION_CONTAINER_FIELD_NUMBER = 13;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer declarationContainer_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationContainer declaration_container = 13;</code>
     */
    public boolean hasDeclarationContainer() {
      return ((bitField0_ & 0x00001000) == 0x00001000);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationContainer declaration_container = 13;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer getDeclarationContainer() {
      return declarationContainer_;
    }

    public static final int SUPER_TYPE_FIELD_NUMBER = 14;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex> superType_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 14;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex> getSuperTypeList() {
      return superType_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 14;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndexOrBuilder> 
        getSuperTypeOrBuilderList() {
      return superType_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 14;</code>
     */
    public int getSuperTypeCount() {
      return superType_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 14;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getSuperType(int index) {
      return superType_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 14;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndexOrBuilder getSuperTypeOrBuilder(
        int index) {
      return superType_.get(index);
    }

    private void initFields() {
      base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      kind_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ClassKind.CLASS;
      visibility_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance();
      modality_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind.FINAL_MODALITY;
      isCompanion_ = false;
      isInner_ = false;
      isData_ = false;
      isExternal_ = false;
      isInline_ = false;
      thisReceiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.getDefaultInstance();
      typeParameters_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.getDefaultInstance();
      declarationContainer_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer.getDefaultInstance();
      superType_ = 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 (!hasBase()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasKind()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVisibility()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasModality()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsCompanion()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsInner()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsData()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsExternal()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsInline()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTypeParameters()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasDeclarationContainer()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getBase().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getName().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getVisibility().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasThisReceiver()) {
        if (!getThisReceiver().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!getTypeParameters().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getDeclarationContainer().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getSuperTypeCount(); i++) {
        if (!getSuperType(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, name_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeEnum(3, kind_.getNumber());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, visibility_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeEnum(5, modality_.getNumber());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBool(6, isCompanion_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBool(7, isInner_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeBool(8, isData_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeBool(9, isExternal_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeBool(10, isInline_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        output.writeMessage(11, thisReceiver_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        output.writeMessage(12, typeParameters_);
      }
      if (((bitField0_ & 0x00001000) == 0x00001000)) {
        output.writeMessage(13, declarationContainer_);
      }
      for (int i = 0; i < superType_.size(); i++) {
        output.writeMessage(14, superType_.get(i));
      }
      output.writeRawBytes(unknownFields);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, name_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(3, kind_.getNumber());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, visibility_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(5, modality_.getNumber());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(6, isCompanion_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(7, isInner_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(8, isData_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(9, isExternal_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(10, isInline_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(11, thisReceiver_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(12, typeParameters_);
      }
      if (((bitField0_ & 0x00001000) == 0x00001000)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(13, declarationContainer_);
      }
      for (int i = 0; i < superType_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(14, superType_.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.common.serialization.KotlinIr.IrClass parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass 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.common.serialization.KotlinIr.IrClass parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass 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.common.serialization.KotlinIr.IrClass parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass 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.common.serialization.KotlinIr.IrClass parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass 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.common.serialization.KotlinIr.IrClass parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass 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.common.serialization.KotlinIr.IrClass prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrClass}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.backend.common.serialization.IrClass)
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClassOrBuilder {
      // Construct using org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        kind_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ClassKind.CLASS;
        bitField0_ = (bitField0_ & ~0x00000004);
        visibility_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        modality_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind.FINAL_MODALITY;
        bitField0_ = (bitField0_ & ~0x00000010);
        isCompanion_ = false;
        bitField0_ = (bitField0_ & ~0x00000020);
        isInner_ = false;
        bitField0_ = (bitField0_ & ~0x00000040);
        isData_ = false;
        bitField0_ = (bitField0_ & ~0x00000080);
        isExternal_ = false;
        bitField0_ = (bitField0_ & ~0x00000100);
        isInline_ = false;
        bitField0_ = (bitField0_ & ~0x00000200);
        thisReceiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000400);
        typeParameters_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000800);
        declarationContainer_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00001000);
        superType_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00002000);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.base_ = base_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.kind_ = kind_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.visibility_ = visibility_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.modality_ = modality_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.isCompanion_ = isCompanion_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.isInner_ = isInner_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.isData_ = isData_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000100;
        }
        result.isExternal_ = isExternal_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000200;
        }
        result.isInline_ = isInline_;
        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
          to_bitField0_ |= 0x00000400;
        }
        result.thisReceiver_ = thisReceiver_;
        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
          to_bitField0_ |= 0x00000800;
        }
        result.typeParameters_ = typeParameters_;
        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
          to_bitField0_ |= 0x00001000;
        }
        result.declarationContainer_ = declarationContainer_;
        if (((bitField0_ & 0x00002000) == 0x00002000)) {
          superType_ = java.util.Collections.unmodifiableList(superType_);
          bitField0_ = (bitField0_ & ~0x00002000);
        }
        result.superType_ = superType_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass.getDefaultInstance()) return this;
        if (other.hasBase()) {
          mergeBase(other.getBase());
        }
        if (other.hasName()) {
          mergeName(other.getName());
        }
        if (other.hasKind()) {
          setKind(other.getKind());
        }
        if (other.hasVisibility()) {
          mergeVisibility(other.getVisibility());
        }
        if (other.hasModality()) {
          setModality(other.getModality());
        }
        if (other.hasIsCompanion()) {
          setIsCompanion(other.getIsCompanion());
        }
        if (other.hasIsInner()) {
          setIsInner(other.getIsInner());
        }
        if (other.hasIsData()) {
          setIsData(other.getIsData());
        }
        if (other.hasIsExternal()) {
          setIsExternal(other.getIsExternal());
        }
        if (other.hasIsInline()) {
          setIsInline(other.getIsInline());
        }
        if (other.hasThisReceiver()) {
          mergeThisReceiver(other.getThisReceiver());
        }
        if (other.hasTypeParameters()) {
          mergeTypeParameters(other.getTypeParameters());
        }
        if (other.hasDeclarationContainer()) {
          mergeDeclarationContainer(other.getDeclarationContainer());
        }
        if (!other.superType_.isEmpty()) {
          if (superType_.isEmpty()) {
            superType_ = other.superType_;
            bitField0_ = (bitField0_ & ~0x00002000);
          } else {
            ensureSuperTypeIsMutable();
            superType_.addAll(other.superType_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasBase()) {
          
          return false;
        }
        if (!hasName()) {
          
          return false;
        }
        if (!hasKind()) {
          
          return false;
        }
        if (!hasVisibility()) {
          
          return false;
        }
        if (!hasModality()) {
          
          return false;
        }
        if (!hasIsCompanion()) {
          
          return false;
        }
        if (!hasIsInner()) {
          
          return false;
        }
        if (!hasIsData()) {
          
          return false;
        }
        if (!hasIsExternal()) {
          
          return false;
        }
        if (!hasIsInline()) {
          
          return false;
        }
        if (!hasTypeParameters()) {
          
          return false;
        }
        if (!hasDeclarationContainer()) {
          
          return false;
        }
        if (!getBase().isInitialized()) {
          
          return false;
        }
        if (!getName().isInitialized()) {
          
          return false;
        }
        if (!getVisibility().isInitialized()) {
          
          return false;
        }
        if (hasThisReceiver()) {
          if (!getThisReceiver().isInitialized()) {
            
            return false;
          }
        }
        if (!getTypeParameters().isInitialized()) {
          
          return false;
        }
        if (!getDeclarationContainer().isInitialized()) {
          
          return false;
        }
        for (int i = 0; i < getSuperTypeCount(); i++) {
          if (!getSuperType(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.common.serialization.KotlinIr.IrClass parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public boolean hasBase() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase() {
        return base_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder setBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase value) {
        if (value == null) {
          throw new NullPointerException();
        }
        base_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder setBase(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.Builder builderForValue) {
        base_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder mergeBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            base_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance()) {
          base_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.newBuilder(base_).mergeFrom(value).buildPartial();
        } else {
          base_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder clearBase() {
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
        return name_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder setName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        name_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder setName(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        name_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder mergeName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            name_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          name_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(name_).mergeFrom(value).buildPartial();
        } else {
          name_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 2;</code>
       */
      public Builder clearName() {
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ClassKind kind_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ClassKind.CLASS;
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.ClassKind kind = 3;</code>
       */
      public boolean hasKind() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.ClassKind kind = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ClassKind getKind() {
        return kind_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.ClassKind kind = 3;</code>
       */
      public Builder setKind(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ClassKind value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        kind_ = value;
        
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.ClassKind kind = 3;</code>
       */
      public Builder clearKind() {
        bitField0_ = (bitField0_ & ~0x00000004);
        kind_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ClassKind.CLASS;
        
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility visibility_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 4;</code>
       */
      public boolean hasVisibility() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 4;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility getVisibility() {
        return visibility_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 4;</code>
       */
      public Builder setVisibility(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility value) {
        if (value == null) {
          throw new NullPointerException();
        }
        visibility_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 4;</code>
       */
      public Builder setVisibility(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.Builder builderForValue) {
        visibility_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 4;</code>
       */
      public Builder mergeVisibility(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            visibility_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance()) {
          visibility_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.newBuilder(visibility_).mergeFrom(value).buildPartial();
        } else {
          visibility_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Visibility visibility = 4;</code>
       */
      public Builder clearVisibility() {
        visibility_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Visibility.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind modality_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind.FINAL_MODALITY;
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 5;</code>
       */
      public boolean hasModality() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 5;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind getModality() {
        return modality_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 5;</code>
       */
      public Builder setModality(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000010;
        modality_ = value;
        
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.ModalityKind modality = 5;</code>
       */
      public Builder clearModality() {
        bitField0_ = (bitField0_ & ~0x00000010);
        modality_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.ModalityKind.FINAL_MODALITY;
        
        return this;
      }

      private boolean isCompanion_ ;
      /**
       * <code>required bool is_companion = 6;</code>
       *
       * <pre>
       * TODO: consider using flags for the booleans.
       * </pre>
       */
      public boolean hasIsCompanion() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>required bool is_companion = 6;</code>
       *
       * <pre>
       * TODO: consider using flags for the booleans.
       * </pre>
       */
      public boolean getIsCompanion() {
        return isCompanion_;
      }
      /**
       * <code>required bool is_companion = 6;</code>
       *
       * <pre>
       * TODO: consider using flags for the booleans.
       * </pre>
       */
      public Builder setIsCompanion(boolean value) {
        bitField0_ |= 0x00000020;
        isCompanion_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_companion = 6;</code>
       *
       * <pre>
       * TODO: consider using flags for the booleans.
       * </pre>
       */
      public Builder clearIsCompanion() {
        bitField0_ = (bitField0_ & ~0x00000020);
        isCompanion_ = false;
        
        return this;
      }

      private boolean isInner_ ;
      /**
       * <code>required bool is_inner = 7;</code>
       */
      public boolean hasIsInner() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>required bool is_inner = 7;</code>
       */
      public boolean getIsInner() {
        return isInner_;
      }
      /**
       * <code>required bool is_inner = 7;</code>
       */
      public Builder setIsInner(boolean value) {
        bitField0_ |= 0x00000040;
        isInner_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_inner = 7;</code>
       */
      public Builder clearIsInner() {
        bitField0_ = (bitField0_ & ~0x00000040);
        isInner_ = false;
        
        return this;
      }

      private boolean isData_ ;
      /**
       * <code>required bool is_data = 8;</code>
       */
      public boolean hasIsData() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>required bool is_data = 8;</code>
       */
      public boolean getIsData() {
        return isData_;
      }
      /**
       * <code>required bool is_data = 8;</code>
       */
      public Builder setIsData(boolean value) {
        bitField0_ |= 0x00000080;
        isData_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_data = 8;</code>
       */
      public Builder clearIsData() {
        bitField0_ = (bitField0_ & ~0x00000080);
        isData_ = false;
        
        return this;
      }

      private boolean isExternal_ ;
      /**
       * <code>required bool is_external = 9;</code>
       */
      public boolean hasIsExternal() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>required bool is_external = 9;</code>
       */
      public boolean getIsExternal() {
        return isExternal_;
      }
      /**
       * <code>required bool is_external = 9;</code>
       */
      public Builder setIsExternal(boolean value) {
        bitField0_ |= 0x00000100;
        isExternal_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_external = 9;</code>
       */
      public Builder clearIsExternal() {
        bitField0_ = (bitField0_ & ~0x00000100);
        isExternal_ = false;
        
        return this;
      }

      private boolean isInline_ ;
      /**
       * <code>required bool is_inline = 10;</code>
       */
      public boolean hasIsInline() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <code>required bool is_inline = 10;</code>
       */
      public boolean getIsInline() {
        return isInline_;
      }
      /**
       * <code>required bool is_inline = 10;</code>
       */
      public Builder setIsInline(boolean value) {
        bitField0_ |= 0x00000200;
        isInline_ = value;
        
        return this;
      }
      /**
       * <code>required bool is_inline = 10;</code>
       */
      public Builder clearIsInline() {
        bitField0_ = (bitField0_ & ~0x00000200);
        isInline_ = false;
        
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter thisReceiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter this_receiver = 11;</code>
       */
      public boolean hasThisReceiver() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter this_receiver = 11;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter getThisReceiver() {
        return thisReceiver_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter this_receiver = 11;</code>
       */
      public Builder setThisReceiver(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        thisReceiver_ = value;

        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter this_receiver = 11;</code>
       */
      public Builder setThisReceiver(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.Builder builderForValue) {
        thisReceiver_ = builderForValue.build();

        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter this_receiver = 11;</code>
       */
      public Builder mergeThisReceiver(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter value) {
        if (((bitField0_ & 0x00000400) == 0x00000400) &&
            thisReceiver_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.getDefaultInstance()) {
          thisReceiver_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.newBuilder(thisReceiver_).mergeFrom(value).buildPartial();
        } else {
          thisReceiver_ = value;
        }

        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter this_receiver = 11;</code>
       */
      public Builder clearThisReceiver() {
        thisReceiver_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000400);
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer typeParameters_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer type_parameters = 12;</code>
       */
      public boolean hasTypeParameters() {
        return ((bitField0_ & 0x00000800) == 0x00000800);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer type_parameters = 12;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer getTypeParameters() {
        return typeParameters_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer type_parameters = 12;</code>
       */
      public Builder setTypeParameters(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer value) {
        if (value == null) {
          throw new NullPointerException();
        }
        typeParameters_ = value;

        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer type_parameters = 12;</code>
       */
      public Builder setTypeParameters(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.Builder builderForValue) {
        typeParameters_ = builderForValue.build();

        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer type_parameters = 12;</code>
       */
      public Builder mergeTypeParameters(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer value) {
        if (((bitField0_ & 0x00000800) == 0x00000800) &&
            typeParameters_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.getDefaultInstance()) {
          typeParameters_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.newBuilder(typeParameters_).mergeFrom(value).buildPartial();
        } else {
          typeParameters_ = value;
        }

        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameterContainer type_parameters = 12;</code>
       */
      public Builder clearTypeParameters() {
        typeParameters_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameterContainer.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000800);
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer declarationContainer_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationContainer declaration_container = 13;</code>
       */
      public boolean hasDeclarationContainer() {
        return ((bitField0_ & 0x00001000) == 0x00001000);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationContainer declaration_container = 13;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer getDeclarationContainer() {
        return declarationContainer_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationContainer declaration_container = 13;</code>
       */
      public Builder setDeclarationContainer(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer value) {
        if (value == null) {
          throw new NullPointerException();
        }
        declarationContainer_ = value;

        bitField0_ |= 0x00001000;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationContainer declaration_container = 13;</code>
       */
      public Builder setDeclarationContainer(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer.Builder builderForValue) {
        declarationContainer_ = builderForValue.build();

        bitField0_ |= 0x00001000;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationContainer declaration_container = 13;</code>
       */
      public Builder mergeDeclarationContainer(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer value) {
        if (((bitField0_ & 0x00001000) == 0x00001000) &&
            declarationContainer_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer.getDefaultInstance()) {
          declarationContainer_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer.newBuilder(declarationContainer_).mergeFrom(value).buildPartial();
        } else {
          declarationContainer_ = value;
        }

        bitField0_ |= 0x00001000;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationContainer declaration_container = 13;</code>
       */
      public Builder clearDeclarationContainer() {
        declarationContainer_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationContainer.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00001000);
        return this;
      }

      private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex> superType_ =
        java.util.Collections.emptyList();
      private void ensureSuperTypeIsMutable() {
        if (!((bitField0_ & 0x00002000) == 0x00002000)) {
          superType_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex>(superType_);
          bitField0_ |= 0x00002000;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 14;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex> getSuperTypeList() {
        return java.util.Collections.unmodifiableList(superType_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 14;</code>
       */
      public int getSuperTypeCount() {
        return superType_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 14;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex getSuperType(int index) {
        return superType_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 14;</code>
       */
      public Builder setSuperType(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSuperTypeIsMutable();
        superType_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 14;</code>
       */
      public Builder setSuperType(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder builderForValue) {
        ensureSuperTypeIsMutable();
        superType_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 14;</code>
       */
      public Builder addSuperType(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSuperTypeIsMutable();
        superType_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 14;</code>
       */
      public Builder addSuperType(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSuperTypeIsMutable();
        superType_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 14;</code>
       */
      public Builder addSuperType(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder builderForValue) {
        ensureSuperTypeIsMutable();
        superType_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 14;</code>
       */
      public Builder addSuperType(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex.Builder builderForValue) {
        ensureSuperTypeIsMutable();
        superType_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 14;</code>
       */
      public Builder addAllSuperType(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeIndex> values) {
        ensureSuperTypeIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, superType_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 14;</code>
       */
      public Builder clearSuperType() {
        superType_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00002000);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrTypeIndex super_type = 14;</code>
       */
      public Builder removeSuperType(int index) {
        ensureSuperTypeIsMutable();
        superType_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrClass)
    }

    static {
      defaultInstance = new IrClass(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrClass)
  }

  public interface IrEnumEntryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrEnumEntry)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    boolean hasBase();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 2;</code>
     */
    boolean hasInitializer();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getInitializer();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClass corresponding_class = 3;</code>
     */
    boolean hasCorrespondingClass();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClass corresponding_class = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass getCorrespondingClass();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 4;</code>
     */
    boolean hasName();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 4;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrEnumEntry}
   */
  public static final class IrEnumEntry extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrEnumEntry)
      IrEnumEntryOrBuilder {
    // Use IrEnumEntry.newBuilder() to construct.
    private IrEnumEntry(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrEnumEntry(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

    private static final IrEnumEntry defaultInstance;
    public static IrEnumEntry getDefaultInstance() {
      return defaultInstance;
    }

    public IrEnumEntry getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrEnumEntry(
        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);
      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.KotlinIr.IrDeclarationBase.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = base_.toBuilder();
              }
              base_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(base_);
                base_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = initializer_.toBuilder();
              }
              initializer_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(initializer_);
                initializer_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = correspondingClass_.toBuilder();
              }
              correspondingClass_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(correspondingClass_);
                correspondingClass_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 34: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = name_.toBuilder();
              }
              name_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(name_);
                name_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              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<IrEnumEntry> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrEnumEntry>() {
      public IrEnumEntry parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrEnumEntry(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<IrEnumEntry> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int BASE_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase base_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    public boolean hasBase() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase() {
      return base_;
    }

    public static final int INITIALIZER_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression initializer_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 2;</code>
     */
    public boolean hasInitializer() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getInitializer() {
      return initializer_;
    }

    public static final int CORRESPONDING_CLASS_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass correspondingClass_;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClass corresponding_class = 3;</code>
     */
    public boolean hasCorrespondingClass() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClass corresponding_class = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass getCorrespondingClass() {
      return correspondingClass_;
    }

    public static final int NAME_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 4;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 4;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
      return name_;
    }

    private void initFields() {
      base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      initializer_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      correspondingClass_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass.getDefaultInstance();
      name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasBase()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getBase().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasInitializer()) {
        if (!getInitializer().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasCorrespondingClass()) {
        if (!getCorrespondingClass().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!getName().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, initializer_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, correspondingClass_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, name_);
      }
      output.writeRawBytes(unknownFields);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, initializer_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, correspondingClass_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, name_);
      }
      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.common.serialization.KotlinIr.IrEnumEntry parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry 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.common.serialization.KotlinIr.IrEnumEntry parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry 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.common.serialization.KotlinIr.IrEnumEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry 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.common.serialization.KotlinIr.IrEnumEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry 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.common.serialization.KotlinIr.IrEnumEntry parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry 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.common.serialization.KotlinIr.IrEnumEntry prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrEnumEntry}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.backend.common.serialization.IrEnumEntry)
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntryOrBuilder {
      // Construct using org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        initializer_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        correspondingClass_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.base_ = base_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.initializer_ = initializer_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.correspondingClass_ = correspondingClass_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.name_ = name_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry.getDefaultInstance()) return this;
        if (other.hasBase()) {
          mergeBase(other.getBase());
        }
        if (other.hasInitializer()) {
          mergeInitializer(other.getInitializer());
        }
        if (other.hasCorrespondingClass()) {
          mergeCorrespondingClass(other.getCorrespondingClass());
        }
        if (other.hasName()) {
          mergeName(other.getName());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasBase()) {
          
          return false;
        }
        if (!hasName()) {
          
          return false;
        }
        if (!getBase().isInitialized()) {
          
          return false;
        }
        if (hasInitializer()) {
          if (!getInitializer().isInitialized()) {
            
            return false;
          }
        }
        if (hasCorrespondingClass()) {
          if (!getCorrespondingClass().isInitialized()) {
            
            return false;
          }
        }
        if (!getName().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.common.serialization.KotlinIr.IrEnumEntry parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public boolean hasBase() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase() {
        return base_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder setBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase value) {
        if (value == null) {
          throw new NullPointerException();
        }
        base_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder setBase(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.Builder builderForValue) {
        base_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder mergeBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            base_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance()) {
          base_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.newBuilder(base_).mergeFrom(value).buildPartial();
        } else {
          base_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder clearBase() {
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression initializer_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 2;</code>
       */
      public boolean hasInitializer() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getInitializer() {
        return initializer_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 2;</code>
       */
      public Builder setInitializer(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        initializer_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 2;</code>
       */
      public Builder setInitializer(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        initializer_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 2;</code>
       */
      public Builder mergeInitializer(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            initializer_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          initializer_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(initializer_).mergeFrom(value).buildPartial();
        } else {
          initializer_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression initializer = 2;</code>
       */
      public Builder clearInitializer() {
        initializer_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass correspondingClass_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClass corresponding_class = 3;</code>
       */
      public boolean hasCorrespondingClass() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClass corresponding_class = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass getCorrespondingClass() {
        return correspondingClass_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClass corresponding_class = 3;</code>
       */
      public Builder setCorrespondingClass(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass value) {
        if (value == null) {
          throw new NullPointerException();
        }
        correspondingClass_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClass corresponding_class = 3;</code>
       */
      public Builder setCorrespondingClass(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass.Builder builderForValue) {
        correspondingClass_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClass corresponding_class = 3;</code>
       */
      public Builder mergeCorrespondingClass(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            correspondingClass_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass.getDefaultInstance()) {
          correspondingClass_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass.newBuilder(correspondingClass_).mergeFrom(value).buildPartial();
        } else {
          correspondingClass_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClass corresponding_class = 3;</code>
       */
      public Builder clearCorrespondingClass() {
        correspondingClass_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 4;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 4;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String getName() {
        return name_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 4;</code>
       */
      public Builder setName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        name_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 4;</code>
       */
      public Builder setName(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.Builder builderForValue) {
        name_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 4;</code>
       */
      public Builder mergeName(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            name_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance()) {
          name_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.newBuilder(name_).mergeFrom(value).buildPartial();
        } else {
          name_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.String name = 4;</code>
       */
      public Builder clearName() {
        name_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.String.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrEnumEntry)
    }

    static {
      defaultInstance = new IrEnumEntry(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrEnumEntry)
  }

  public interface IrAnonymousInitOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrAnonymousInit)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    boolean hasBase();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrStatement body = 2;</code>
     */
    boolean hasBody();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrStatement body = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getBody();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrAnonymousInit}
   */
  public static final class IrAnonymousInit extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrAnonymousInit)
      IrAnonymousInitOrBuilder {
    // Use IrAnonymousInit.newBuilder() to construct.
    private IrAnonymousInit(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrAnonymousInit(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

    private static final IrAnonymousInit defaultInstance;
    public static IrAnonymousInit getDefaultInstance() {
      return defaultInstance;
    }

    public IrAnonymousInit getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrAnonymousInit(
        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);
      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.KotlinIr.IrDeclarationBase.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = base_.toBuilder();
              }
              base_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(base_);
                base_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = body_.toBuilder();
              }
              body_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(body_);
                body_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrAnonymousInit> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrAnonymousInit>() {
      public IrAnonymousInit parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrAnonymousInit(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<IrAnonymousInit> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int BASE_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase base_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    public boolean hasBase() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase() {
      return base_;
    }

    public static final int BODY_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement body_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrStatement body = 2;</code>
     */
    public boolean hasBody() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrStatement body = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getBody() {
      return body_;
    }

    private void initFields() {
      base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      body_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasBase()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasBody()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getBase().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getBody().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, body_);
      }
      output.writeRawBytes(unknownFields);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, base_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, body_);
      }
      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.common.serialization.KotlinIr.IrAnonymousInit parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit 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.common.serialization.KotlinIr.IrAnonymousInit parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit 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.common.serialization.KotlinIr.IrAnonymousInit parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit 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.common.serialization.KotlinIr.IrAnonymousInit parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit 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.common.serialization.KotlinIr.IrAnonymousInit parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit 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.common.serialization.KotlinIr.IrAnonymousInit prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrAnonymousInit}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.backend.common.serialization.IrAnonymousInit)
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInitOrBuilder {
      // Construct using org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        body_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.base_ = base_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.body_ = body_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit.getDefaultInstance()) return this;
        if (other.hasBase()) {
          mergeBase(other.getBase());
        }
        if (other.hasBody()) {
          mergeBody(other.getBody());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasBase()) {
          
          return false;
        }
        if (!hasBody()) {
          
          return false;
        }
        if (!getBase().isInitialized()) {
          
          return false;
        }
        if (!getBody().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.common.serialization.KotlinIr.IrAnonymousInit parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public boolean hasBase() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase getBase() {
        return base_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder setBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase value) {
        if (value == null) {
          throw new NullPointerException();
        }
        base_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder setBase(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.Builder builderForValue) {
        base_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder mergeBase(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            base_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance()) {
          base_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.newBuilder(base_).mergeFrom(value).buildPartial();
        } else {
          base_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrDeclarationBase base = 1;</code>
       */
      public Builder clearBase() {
        base_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationBase.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement body_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrStatement body = 2;</code>
       */
      public boolean hasBody() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrStatement body = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getBody() {
        return body_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrStatement body = 2;</code>
       */
      public Builder setBody(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        body_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrStatement body = 2;</code>
       */
      public Builder setBody(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.Builder builderForValue) {
        body_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrStatement body = 2;</code>
       */
      public Builder mergeBody(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            body_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.getDefaultInstance()) {
          body_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.newBuilder(body_).mergeFrom(value).buildPartial();
        } else {
          body_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrStatement body = 2;</code>
       */
      public Builder clearBody() {
        body_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrAnonymousInit)
    }

    static {
      defaultInstance = new IrAnonymousInit(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrAnonymousInit)
  }

  public interface IrDeclarationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrDeclaration)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrAnonymousInit ir_anonymous_init = 1;</code>
     */
    boolean hasIrAnonymousInit();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrAnonymousInit ir_anonymous_init = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit getIrAnonymousInit();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClass ir_class = 2;</code>
     */
    boolean hasIrClass();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClass ir_class = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass getIrClass();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConstructor ir_constructor = 3;</code>
     */
    boolean hasIrConstructor();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConstructor ir_constructor = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor getIrConstructor();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrEnumEntry ir_enum_entry = 4;</code>
     */
    boolean hasIrEnumEntry();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrEnumEntry ir_enum_entry = 4;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry getIrEnumEntry();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrField ir_field = 5;</code>
     */
    boolean hasIrField();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrField ir_field = 5;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField getIrField();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction ir_function = 6;</code>
     */
    boolean hasIrFunction();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction ir_function = 6;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction getIrFunction();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrProperty ir_property = 7;</code>
     */
    boolean hasIrProperty();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrProperty ir_property = 7;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty getIrProperty();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter ir_type_parameter = 8;</code>
     */
    boolean hasIrTypeParameter();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter ir_type_parameter = 8;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter getIrTypeParameter();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrVariable ir_variable = 9;</code>
     */
    boolean hasIrVariable();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrVariable ir_variable = 9;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable getIrVariable();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter ir_value_parameter = 10;</code>
     */
    boolean hasIrValueParameter();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter ir_value_parameter = 10;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter getIrValueParameter();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedProperty ir_local_delegated_property = 11;</code>
     */
    boolean hasIrLocalDelegatedProperty();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedProperty ir_local_delegated_property = 11;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty getIrLocalDelegatedProperty();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrDeclaration}
   */
  public static final class IrDeclaration extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrDeclaration)
      IrDeclarationOrBuilder {
    // Use IrDeclaration.newBuilder() to construct.
    private IrDeclaration(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrDeclaration(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

    private static final IrDeclaration defaultInstance;
    public static IrDeclaration getDefaultInstance() {
      return defaultInstance;
    }

    public IrDeclaration getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrDeclaration(
        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);
      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.KotlinIr.IrAnonymousInit.Builder subBuilder = null;
              if (declaratorCase_ == 1) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit) declarator_).toBuilder();
              }
              declarator_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit) declarator_);
                declarator_ = subBuilder.buildPartial();
              }
              declaratorCase_ = 1;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass.Builder subBuilder = null;
              if (declaratorCase_ == 2) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass) declarator_).toBuilder();
              }
              declarator_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass) declarator_);
                declarator_ = subBuilder.buildPartial();
              }
              declaratorCase_ = 2;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor.Builder subBuilder = null;
              if (declaratorCase_ == 3) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor) declarator_).toBuilder();
              }
              declarator_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor) declarator_);
                declarator_ = subBuilder.buildPartial();
              }
              declaratorCase_ = 3;
              break;
            }
            case 34: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry.Builder subBuilder = null;
              if (declaratorCase_ == 4) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry) declarator_).toBuilder();
              }
              declarator_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry) declarator_);
                declarator_ = subBuilder.buildPartial();
              }
              declaratorCase_ = 4;
              break;
            }
            case 42: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField.Builder subBuilder = null;
              if (declaratorCase_ == 5) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField) declarator_).toBuilder();
              }
              declarator_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField) declarator_);
                declarator_ = subBuilder.buildPartial();
              }
              declaratorCase_ = 5;
              break;
            }
            case 50: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.Builder subBuilder = null;
              if (declaratorCase_ == 6) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction) declarator_).toBuilder();
              }
              declarator_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction) declarator_);
                declarator_ = subBuilder.buildPartial();
              }
              declaratorCase_ = 6;
              break;
            }
            case 58: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty.Builder subBuilder = null;
              if (declaratorCase_ == 7) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty) declarator_).toBuilder();
              }
              declarator_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty) declarator_);
                declarator_ = subBuilder.buildPartial();
              }
              declaratorCase_ = 7;
              break;
            }
            case 66: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter.Builder subBuilder = null;
              if (declaratorCase_ == 8) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter) declarator_).toBuilder();
              }
              declarator_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter) declarator_);
                declarator_ = subBuilder.buildPartial();
              }
              declaratorCase_ = 8;
              break;
            }
            case 74: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.Builder subBuilder = null;
              if (declaratorCase_ == 9) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable) declarator_).toBuilder();
              }
              declarator_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable) declarator_);
                declarator_ = subBuilder.buildPartial();
              }
              declaratorCase_ = 9;
              break;
            }
            case 82: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.Builder subBuilder = null;
              if (declaratorCase_ == 10) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter) declarator_).toBuilder();
              }
              declarator_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter) declarator_);
                declarator_ = subBuilder.buildPartial();
              }
              declaratorCase_ = 10;
              break;
            }
            case 90: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty.Builder subBuilder = null;
              if (declaratorCase_ == 11) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty) declarator_).toBuilder();
              }
              declarator_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty) declarator_);
                declarator_ = subBuilder.buildPartial();
              }
              declaratorCase_ = 11;
              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<IrDeclaration> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrDeclaration>() {
      public IrDeclaration parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrDeclaration(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<IrDeclaration> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    private int declaratorCase_ = 0;
    private java.lang.Object declarator_;
    public enum DeclaratorCase
        implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
      IR_ANONYMOUS_INIT(1),
      IR_CLASS(2),
      IR_CONSTRUCTOR(3),
      IR_ENUM_ENTRY(4),
      IR_FIELD(5),
      IR_FUNCTION(6),
      IR_PROPERTY(7),
      IR_TYPE_PARAMETER(8),
      IR_VARIABLE(9),
      IR_VALUE_PARAMETER(10),
      IR_LOCAL_DELEGATED_PROPERTY(11),
      DECLARATOR_NOT_SET(0);
      private int value = 0;
      private DeclaratorCase(int value) {
        this.value = value;
      }
      public static DeclaratorCase valueOf(int value) {
        switch (value) {
          case 1: return IR_ANONYMOUS_INIT;
          case 2: return IR_CLASS;
          case 3: return IR_CONSTRUCTOR;
          case 4: return IR_ENUM_ENTRY;
          case 5: return IR_FIELD;
          case 6: return IR_FUNCTION;
          case 7: return IR_PROPERTY;
          case 8: return IR_TYPE_PARAMETER;
          case 9: return IR_VARIABLE;
          case 10: return IR_VALUE_PARAMETER;
          case 11: return IR_LOCAL_DELEGATED_PROPERTY;
          case 0: return DECLARATOR_NOT_SET;
          default: throw new java.lang.IllegalArgumentException(
            "Value is undefined for this oneof enum.");
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public DeclaratorCase
    getDeclaratorCase() {
      return DeclaratorCase.valueOf(
          declaratorCase_);
    }

    public static final int IR_ANONYMOUS_INIT_FIELD_NUMBER = 1;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrAnonymousInit ir_anonymous_init = 1;</code>
     */
    public boolean hasIrAnonymousInit() {
      return declaratorCase_ == 1;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrAnonymousInit ir_anonymous_init = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit getIrAnonymousInit() {
      if (declaratorCase_ == 1) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit) declarator_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit.getDefaultInstance();
    }

    public static final int IR_CLASS_FIELD_NUMBER = 2;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClass ir_class = 2;</code>
     */
    public boolean hasIrClass() {
      return declaratorCase_ == 2;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClass ir_class = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass getIrClass() {
      if (declaratorCase_ == 2) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass) declarator_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass.getDefaultInstance();
    }

    public static final int IR_CONSTRUCTOR_FIELD_NUMBER = 3;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConstructor ir_constructor = 3;</code>
     */
    public boolean hasIrConstructor() {
      return declaratorCase_ == 3;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConstructor ir_constructor = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor getIrConstructor() {
      if (declaratorCase_ == 3) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor) declarator_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor.getDefaultInstance();
    }

    public static final int IR_ENUM_ENTRY_FIELD_NUMBER = 4;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrEnumEntry ir_enum_entry = 4;</code>
     */
    public boolean hasIrEnumEntry() {
      return declaratorCase_ == 4;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrEnumEntry ir_enum_entry = 4;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry getIrEnumEntry() {
      if (declaratorCase_ == 4) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry) declarator_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry.getDefaultInstance();
    }

    public static final int IR_FIELD_FIELD_NUMBER = 5;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrField ir_field = 5;</code>
     */
    public boolean hasIrField() {
      return declaratorCase_ == 5;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrField ir_field = 5;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField getIrField() {
      if (declaratorCase_ == 5) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField) declarator_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField.getDefaultInstance();
    }

    public static final int IR_FUNCTION_FIELD_NUMBER = 6;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction ir_function = 6;</code>
     */
    public boolean hasIrFunction() {
      return declaratorCase_ == 6;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction ir_function = 6;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction getIrFunction() {
      if (declaratorCase_ == 6) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction) declarator_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance();
    }

    public static final int IR_PROPERTY_FIELD_NUMBER = 7;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrProperty ir_property = 7;</code>
     */
    public boolean hasIrProperty() {
      return declaratorCase_ == 7;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrProperty ir_property = 7;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty getIrProperty() {
      if (declaratorCase_ == 7) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty) declarator_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty.getDefaultInstance();
    }

    public static final int IR_TYPE_PARAMETER_FIELD_NUMBER = 8;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter ir_type_parameter = 8;</code>
     */
    public boolean hasIrTypeParameter() {
      return declaratorCase_ == 8;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter ir_type_parameter = 8;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter getIrTypeParameter() {
      if (declaratorCase_ == 8) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter) declarator_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter.getDefaultInstance();
    }

    public static final int IR_VARIABLE_FIELD_NUMBER = 9;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrVariable ir_variable = 9;</code>
     */
    public boolean hasIrVariable() {
      return declaratorCase_ == 9;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrVariable ir_variable = 9;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable getIrVariable() {
      if (declaratorCase_ == 9) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable) declarator_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.getDefaultInstance();
    }

    public static final int IR_VALUE_PARAMETER_FIELD_NUMBER = 10;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter ir_value_parameter = 10;</code>
     */
    public boolean hasIrValueParameter() {
      return declaratorCase_ == 10;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter ir_value_parameter = 10;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter getIrValueParameter() {
      if (declaratorCase_ == 10) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter) declarator_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.getDefaultInstance();
    }

    public static final int IR_LOCAL_DELEGATED_PROPERTY_FIELD_NUMBER = 11;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedProperty ir_local_delegated_property = 11;</code>
     */
    public boolean hasIrLocalDelegatedProperty() {
      return declaratorCase_ == 11;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedProperty ir_local_delegated_property = 11;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty getIrLocalDelegatedProperty() {
      if (declaratorCase_ == 11) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty) declarator_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty.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 (hasIrAnonymousInit()) {
        if (!getIrAnonymousInit().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasIrClass()) {
        if (!getIrClass().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasIrConstructor()) {
        if (!getIrConstructor().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasIrEnumEntry()) {
        if (!getIrEnumEntry().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasIrField()) {
        if (!getIrField().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasIrFunction()) {
        if (!getIrFunction().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasIrProperty()) {
        if (!getIrProperty().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasIrTypeParameter()) {
        if (!getIrTypeParameter().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasIrVariable()) {
        if (!getIrVariable().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasIrValueParameter()) {
        if (!getIrValueParameter().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasIrLocalDelegatedProperty()) {
        if (!getIrLocalDelegatedProperty().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (declaratorCase_ == 1) {
        output.writeMessage(1, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit) declarator_);
      }
      if (declaratorCase_ == 2) {
        output.writeMessage(2, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass) declarator_);
      }
      if (declaratorCase_ == 3) {
        output.writeMessage(3, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor) declarator_);
      }
      if (declaratorCase_ == 4) {
        output.writeMessage(4, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry) declarator_);
      }
      if (declaratorCase_ == 5) {
        output.writeMessage(5, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField) declarator_);
      }
      if (declaratorCase_ == 6) {
        output.writeMessage(6, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction) declarator_);
      }
      if (declaratorCase_ == 7) {
        output.writeMessage(7, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty) declarator_);
      }
      if (declaratorCase_ == 8) {
        output.writeMessage(8, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter) declarator_);
      }
      if (declaratorCase_ == 9) {
        output.writeMessage(9, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable) declarator_);
      }
      if (declaratorCase_ == 10) {
        output.writeMessage(10, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter) declarator_);
      }
      if (declaratorCase_ == 11) {
        output.writeMessage(11, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty) declarator_);
      }
      output.writeRawBytes(unknownFields);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (declaratorCase_ == 1) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit) declarator_);
      }
      if (declaratorCase_ == 2) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass) declarator_);
      }
      if (declaratorCase_ == 3) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor) declarator_);
      }
      if (declaratorCase_ == 4) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry) declarator_);
      }
      if (declaratorCase_ == 5) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField) declarator_);
      }
      if (declaratorCase_ == 6) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(6, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction) declarator_);
      }
      if (declaratorCase_ == 7) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(7, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty) declarator_);
      }
      if (declaratorCase_ == 8) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(8, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter) declarator_);
      }
      if (declaratorCase_ == 9) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(9, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable) declarator_);
      }
      if (declaratorCase_ == 10) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(10, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter) declarator_);
      }
      if (declaratorCase_ == 11) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(11, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty) declarator_);
      }
      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.common.serialization.KotlinIr.IrDeclaration parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration 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.common.serialization.KotlinIr.IrDeclaration parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration 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.common.serialization.KotlinIr.IrDeclaration parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration 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.common.serialization.KotlinIr.IrDeclaration parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration 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.common.serialization.KotlinIr.IrDeclaration parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration 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.common.serialization.KotlinIr.IrDeclaration prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrDeclaration}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.backend.common.serialization.IrDeclaration)
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclarationOrBuilder {
      // Construct using org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        declaratorCase_ = 0;
        declarator_ = null;
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (declaratorCase_ == 1) {
          result.declarator_ = declarator_;
        }
        if (declaratorCase_ == 2) {
          result.declarator_ = declarator_;
        }
        if (declaratorCase_ == 3) {
          result.declarator_ = declarator_;
        }
        if (declaratorCase_ == 4) {
          result.declarator_ = declarator_;
        }
        if (declaratorCase_ == 5) {
          result.declarator_ = declarator_;
        }
        if (declaratorCase_ == 6) {
          result.declarator_ = declarator_;
        }
        if (declaratorCase_ == 7) {
          result.declarator_ = declarator_;
        }
        if (declaratorCase_ == 8) {
          result.declarator_ = declarator_;
        }
        if (declaratorCase_ == 9) {
          result.declarator_ = declarator_;
        }
        if (declaratorCase_ == 10) {
          result.declarator_ = declarator_;
        }
        if (declaratorCase_ == 11) {
          result.declarator_ = declarator_;
        }
        result.bitField0_ = to_bitField0_;
        result.declaratorCase_ = declaratorCase_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration.getDefaultInstance()) return this;
        switch (other.getDeclaratorCase()) {
          case IR_ANONYMOUS_INIT: {
            mergeIrAnonymousInit(other.getIrAnonymousInit());
            break;
          }
          case IR_CLASS: {
            mergeIrClass(other.getIrClass());
            break;
          }
          case IR_CONSTRUCTOR: {
            mergeIrConstructor(other.getIrConstructor());
            break;
          }
          case IR_ENUM_ENTRY: {
            mergeIrEnumEntry(other.getIrEnumEntry());
            break;
          }
          case IR_FIELD: {
            mergeIrField(other.getIrField());
            break;
          }
          case IR_FUNCTION: {
            mergeIrFunction(other.getIrFunction());
            break;
          }
          case IR_PROPERTY: {
            mergeIrProperty(other.getIrProperty());
            break;
          }
          case IR_TYPE_PARAMETER: {
            mergeIrTypeParameter(other.getIrTypeParameter());
            break;
          }
          case IR_VARIABLE: {
            mergeIrVariable(other.getIrVariable());
            break;
          }
          case IR_VALUE_PARAMETER: {
            mergeIrValueParameter(other.getIrValueParameter());
            break;
          }
          case IR_LOCAL_DELEGATED_PROPERTY: {
            mergeIrLocalDelegatedProperty(other.getIrLocalDelegatedProperty());
            break;
          }
          case DECLARATOR_NOT_SET: {
            break;
          }
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (hasIrAnonymousInit()) {
          if (!getIrAnonymousInit().isInitialized()) {
            
            return false;
          }
        }
        if (hasIrClass()) {
          if (!getIrClass().isInitialized()) {
            
            return false;
          }
        }
        if (hasIrConstructor()) {
          if (!getIrConstructor().isInitialized()) {
            
            return false;
          }
        }
        if (hasIrEnumEntry()) {
          if (!getIrEnumEntry().isInitialized()) {
            
            return false;
          }
        }
        if (hasIrField()) {
          if (!getIrField().isInitialized()) {
            
            return false;
          }
        }
        if (hasIrFunction()) {
          if (!getIrFunction().isInitialized()) {
            
            return false;
          }
        }
        if (hasIrProperty()) {
          if (!getIrProperty().isInitialized()) {
            
            return false;
          }
        }
        if (hasIrTypeParameter()) {
          if (!getIrTypeParameter().isInitialized()) {
            
            return false;
          }
        }
        if (hasIrVariable()) {
          if (!getIrVariable().isInitialized()) {
            
            return false;
          }
        }
        if (hasIrValueParameter()) {
          if (!getIrValueParameter().isInitialized()) {
            
            return false;
          }
        }
        if (hasIrLocalDelegatedProperty()) {
          if (!getIrLocalDelegatedProperty().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.common.serialization.KotlinIr.IrDeclaration parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int declaratorCase_ = 0;
      private java.lang.Object declarator_;
      public DeclaratorCase
          getDeclaratorCase() {
        return DeclaratorCase.valueOf(
            declaratorCase_);
      }

      public Builder clearDeclarator() {
        declaratorCase_ = 0;
        declarator_ = null;
        return this;
      }

      private int bitField0_;

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrAnonymousInit ir_anonymous_init = 1;</code>
       */
      public boolean hasIrAnonymousInit() {
        return declaratorCase_ == 1;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrAnonymousInit ir_anonymous_init = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit getIrAnonymousInit() {
        if (declaratorCase_ == 1) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit) declarator_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrAnonymousInit ir_anonymous_init = 1;</code>
       */
      public Builder setIrAnonymousInit(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit value) {
        if (value == null) {
          throw new NullPointerException();
        }
        declarator_ = value;

        declaratorCase_ = 1;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrAnonymousInit ir_anonymous_init = 1;</code>
       */
      public Builder setIrAnonymousInit(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit.Builder builderForValue) {
        declarator_ = builderForValue.build();

        declaratorCase_ = 1;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrAnonymousInit ir_anonymous_init = 1;</code>
       */
      public Builder mergeIrAnonymousInit(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit value) {
        if (declaratorCase_ == 1 &&
            declarator_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit.getDefaultInstance()) {
          declarator_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrAnonymousInit) declarator_)
              .mergeFrom(value).buildPartial();
        } else {
          declarator_ = value;
        }

        declaratorCase_ = 1;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrAnonymousInit ir_anonymous_init = 1;</code>
       */
      public Builder clearIrAnonymousInit() {
        if (declaratorCase_ == 1) {
          declaratorCase_ = 0;
          declarator_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClass ir_class = 2;</code>
       */
      public boolean hasIrClass() {
        return declaratorCase_ == 2;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClass ir_class = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass getIrClass() {
        if (declaratorCase_ == 2) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass) declarator_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClass ir_class = 2;</code>
       */
      public Builder setIrClass(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass value) {
        if (value == null) {
          throw new NullPointerException();
        }
        declarator_ = value;

        declaratorCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClass ir_class = 2;</code>
       */
      public Builder setIrClass(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass.Builder builderForValue) {
        declarator_ = builderForValue.build();

        declaratorCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClass ir_class = 2;</code>
       */
      public Builder mergeIrClass(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass value) {
        if (declaratorCase_ == 2 &&
            declarator_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass.getDefaultInstance()) {
          declarator_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrClass) declarator_)
              .mergeFrom(value).buildPartial();
        } else {
          declarator_ = value;
        }

        declaratorCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrClass ir_class = 2;</code>
       */
      public Builder clearIrClass() {
        if (declaratorCase_ == 2) {
          declaratorCase_ = 0;
          declarator_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConstructor ir_constructor = 3;</code>
       */
      public boolean hasIrConstructor() {
        return declaratorCase_ == 3;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConstructor ir_constructor = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor getIrConstructor() {
        if (declaratorCase_ == 3) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor) declarator_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConstructor ir_constructor = 3;</code>
       */
      public Builder setIrConstructor(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor value) {
        if (value == null) {
          throw new NullPointerException();
        }
        declarator_ = value;

        declaratorCase_ = 3;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConstructor ir_constructor = 3;</code>
       */
      public Builder setIrConstructor(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor.Builder builderForValue) {
        declarator_ = builderForValue.build();

        declaratorCase_ = 3;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConstructor ir_constructor = 3;</code>
       */
      public Builder mergeIrConstructor(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor value) {
        if (declaratorCase_ == 3 &&
            declarator_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor.getDefaultInstance()) {
          declarator_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrConstructor) declarator_)
              .mergeFrom(value).buildPartial();
        } else {
          declarator_ = value;
        }

        declaratorCase_ = 3;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrConstructor ir_constructor = 3;</code>
       */
      public Builder clearIrConstructor() {
        if (declaratorCase_ == 3) {
          declaratorCase_ = 0;
          declarator_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrEnumEntry ir_enum_entry = 4;</code>
       */
      public boolean hasIrEnumEntry() {
        return declaratorCase_ == 4;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrEnumEntry ir_enum_entry = 4;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry getIrEnumEntry() {
        if (declaratorCase_ == 4) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry) declarator_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrEnumEntry ir_enum_entry = 4;</code>
       */
      public Builder setIrEnumEntry(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry value) {
        if (value == null) {
          throw new NullPointerException();
        }
        declarator_ = value;

        declaratorCase_ = 4;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrEnumEntry ir_enum_entry = 4;</code>
       */
      public Builder setIrEnumEntry(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry.Builder builderForValue) {
        declarator_ = builderForValue.build();

        declaratorCase_ = 4;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrEnumEntry ir_enum_entry = 4;</code>
       */
      public Builder mergeIrEnumEntry(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry value) {
        if (declaratorCase_ == 4 &&
            declarator_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry.getDefaultInstance()) {
          declarator_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrEnumEntry) declarator_)
              .mergeFrom(value).buildPartial();
        } else {
          declarator_ = value;
        }

        declaratorCase_ = 4;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrEnumEntry ir_enum_entry = 4;</code>
       */
      public Builder clearIrEnumEntry() {
        if (declaratorCase_ == 4) {
          declaratorCase_ = 0;
          declarator_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrField ir_field = 5;</code>
       */
      public boolean hasIrField() {
        return declaratorCase_ == 5;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrField ir_field = 5;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField getIrField() {
        if (declaratorCase_ == 5) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField) declarator_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrField ir_field = 5;</code>
       */
      public Builder setIrField(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField value) {
        if (value == null) {
          throw new NullPointerException();
        }
        declarator_ = value;

        declaratorCase_ = 5;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrField ir_field = 5;</code>
       */
      public Builder setIrField(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField.Builder builderForValue) {
        declarator_ = builderForValue.build();

        declaratorCase_ = 5;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrField ir_field = 5;</code>
       */
      public Builder mergeIrField(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField value) {
        if (declaratorCase_ == 5 &&
            declarator_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField.getDefaultInstance()) {
          declarator_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrField) declarator_)
              .mergeFrom(value).buildPartial();
        } else {
          declarator_ = value;
        }

        declaratorCase_ = 5;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrField ir_field = 5;</code>
       */
      public Builder clearIrField() {
        if (declaratorCase_ == 5) {
          declaratorCase_ = 0;
          declarator_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction ir_function = 6;</code>
       */
      public boolean hasIrFunction() {
        return declaratorCase_ == 6;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction ir_function = 6;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction getIrFunction() {
        if (declaratorCase_ == 6) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction) declarator_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction ir_function = 6;</code>
       */
      public Builder setIrFunction(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction value) {
        if (value == null) {
          throw new NullPointerException();
        }
        declarator_ = value;

        declaratorCase_ = 6;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction ir_function = 6;</code>
       */
      public Builder setIrFunction(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.Builder builderForValue) {
        declarator_ = builderForValue.build();

        declaratorCase_ = 6;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction ir_function = 6;</code>
       */
      public Builder mergeIrFunction(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction value) {
        if (declaratorCase_ == 6 &&
            declarator_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.getDefaultInstance()) {
          declarator_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrFunction) declarator_)
              .mergeFrom(value).buildPartial();
        } else {
          declarator_ = value;
        }

        declaratorCase_ = 6;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrFunction ir_function = 6;</code>
       */
      public Builder clearIrFunction() {
        if (declaratorCase_ == 6) {
          declaratorCase_ = 0;
          declarator_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrProperty ir_property = 7;</code>
       */
      public boolean hasIrProperty() {
        return declaratorCase_ == 7;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrProperty ir_property = 7;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty getIrProperty() {
        if (declaratorCase_ == 7) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty) declarator_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrProperty ir_property = 7;</code>
       */
      public Builder setIrProperty(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty value) {
        if (value == null) {
          throw new NullPointerException();
        }
        declarator_ = value;

        declaratorCase_ = 7;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrProperty ir_property = 7;</code>
       */
      public Builder setIrProperty(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty.Builder builderForValue) {
        declarator_ = builderForValue.build();

        declaratorCase_ = 7;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrProperty ir_property = 7;</code>
       */
      public Builder mergeIrProperty(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty value) {
        if (declaratorCase_ == 7 &&
            declarator_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty.getDefaultInstance()) {
          declarator_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrProperty) declarator_)
              .mergeFrom(value).buildPartial();
        } else {
          declarator_ = value;
        }

        declaratorCase_ = 7;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrProperty ir_property = 7;</code>
       */
      public Builder clearIrProperty() {
        if (declaratorCase_ == 7) {
          declaratorCase_ = 0;
          declarator_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter ir_type_parameter = 8;</code>
       */
      public boolean hasIrTypeParameter() {
        return declaratorCase_ == 8;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter ir_type_parameter = 8;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter getIrTypeParameter() {
        if (declaratorCase_ == 8) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter) declarator_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter ir_type_parameter = 8;</code>
       */
      public Builder setIrTypeParameter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        declarator_ = value;

        declaratorCase_ = 8;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter ir_type_parameter = 8;</code>
       */
      public Builder setIrTypeParameter(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter.Builder builderForValue) {
        declarator_ = builderForValue.build();

        declaratorCase_ = 8;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter ir_type_parameter = 8;</code>
       */
      public Builder mergeIrTypeParameter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter value) {
        if (declaratorCase_ == 8 &&
            declarator_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter.getDefaultInstance()) {
          declarator_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrTypeParameter) declarator_)
              .mergeFrom(value).buildPartial();
        } else {
          declarator_ = value;
        }

        declaratorCase_ = 8;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrTypeParameter ir_type_parameter = 8;</code>
       */
      public Builder clearIrTypeParameter() {
        if (declaratorCase_ == 8) {
          declaratorCase_ = 0;
          declarator_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrVariable ir_variable = 9;</code>
       */
      public boolean hasIrVariable() {
        return declaratorCase_ == 9;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrVariable ir_variable = 9;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable getIrVariable() {
        if (declaratorCase_ == 9) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable) declarator_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrVariable ir_variable = 9;</code>
       */
      public Builder setIrVariable(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        declarator_ = value;

        declaratorCase_ = 9;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrVariable ir_variable = 9;</code>
       */
      public Builder setIrVariable(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.Builder builderForValue) {
        declarator_ = builderForValue.build();

        declaratorCase_ = 9;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrVariable ir_variable = 9;</code>
       */
      public Builder mergeIrVariable(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable value) {
        if (declaratorCase_ == 9 &&
            declarator_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.getDefaultInstance()) {
          declarator_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable) declarator_)
              .mergeFrom(value).buildPartial();
        } else {
          declarator_ = value;
        }

        declaratorCase_ = 9;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrVariable ir_variable = 9;</code>
       */
      public Builder clearIrVariable() {
        if (declaratorCase_ == 9) {
          declaratorCase_ = 0;
          declarator_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter ir_value_parameter = 10;</code>
       */
      public boolean hasIrValueParameter() {
        return declaratorCase_ == 10;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter ir_value_parameter = 10;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter getIrValueParameter() {
        if (declaratorCase_ == 10) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter) declarator_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter ir_value_parameter = 10;</code>
       */
      public Builder setIrValueParameter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        declarator_ = value;

        declaratorCase_ = 10;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter ir_value_parameter = 10;</code>
       */
      public Builder setIrValueParameter(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.Builder builderForValue) {
        declarator_ = builderForValue.build();

        declaratorCase_ = 10;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter ir_value_parameter = 10;</code>
       */
      public Builder mergeIrValueParameter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter value) {
        if (declaratorCase_ == 10 &&
            declarator_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.getDefaultInstance()) {
          declarator_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrValueParameter) declarator_)
              .mergeFrom(value).buildPartial();
        } else {
          declarator_ = value;
        }

        declaratorCase_ = 10;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrValueParameter ir_value_parameter = 10;</code>
       */
      public Builder clearIrValueParameter() {
        if (declaratorCase_ == 10) {
          declaratorCase_ = 0;
          declarator_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedProperty ir_local_delegated_property = 11;</code>
       */
      public boolean hasIrLocalDelegatedProperty() {
        return declaratorCase_ == 11;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedProperty ir_local_delegated_property = 11;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty getIrLocalDelegatedProperty() {
        if (declaratorCase_ == 11) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty) declarator_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedProperty ir_local_delegated_property = 11;</code>
       */
      public Builder setIrLocalDelegatedProperty(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty value) {
        if (value == null) {
          throw new NullPointerException();
        }
        declarator_ = value;

        declaratorCase_ = 11;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedProperty ir_local_delegated_property = 11;</code>
       */
      public Builder setIrLocalDelegatedProperty(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty.Builder builderForValue) {
        declarator_ = builderForValue.build();

        declaratorCase_ = 11;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedProperty ir_local_delegated_property = 11;</code>
       */
      public Builder mergeIrLocalDelegatedProperty(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty value) {
        if (declaratorCase_ == 11 &&
            declarator_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty.getDefaultInstance()) {
          declarator_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrLocalDelegatedProperty) declarator_)
              .mergeFrom(value).buildPartial();
        } else {
          declarator_ = value;
        }

        declaratorCase_ = 11;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedProperty ir_local_delegated_property = 11;</code>
       */
      public Builder clearIrLocalDelegatedProperty() {
        if (declaratorCase_ == 11) {
          declaratorCase_ = 0;
          declarator_ = null;
          
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrDeclaration)
    }

    static {
      defaultInstance = new IrDeclaration(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrDeclaration)
  }

  public interface IrBranchOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrBranch)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression condition = 1;</code>
     */
    boolean hasCondition();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression condition = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getCondition();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 2;</code>
     */
    boolean hasResult();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getResult();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrBranch}
   */
  public static final class IrBranch extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrBranch)
      IrBranchOrBuilder {
    // Use IrBranch.newBuilder() to construct.
    private IrBranch(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrBranch(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

    private static final IrBranch defaultInstance;
    public static IrBranch getDefaultInstance() {
      return defaultInstance;
    }

    public IrBranch getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrBranch(
        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);
      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.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = condition_.toBuilder();
              }
              condition_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(condition_);
                condition_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = result_.toBuilder();
              }
              result_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(result_);
                result_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrBranch> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrBranch>() {
      public IrBranch parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrBranch(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<IrBranch> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int CONDITION_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression condition_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression condition = 1;</code>
     */
    public boolean hasCondition() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression condition = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getCondition() {
      return condition_;
    }

    public static final int RESULT_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression result_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 2;</code>
     */
    public boolean hasResult() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getResult() {
      return result_;
    }

    private void initFields() {
      condition_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      result_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasCondition()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasResult()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getCondition().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getResult().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, condition_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, result_);
      }
      output.writeRawBytes(unknownFields);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, condition_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, result_);
      }
      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.common.serialization.KotlinIr.IrBranch parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch 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.common.serialization.KotlinIr.IrBranch parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch 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.common.serialization.KotlinIr.IrBranch parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch 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.common.serialization.KotlinIr.IrBranch parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch 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.common.serialization.KotlinIr.IrBranch parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch 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.common.serialization.KotlinIr.IrBranch prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrBranch}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.backend.common.serialization.IrBranch)
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranchOrBuilder {
      // Construct using org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        condition_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        result_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.condition_ = condition_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.result_ = result_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch.getDefaultInstance()) return this;
        if (other.hasCondition()) {
          mergeCondition(other.getCondition());
        }
        if (other.hasResult()) {
          mergeResult(other.getResult());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasCondition()) {
          
          return false;
        }
        if (!hasResult()) {
          
          return false;
        }
        if (!getCondition().isInitialized()) {
          
          return false;
        }
        if (!getResult().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.common.serialization.KotlinIr.IrBranch parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression condition_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression condition = 1;</code>
       */
      public boolean hasCondition() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression condition = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getCondition() {
        return condition_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression condition = 1;</code>
       */
      public Builder setCondition(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        condition_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression condition = 1;</code>
       */
      public Builder setCondition(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        condition_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression condition = 1;</code>
       */
      public Builder mergeCondition(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            condition_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          condition_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(condition_).mergeFrom(value).buildPartial();
        } else {
          condition_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression condition = 1;</code>
       */
      public Builder clearCondition() {
        condition_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression result_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 2;</code>
       */
      public boolean hasResult() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getResult() {
        return result_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 2;</code>
       */
      public Builder setResult(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 2;</code>
       */
      public Builder setResult(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        result_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 2;</code>
       */
      public Builder mergeResult(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            result_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          result_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(result_).mergeFrom(value).buildPartial();
        } else {
          result_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 2;</code>
       */
      public Builder clearResult() {
        result_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrBranch)
    }

    static {
      defaultInstance = new IrBranch(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrBranch)
  }

  public interface IrBlockBodyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrBlockBody)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> 
        getStatementList();
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getStatement(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
     */
    int getStatementCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrBlockBody}
   */
  public static final class IrBlockBody extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrBlockBody)
      IrBlockBodyOrBuilder {
    // Use IrBlockBody.newBuilder() to construct.
    private IrBlockBody(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrBlockBody(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

    private static final IrBlockBody defaultInstance;
    public static IrBlockBody getDefaultInstance() {
      return defaultInstance;
    }

    public IrBlockBody getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrBlockBody(
        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);
      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)) {
                statement_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement>();
                mutable_bitField0_ |= 0x00000001;
              }
              statement_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.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)) {
          statement_ = java.util.Collections.unmodifiableList(statement_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrBlockBody> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrBlockBody>() {
      public IrBlockBody parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrBlockBody(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<IrBlockBody> getParserForType() {
      return PARSER;
    }

    public static final int STATEMENT_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> statement_;
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> getStatementList() {
      return statement_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrBuilder> 
        getStatementOrBuilderList() {
      return statement_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
     */
    public int getStatementCount() {
      return statement_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getStatement(int index) {
      return statement_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrBuilder getStatementOrBuilder(
        int index) {
      return statement_.get(index);
    }

    private void initFields() {
      statement_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getStatementCount(); i++) {
        if (!getStatement(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 < statement_.size(); i++) {
        output.writeMessage(1, statement_.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 < statement_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, statement_.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.common.serialization.KotlinIr.IrBlockBody parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody 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.common.serialization.KotlinIr.IrBlockBody parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody 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.common.serialization.KotlinIr.IrBlockBody parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody 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.common.serialization.KotlinIr.IrBlockBody parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody 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.common.serialization.KotlinIr.IrBlockBody parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody 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.common.serialization.KotlinIr.IrBlockBody prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrBlockBody}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.backend.common.serialization.IrBlockBody)
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBodyOrBuilder {
      // Construct using org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        statement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          statement_ = java.util.Collections.unmodifiableList(statement_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.statement_ = statement_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody.getDefaultInstance()) return this;
        if (!other.statement_.isEmpty()) {
          if (statement_.isEmpty()) {
            statement_ = other.statement_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureStatementIsMutable();
            statement_.addAll(other.statement_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getStatementCount(); i++) {
          if (!getStatement(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.common.serialization.KotlinIr.IrBlockBody parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody) 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.KotlinIr.IrStatement> statement_ =
        java.util.Collections.emptyList();
      private void ensureStatementIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          statement_ = new java.util.ArrayList<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement>(statement_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> getStatementList() {
        return java.util.Collections.unmodifiableList(statement_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public int getStatementCount() {
        return statement_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getStatement(int index) {
        return statement_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public Builder setStatement(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureStatementIsMutable();
        statement_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public Builder setStatement(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.Builder builderForValue) {
        ensureStatementIsMutable();
        statement_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public Builder addStatement(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureStatementIsMutable();
        statement_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public Builder addStatement(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureStatementIsMutable();
        statement_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public Builder addStatement(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.Builder builderForValue) {
        ensureStatementIsMutable();
        statement_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public Builder addStatement(
          int index, org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.Builder builderForValue) {
        ensureStatementIsMutable();
        statement_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public Builder addAllStatement(
          java.lang.Iterable<? extends org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement> values) {
        ensureStatementIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, statement_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public Builder clearStatement() {
        statement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.backend.common.serialization.IrStatement statement = 1;</code>
       */
      public Builder removeStatement(int index) {
        ensureStatementIsMutable();
        statement_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrBlockBody)
    }

    static {
      defaultInstance = new IrBlockBody(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrBlockBody)
  }

  public interface IrCatchOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrCatch)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrVariable catch_parameter = 1;</code>
     */
    boolean hasCatchParameter();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrVariable catch_parameter = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable getCatchParameter();

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 2;</code>
     */
    boolean hasResult();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getResult();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrCatch}
   */
  public static final class IrCatch extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrCatch)
      IrCatchOrBuilder {
    // Use IrCatch.newBuilder() to construct.
    private IrCatch(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrCatch(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

    private static final IrCatch defaultInstance;
    public static IrCatch getDefaultInstance() {
      return defaultInstance;
    }

    public IrCatch getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrCatch(
        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);
      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.KotlinIr.IrVariable.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = catchParameter_.toBuilder();
              }
              catchParameter_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(catchParameter_);
                catchParameter_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = result_.toBuilder();
              }
              result_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(result_);
                result_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrCatch> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrCatch>() {
      public IrCatch parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrCatch(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<IrCatch> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int CATCH_PARAMETER_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable catchParameter_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrVariable catch_parameter = 1;</code>
     */
    public boolean hasCatchParameter() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrVariable catch_parameter = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable getCatchParameter() {
      return catchParameter_;
    }

    public static final int RESULT_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression result_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 2;</code>
     */
    public boolean hasResult() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getResult() {
      return result_;
    }

    private void initFields() {
      catchParameter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.getDefaultInstance();
      result_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasCatchParameter()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasResult()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getCatchParameter().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getResult().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, catchParameter_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, result_);
      }
      output.writeRawBytes(unknownFields);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, catchParameter_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, result_);
      }
      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.common.serialization.KotlinIr.IrCatch parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch 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.common.serialization.KotlinIr.IrCatch parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch 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.common.serialization.KotlinIr.IrCatch parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch 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.common.serialization.KotlinIr.IrCatch parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch 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.common.serialization.KotlinIr.IrCatch parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch 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.common.serialization.KotlinIr.IrCatch prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrCatch}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.backend.common.serialization.IrCatch)
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatchOrBuilder {
      // Construct using org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        catchParameter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        result_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.catchParameter_ = catchParameter_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.result_ = result_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch.getDefaultInstance()) return this;
        if (other.hasCatchParameter()) {
          mergeCatchParameter(other.getCatchParameter());
        }
        if (other.hasResult()) {
          mergeResult(other.getResult());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasCatchParameter()) {
          
          return false;
        }
        if (!hasResult()) {
          
          return false;
        }
        if (!getCatchParameter().isInitialized()) {
          
          return false;
        }
        if (!getResult().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.common.serialization.KotlinIr.IrCatch parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable catchParameter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrVariable catch_parameter = 1;</code>
       */
      public boolean hasCatchParameter() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrVariable catch_parameter = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable getCatchParameter() {
        return catchParameter_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrVariable catch_parameter = 1;</code>
       */
      public Builder setCatchParameter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        catchParameter_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrVariable catch_parameter = 1;</code>
       */
      public Builder setCatchParameter(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.Builder builderForValue) {
        catchParameter_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrVariable catch_parameter = 1;</code>
       */
      public Builder mergeCatchParameter(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            catchParameter_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.getDefaultInstance()) {
          catchParameter_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.newBuilder(catchParameter_).mergeFrom(value).buildPartial();
        } else {
          catchParameter_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrVariable catch_parameter = 1;</code>
       */
      public Builder clearCatchParameter() {
        catchParameter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrVariable.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression result_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 2;</code>
       */
      public boolean hasResult() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getResult() {
        return result_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 2;</code>
       */
      public Builder setResult(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 2;</code>
       */
      public Builder setResult(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        result_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 2;</code>
       */
      public Builder mergeResult(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            result_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          result_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder(result_).mergeFrom(value).buildPartial();
        } else {
          result_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrExpression result = 2;</code>
       */
      public Builder clearResult() {
        result_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrCatch)
    }

    static {
      defaultInstance = new IrCatch(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrCatch)
  }

  public interface IrSyntheticBodyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBody)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBodyKind kind = 1;</code>
     */
    boolean hasKind();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBodyKind kind = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBodyKind getKind();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBody}
   */
  public static final class IrSyntheticBody extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBody)
      IrSyntheticBodyOrBuilder {
    // Use IrSyntheticBody.newBuilder() to construct.
    private IrSyntheticBody(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrSyntheticBody(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

    private static final IrSyntheticBody defaultInstance;
    public static IrSyntheticBody getDefaultInstance() {
      return defaultInstance;
    }

    public IrSyntheticBody getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrSyntheticBody(
        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);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBodyKind value = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBodyKind.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000001;
                kind_ = value;
              }
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrSyntheticBody> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrSyntheticBody>() {
      public IrSyntheticBody parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrSyntheticBody(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<IrSyntheticBody> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int KIND_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBodyKind kind_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBodyKind kind = 1;</code>
     */
    public boolean hasKind() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBodyKind kind = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBodyKind getKind() {
      return kind_;
    }

    private void initFields() {
      kind_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBodyKind.ENUM_VALUES;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasKind()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeEnum(1, kind_.getNumber());
      }
      output.writeRawBytes(unknownFields);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(1, kind_.getNumber());
      }
      size += unknownFields.size();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody 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.common.serialization.KotlinIr.IrSyntheticBody parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody 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.common.serialization.KotlinIr.IrSyntheticBody parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody 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.common.serialization.KotlinIr.IrSyntheticBody parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody 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.common.serialization.KotlinIr.IrSyntheticBody parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody 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.common.serialization.KotlinIr.IrSyntheticBody prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBody}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBody)
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBodyOrBuilder {
      // Construct using org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        kind_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBodyKind.ENUM_VALUES;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.kind_ = kind_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody.getDefaultInstance()) return this;
        if (other.hasKind()) {
          setKind(other.getKind());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasKind()) {
          
          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.common.serialization.KotlinIr.IrSyntheticBody parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBodyKind kind_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBodyKind.ENUM_VALUES;
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBodyKind kind = 1;</code>
       */
      public boolean hasKind() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBodyKind kind = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBodyKind getKind() {
        return kind_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBodyKind kind = 1;</code>
       */
      public Builder setKind(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBodyKind value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        kind_ = value;
        
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBodyKind kind = 1;</code>
       */
      public Builder clearKind() {
        bitField0_ = (bitField0_ & ~0x00000001);
        kind_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBodyKind.ENUM_VALUES;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBody)
    }

    static {
      defaultInstance = new IrSyntheticBody(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBody)
  }

  public interface IrStatementOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.IrStatement)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 1;</code>
     */
    boolean hasCoordinates();
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 1;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates getCoordinates();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDeclaration declaration = 2;</code>
     */
    boolean hasDeclaration();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDeclaration declaration = 2;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration getDeclaration();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 3;</code>
     */
    boolean hasExpression();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 3;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getExpression();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBlockBody block_body = 4;</code>
     */
    boolean hasBlockBody();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBlockBody block_body = 4;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody getBlockBody();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBranch branch = 5;</code>
     */
    boolean hasBranch();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBranch branch = 5;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch getBranch();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrCatch catch = 6;</code>
     */
    boolean hasCatch();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrCatch catch = 6;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch getCatch();

    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBody synthetic_body = 7;</code>
     */
    boolean hasSyntheticBody();
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBody synthetic_body = 7;</code>
     */
    org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody getSyntheticBody();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrStatement}
   *
   * <pre>
   * Let's try to map IrElement as well as IrStatement to IrStatement.
   * </pre>
   */
  public static final class IrStatement extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.IrStatement)
      IrStatementOrBuilder {
    // Use IrStatement.newBuilder() to construct.
    private IrStatement(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrStatement(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

    private static final IrStatement defaultInstance;
    public static IrStatement getDefaultInstance() {
      return defaultInstance;
    }

    public IrStatement getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrStatement(
        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);
      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.KotlinIr.Coordinates.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = coordinates_.toBuilder();
              }
              coordinates_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(coordinates_);
                coordinates_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration.Builder subBuilder = null;
              if (statementCase_ == 2) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 2;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder subBuilder = null;
              if (statementCase_ == 3) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 3;
              break;
            }
            case 34: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody.Builder subBuilder = null;
              if (statementCase_ == 4) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 4;
              break;
            }
            case 42: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch.Builder subBuilder = null;
              if (statementCase_ == 5) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 5;
              break;
            }
            case 50: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch.Builder subBuilder = null;
              if (statementCase_ == 6) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 6;
              break;
            }
            case 58: {
              org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody.Builder subBuilder = null;
              if (statementCase_ == 7) {
                subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 7;
              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<IrStatement> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrStatement>() {
      public IrStatement parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrStatement(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<IrStatement> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    private int statementCase_ = 0;
    private java.lang.Object statement_;
    public enum StatementCase
        implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
      DECLARATION(2),
      EXPRESSION(3),
      BLOCK_BODY(4),
      BRANCH(5),
      CATCH(6),
      SYNTHETIC_BODY(7),
      STATEMENT_NOT_SET(0);
      private int value = 0;
      private StatementCase(int value) {
        this.value = value;
      }
      public static StatementCase valueOf(int value) {
        switch (value) {
          case 2: return DECLARATION;
          case 3: return EXPRESSION;
          case 4: return BLOCK_BODY;
          case 5: return BRANCH;
          case 6: return CATCH;
          case 7: return SYNTHETIC_BODY;
          case 0: return STATEMENT_NOT_SET;
          default: throw new java.lang.IllegalArgumentException(
            "Value is undefined for this oneof enum.");
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public StatementCase
    getStatementCase() {
      return StatementCase.valueOf(
          statementCase_);
    }

    public static final int COORDINATES_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates coordinates_;
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 1;</code>
     */
    public boolean hasCoordinates() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 1;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates getCoordinates() {
      return coordinates_;
    }

    public static final int DECLARATION_FIELD_NUMBER = 2;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDeclaration declaration = 2;</code>
     */
    public boolean hasDeclaration() {
      return statementCase_ == 2;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDeclaration declaration = 2;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration getDeclaration() {
      if (statementCase_ == 2) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration) statement_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration.getDefaultInstance();
    }

    public static final int EXPRESSION_FIELD_NUMBER = 3;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 3;</code>
     */
    public boolean hasExpression() {
      return statementCase_ == 3;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 3;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getExpression() {
      if (statementCase_ == 3) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression) statement_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
    }

    public static final int BLOCK_BODY_FIELD_NUMBER = 4;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBlockBody block_body = 4;</code>
     */
    public boolean hasBlockBody() {
      return statementCase_ == 4;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBlockBody block_body = 4;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody getBlockBody() {
      if (statementCase_ == 4) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody) statement_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody.getDefaultInstance();
    }

    public static final int BRANCH_FIELD_NUMBER = 5;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBranch branch = 5;</code>
     */
    public boolean hasBranch() {
      return statementCase_ == 5;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBranch branch = 5;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch getBranch() {
      if (statementCase_ == 5) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch) statement_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch.getDefaultInstance();
    }

    public static final int CATCH_FIELD_NUMBER = 6;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrCatch catch = 6;</code>
     */
    public boolean hasCatch() {
      return statementCase_ == 6;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrCatch catch = 6;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch getCatch() {
      if (statementCase_ == 6) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch) statement_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch.getDefaultInstance();
    }

    public static final int SYNTHETIC_BODY_FIELD_NUMBER = 7;
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBody synthetic_body = 7;</code>
     */
    public boolean hasSyntheticBody() {
      return statementCase_ == 7;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBody synthetic_body = 7;</code>
     */
    public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody getSyntheticBody() {
      if (statementCase_ == 7) {
         return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody) statement_;
      }
      return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody.getDefaultInstance();
    }

    private void initFields() {
      coordinates_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasCoordinates()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getCoordinates().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasDeclaration()) {
        if (!getDeclaration().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasExpression()) {
        if (!getExpression().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasBlockBody()) {
        if (!getBlockBody().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasBranch()) {
        if (!getBranch().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasCatch()) {
        if (!getCatch().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSyntheticBody()) {
        if (!getSyntheticBody().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, coordinates_);
      }
      if (statementCase_ == 2) {
        output.writeMessage(2, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration) statement_);
      }
      if (statementCase_ == 3) {
        output.writeMessage(3, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression) statement_);
      }
      if (statementCase_ == 4) {
        output.writeMessage(4, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody) statement_);
      }
      if (statementCase_ == 5) {
        output.writeMessage(5, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch) statement_);
      }
      if (statementCase_ == 6) {
        output.writeMessage(6, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch) statement_);
      }
      if (statementCase_ == 7) {
        output.writeMessage(7, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody) statement_);
      }
      output.writeRawBytes(unknownFields);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, coordinates_);
      }
      if (statementCase_ == 2) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration) statement_);
      }
      if (statementCase_ == 3) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression) statement_);
      }
      if (statementCase_ == 4) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody) statement_);
      }
      if (statementCase_ == 5) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch) statement_);
      }
      if (statementCase_ == 6) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(6, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch) statement_);
      }
      if (statementCase_ == 7) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(7, (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody) statement_);
      }
      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.common.serialization.KotlinIr.IrStatement parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement 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.common.serialization.KotlinIr.IrStatement parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement 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.common.serialization.KotlinIr.IrStatement parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement 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.common.serialization.KotlinIr.IrStatement parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement 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.common.serialization.KotlinIr.IrStatement parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement 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.common.serialization.KotlinIr.IrStatement prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrStatement}
     *
     * <pre>
     * Let's try to map IrElement as well as IrStatement to IrStatement.
     * </pre>
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.backend.common.serialization.IrStatement)
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrBuilder {
      // Construct using org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        coordinates_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        statementCase_ = 0;
        statement_ = null;
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement getDefaultInstanceForType() {
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.getDefaultInstance();
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement build() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement buildPartial() {
        org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement result = new org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.coordinates_ = coordinates_;
        if (statementCase_ == 2) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 3) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 4) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 5) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 6) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 7) {
          result.statement_ = statement_;
        }
        result.bitField0_ = to_bitField0_;
        result.statementCase_ = statementCase_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement other) {
        if (other == org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement.getDefaultInstance()) return this;
        if (other.hasCoordinates()) {
          mergeCoordinates(other.getCoordinates());
        }
        switch (other.getStatementCase()) {
          case DECLARATION: {
            mergeDeclaration(other.getDeclaration());
            break;
          }
          case EXPRESSION: {
            mergeExpression(other.getExpression());
            break;
          }
          case BLOCK_BODY: {
            mergeBlockBody(other.getBlockBody());
            break;
          }
          case BRANCH: {
            mergeBranch(other.getBranch());
            break;
          }
          case CATCH: {
            mergeCatch(other.getCatch());
            break;
          }
          case SYNTHETIC_BODY: {
            mergeSyntheticBody(other.getSyntheticBody());
            break;
          }
          case STATEMENT_NOT_SET: {
            break;
          }
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasCoordinates()) {
          
          return false;
        }
        if (!getCoordinates().isInitialized()) {
          
          return false;
        }
        if (hasDeclaration()) {
          if (!getDeclaration().isInitialized()) {
            
            return false;
          }
        }
        if (hasExpression()) {
          if (!getExpression().isInitialized()) {
            
            return false;
          }
        }
        if (hasBlockBody()) {
          if (!getBlockBody().isInitialized()) {
            
            return false;
          }
        }
        if (hasBranch()) {
          if (!getBranch().isInitialized()) {
            
            return false;
          }
        }
        if (hasCatch()) {
          if (!getCatch().isInitialized()) {
            
            return false;
          }
        }
        if (hasSyntheticBody()) {
          if (!getSyntheticBody().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.common.serialization.KotlinIr.IrStatement parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatement) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int statementCase_ = 0;
      private java.lang.Object statement_;
      public StatementCase
          getStatementCase() {
        return StatementCase.valueOf(
            statementCase_);
      }

      public Builder clearStatement() {
        statementCase_ = 0;
        statement_ = null;
        return this;
      }

      private int bitField0_;

      private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates coordinates_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 1;</code>
       */
      public boolean hasCoordinates() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 1;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates getCoordinates() {
        return coordinates_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 1;</code>
       */
      public Builder setCoordinates(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates value) {
        if (value == null) {
          throw new NullPointerException();
        }
        coordinates_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 1;</code>
       */
      public Builder setCoordinates(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.Builder builderForValue) {
        coordinates_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 1;</code>
       */
      public Builder mergeCoordinates(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            coordinates_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance()) {
          coordinates_ =
            org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.newBuilder(coordinates_).mergeFrom(value).buildPartial();
        } else {
          coordinates_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.backend.common.serialization.Coordinates coordinates = 1;</code>
       */
      public Builder clearCoordinates() {
        coordinates_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.Coordinates.getDefaultInstance();

        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDeclaration declaration = 2;</code>
       */
      public boolean hasDeclaration() {
        return statementCase_ == 2;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDeclaration declaration = 2;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration getDeclaration() {
        if (statementCase_ == 2) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration) statement_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDeclaration declaration = 2;</code>
       */
      public Builder setDeclaration(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDeclaration declaration = 2;</code>
       */
      public Builder setDeclaration(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDeclaration declaration = 2;</code>
       */
      public Builder mergeDeclaration(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration value) {
        if (statementCase_ == 2 &&
            statement_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrDeclaration) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrDeclaration declaration = 2;</code>
       */
      public Builder clearDeclaration() {
        if (statementCase_ == 2) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 3;</code>
       */
      public boolean hasExpression() {
        return statementCase_ == 3;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 3;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression getExpression() {
        if (statementCase_ == 3) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression) statement_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 3;</code>
       */
      public Builder setExpression(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 3;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 3;</code>
       */
      public Builder setExpression(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 3;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 3;</code>
       */
      public Builder mergeExpression(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression value) {
        if (statementCase_ == 3 &&
            statement_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrExpression) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 3;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrExpression expression = 3;</code>
       */
      public Builder clearExpression() {
        if (statementCase_ == 3) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBlockBody block_body = 4;</code>
       */
      public boolean hasBlockBody() {
        return statementCase_ == 4;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBlockBody block_body = 4;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody getBlockBody() {
        if (statementCase_ == 4) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody) statement_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBlockBody block_body = 4;</code>
       */
      public Builder setBlockBody(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 4;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBlockBody block_body = 4;</code>
       */
      public Builder setBlockBody(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 4;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBlockBody block_body = 4;</code>
       */
      public Builder mergeBlockBody(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody value) {
        if (statementCase_ == 4 &&
            statement_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBlockBody) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 4;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBlockBody block_body = 4;</code>
       */
      public Builder clearBlockBody() {
        if (statementCase_ == 4) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBranch branch = 5;</code>
       */
      public boolean hasBranch() {
        return statementCase_ == 5;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBranch branch = 5;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch getBranch() {
        if (statementCase_ == 5) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch) statement_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBranch branch = 5;</code>
       */
      public Builder setBranch(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 5;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBranch branch = 5;</code>
       */
      public Builder setBranch(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 5;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBranch branch = 5;</code>
       */
      public Builder mergeBranch(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch value) {
        if (statementCase_ == 5 &&
            statement_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrBranch) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 5;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrBranch branch = 5;</code>
       */
      public Builder clearBranch() {
        if (statementCase_ == 5) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrCatch catch = 6;</code>
       */
      public boolean hasCatch() {
        return statementCase_ == 6;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrCatch catch = 6;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch getCatch() {
        if (statementCase_ == 6) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch) statement_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrCatch catch = 6;</code>
       */
      public Builder setCatch(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 6;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrCatch catch = 6;</code>
       */
      public Builder setCatch(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 6;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrCatch catch = 6;</code>
       */
      public Builder mergeCatch(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch value) {
        if (statementCase_ == 6 &&
            statement_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrCatch) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 6;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrCatch catch = 6;</code>
       */
      public Builder clearCatch() {
        if (statementCase_ == 6) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBody synthetic_body = 7;</code>
       */
      public boolean hasSyntheticBody() {
        return statementCase_ == 7;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBody synthetic_body = 7;</code>
       */
      public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody getSyntheticBody() {
        if (statementCase_ == 7) {
          return (org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody) statement_;
        }
        return org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBody synthetic_body = 7;</code>
       */
      public Builder setSyntheticBody(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 7;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBody synthetic_body = 7;</code>
       */
      public Builder setSyntheticBody(
          org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 7;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBody synthetic_body = 7;</code>
       */
      public Builder mergeSyntheticBody(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody value) {
        if (statementCase_ == 7 &&
            statement_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody.newBuilder((org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSyntheticBody) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 7;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.backend.common.serialization.IrSyntheticBody synthetic_body = 7;</code>
       */
      public Builder clearSyntheticBody() {
        if (statementCase_ == 7) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrStatement)
    }

    static {
      defaultInstance = new IrStatement(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.IrStatement)
  }


  static {
  }

  // @@protoc_insertion_point(outer_class_scope)
}
