// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: js/js.config/src/js-ast.proto

package org.jetbrains.kotlin.serialization.js.ast;

public final class JsAstProtoBuf {
  private JsAstProtoBuf() {}
  public static void registerAllExtensions(
      org.jetbrains.kotlin.protobuf.ExtensionRegistryLite registry) {
  }
  /**
   * Protobuf enum {@code org.jetbrains.kotlin.serialization.js.ast.SideEffects}
   */
  public enum SideEffects
      implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
    /**
     * <code>AFFECTS_STATE = 1;</code>
     */
    AFFECTS_STATE(0, 1),
    /**
     * <code>DEPENDS_ON_STATE = 2;</code>
     */
    DEPENDS_ON_STATE(1, 2),
    /**
     * <code>PURE = 3;</code>
     */
    PURE(2, 3),
    ;

    /**
     * <code>AFFECTS_STATE = 1;</code>
     */
    public static final int AFFECTS_STATE_VALUE = 1;
    /**
     * <code>DEPENDS_ON_STATE = 2;</code>
     */
    public static final int DEPENDS_ON_STATE_VALUE = 2;
    /**
     * <code>PURE = 3;</code>
     */
    public static final int PURE_VALUE = 3;


    public final int getNumber() { return value; }

    public static SideEffects valueOf(int value) {
      switch (value) {
        case 1: return AFFECTS_STATE;
        case 2: return DEPENDS_ON_STATE;
        case 3: return PURE;
        default: return null;
      }
    }

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

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.serialization.js.ast.SideEffects)
  }

  /**
   * Protobuf enum {@code org.jetbrains.kotlin.serialization.js.ast.InlineStrategy}
   */
  public enum InlineStrategy
      implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
    /**
     * <code>AS_FUNCTION = 0;</code>
     */
    AS_FUNCTION(0, 0),
    /**
     * <code>IN_PLACE = 1;</code>
     */
    IN_PLACE(1, 1),
    /**
     * <code>NOT_INLINE = 2;</code>
     */
    NOT_INLINE(2, 2),
    ;

    /**
     * <code>AS_FUNCTION = 0;</code>
     */
    public static final int AS_FUNCTION_VALUE = 0;
    /**
     * <code>IN_PLACE = 1;</code>
     */
    public static final int IN_PLACE_VALUE = 1;
    /**
     * <code>NOT_INLINE = 2;</code>
     */
    public static final int NOT_INLINE_VALUE = 2;


    public final int getNumber() { return value; }

    public static InlineStrategy valueOf(int value) {
      switch (value) {
        case 0: return AS_FUNCTION;
        case 1: return IN_PLACE;
        case 2: return NOT_INLINE;
        default: return null;
      }
    }

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

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.serialization.js.ast.InlineStrategy)
  }

  /**
   * Protobuf enum {@code org.jetbrains.kotlin.serialization.js.ast.SpecialFunction}
   */
  public enum SpecialFunction
      implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
    /**
     * <code>DEFINE_INLINE_FUNCTION = 1;</code>
     */
    DEFINE_INLINE_FUNCTION(0, 1),
    /**
     * <code>WRAP_FUNCTION = 2;</code>
     */
    WRAP_FUNCTION(1, 2),
    /**
     * <code>TO_BOXED_CHAR = 3;</code>
     */
    TO_BOXED_CHAR(2, 3),
    /**
     * <code>UNBOX_CHAR = 4;</code>
     */
    UNBOX_CHAR(3, 4),
    /**
     * <code>SUSPEND_CALL = 5;</code>
     */
    SUSPEND_CALL(4, 5),
    /**
     * <code>COROUTINE_RESULT = 6;</code>
     */
    COROUTINE_RESULT(5, 6),
    /**
     * <code>COROUTINE_CONTROLLER = 7;</code>
     */
    COROUTINE_CONTROLLER(6, 7),
    /**
     * <code>COROUTINE_RECEIVER = 8;</code>
     */
    COROUTINE_RECEIVER(7, 8),
    /**
     * <code>SET_COROUTINE_RESULT = 9;</code>
     */
    SET_COROUTINE_RESULT(8, 9),
    /**
     * <code>GET_KCLASS = 10;</code>
     */
    GET_KCLASS(9, 10),
    /**
     * <code>GET_REIFIED_TYPE_PARAMETER_KTYPE = 11;</code>
     */
    GET_REIFIED_TYPE_PARAMETER_KTYPE(10, 11),
    ;

    /**
     * <code>DEFINE_INLINE_FUNCTION = 1;</code>
     */
    public static final int DEFINE_INLINE_FUNCTION_VALUE = 1;
    /**
     * <code>WRAP_FUNCTION = 2;</code>
     */
    public static final int WRAP_FUNCTION_VALUE = 2;
    /**
     * <code>TO_BOXED_CHAR = 3;</code>
     */
    public static final int TO_BOXED_CHAR_VALUE = 3;
    /**
     * <code>UNBOX_CHAR = 4;</code>
     */
    public static final int UNBOX_CHAR_VALUE = 4;
    /**
     * <code>SUSPEND_CALL = 5;</code>
     */
    public static final int SUSPEND_CALL_VALUE = 5;
    /**
     * <code>COROUTINE_RESULT = 6;</code>
     */
    public static final int COROUTINE_RESULT_VALUE = 6;
    /**
     * <code>COROUTINE_CONTROLLER = 7;</code>
     */
    public static final int COROUTINE_CONTROLLER_VALUE = 7;
    /**
     * <code>COROUTINE_RECEIVER = 8;</code>
     */
    public static final int COROUTINE_RECEIVER_VALUE = 8;
    /**
     * <code>SET_COROUTINE_RESULT = 9;</code>
     */
    public static final int SET_COROUTINE_RESULT_VALUE = 9;
    /**
     * <code>GET_KCLASS = 10;</code>
     */
    public static final int GET_KCLASS_VALUE = 10;
    /**
     * <code>GET_REIFIED_TYPE_PARAMETER_KTYPE = 11;</code>
     */
    public static final int GET_REIFIED_TYPE_PARAMETER_KTYPE_VALUE = 11;


    public final int getNumber() { return value; }

    public static SpecialFunction valueOf(int value) {
      switch (value) {
        case 1: return DEFINE_INLINE_FUNCTION;
        case 2: return WRAP_FUNCTION;
        case 3: return TO_BOXED_CHAR;
        case 4: return UNBOX_CHAR;
        case 5: return SUSPEND_CALL;
        case 6: return COROUTINE_RESULT;
        case 7: return COROUTINE_CONTROLLER;
        case 8: return COROUTINE_RECEIVER;
        case 9: return SET_COROUTINE_RESULT;
        case 10: return GET_KCLASS;
        case 11: return GET_REIFIED_TYPE_PARAMETER_KTYPE;
        default: return null;
      }
    }

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

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.serialization.js.ast.SpecialFunction)
  }

  public interface LocationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Location)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required int32 startLine = 1;</code>
     */
    boolean hasStartLine();
    /**
     * <code>required int32 startLine = 1;</code>
     */
    int getStartLine();

    /**
     * <code>required int32 startChar = 2;</code>
     */
    boolean hasStartChar();
    /**
     * <code>required int32 startChar = 2;</code>
     */
    int getStartChar();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Location}
   */
  public static final class Location extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Location)
      LocationOrBuilder {
    // Use Location.newBuilder() to construct.
    private Location(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Location(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Location getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Location(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              startLine_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              startChar_ = 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<Location> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Location>() {
      public Location parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Location(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int STARTLINE_FIELD_NUMBER = 1;
    private int startLine_;
    /**
     * <code>required int32 startLine = 1;</code>
     */
    public boolean hasStartLine() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 startLine = 1;</code>
     */
    public int getStartLine() {
      return startLine_;
    }

    public static final int STARTCHAR_FIELD_NUMBER = 2;
    private int startChar_;
    /**
     * <code>required int32 startChar = 2;</code>
     */
    public boolean hasStartChar() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 startChar = 2;</code>
     */
    public int getStartChar() {
      return startChar_;
    }

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

      if (!hasStartLine()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasStartChar()) {
        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, startLine_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, startChar_);
      }
      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, startLine_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(2, startChar_);
      }
      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.serialization.js.ast.JsAstProtoBuf.Location parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location 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.serialization.js.ast.JsAstProtoBuf.Location parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location 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.serialization.js.ast.JsAstProtoBuf.Location parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location 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.serialization.js.ast.JsAstProtoBuf.Location parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location 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.serialization.js.ast.JsAstProtoBuf.Location parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location 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.serialization.js.ast.JsAstProtoBuf.Location prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Location}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Location)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocationOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

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

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.startLine_ = startLine_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.startChar_ = startChar_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance()) return this;
        if (other.hasStartLine()) {
          setStartLine(other.getStartLine());
        }
        if (other.hasStartChar()) {
          setStartChar(other.getStartChar());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasStartLine()) {
          
          return false;
        }
        if (!hasStartChar()) {
          
          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.serialization.js.ast.JsAstProtoBuf.Location parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int startLine_ ;
      /**
       * <code>required int32 startLine = 1;</code>
       */
      public boolean hasStartLine() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 startLine = 1;</code>
       */
      public int getStartLine() {
        return startLine_;
      }
      /**
       * <code>required int32 startLine = 1;</code>
       */
      public Builder setStartLine(int value) {
        bitField0_ |= 0x00000001;
        startLine_ = value;
        
        return this;
      }
      /**
       * <code>required int32 startLine = 1;</code>
       */
      public Builder clearStartLine() {
        bitField0_ = (bitField0_ & ~0x00000001);
        startLine_ = 0;
        
        return this;
      }

      private int startChar_ ;
      /**
       * <code>required int32 startChar = 2;</code>
       */
      public boolean hasStartChar() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 startChar = 2;</code>
       */
      public int getStartChar() {
        return startChar_;
      }
      /**
       * <code>required int32 startChar = 2;</code>
       */
      public Builder setStartChar(int value) {
        bitField0_ |= 0x00000002;
        startChar_ = value;
        
        return this;
      }
      /**
       * <code>required int32 startChar = 2;</code>
       */
      public Builder clearStartChar() {
        bitField0_ = (bitField0_ & ~0x00000002);
        startChar_ = 0;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Location)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Location)
  }

  public interface JsImportedModuleOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.JsImportedModule)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required int32 external_name = 1;</code>
     */
    boolean hasExternalName();
    /**
     * <code>required int32 external_name = 1;</code>
     */
    int getExternalName();

    /**
     * <code>required int32 internal_name = 2;</code>
     */
    boolean hasInternalName();
    /**
     * <code>required int32 internal_name = 2;</code>
     */
    int getInternalName();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression plain_reference = 3;</code>
     */
    boolean hasPlainReference();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression plain_reference = 3;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getPlainReference();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.JsImportedModule}
   */
  public static final class JsImportedModule extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.JsImportedModule)
      JsImportedModuleOrBuilder {
    // Use JsImportedModule.newBuilder() to construct.
    private JsImportedModule(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private JsImportedModule(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public JsImportedModule getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private JsImportedModule(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              externalName_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              internalName_ = input.readInt32();
              break;
            }
            case 26: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = plainReference_.toBuilder();
              }
              plainReference_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(plainReference_);
                plainReference_ = 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<JsImportedModule> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<JsImportedModule>() {
      public JsImportedModule parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new JsImportedModule(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int EXTERNAL_NAME_FIELD_NUMBER = 1;
    private int externalName_;
    /**
     * <code>required int32 external_name = 1;</code>
     */
    public boolean hasExternalName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 external_name = 1;</code>
     */
    public int getExternalName() {
      return externalName_;
    }

    public static final int INTERNAL_NAME_FIELD_NUMBER = 2;
    private int internalName_;
    /**
     * <code>required int32 internal_name = 2;</code>
     */
    public boolean hasInternalName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 internal_name = 2;</code>
     */
    public int getInternalName() {
      return internalName_;
    }

    public static final int PLAIN_REFERENCE_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression plainReference_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression plain_reference = 3;</code>
     */
    public boolean hasPlainReference() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression plain_reference = 3;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getPlainReference() {
      return plainReference_;
    }

    private void initFields() {
      externalName_ = 0;
      internalName_ = 0;
      plainReference_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasExternalName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasInternalName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasPlainReference()) {
        if (!getPlainReference().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, externalName_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, internalName_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, plainReference_);
      }
      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, externalName_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(2, internalName_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, plainReference_);
      }
      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.serialization.js.ast.JsAstProtoBuf.JsImportedModule parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule 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.serialization.js.ast.JsAstProtoBuf.JsImportedModule parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule 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.serialization.js.ast.JsAstProtoBuf.JsImportedModule parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule 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.serialization.js.ast.JsAstProtoBuf.JsImportedModule parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule 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.serialization.js.ast.JsAstProtoBuf.JsImportedModule parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule 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.serialization.js.ast.JsAstProtoBuf.JsImportedModule prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.JsImportedModule}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.JsImportedModule)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModuleOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        externalName_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        internalName_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        plainReference_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.externalName_ = externalName_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.internalName_ = internalName_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.plainReference_ = plainReference_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule.getDefaultInstance()) return this;
        if (other.hasExternalName()) {
          setExternalName(other.getExternalName());
        }
        if (other.hasInternalName()) {
          setInternalName(other.getInternalName());
        }
        if (other.hasPlainReference()) {
          mergePlainReference(other.getPlainReference());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasExternalName()) {
          
          return false;
        }
        if (!hasInternalName()) {
          
          return false;
        }
        if (hasPlainReference()) {
          if (!getPlainReference().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.serialization.js.ast.JsAstProtoBuf.JsImportedModule parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int externalName_ ;
      /**
       * <code>required int32 external_name = 1;</code>
       */
      public boolean hasExternalName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 external_name = 1;</code>
       */
      public int getExternalName() {
        return externalName_;
      }
      /**
       * <code>required int32 external_name = 1;</code>
       */
      public Builder setExternalName(int value) {
        bitField0_ |= 0x00000001;
        externalName_ = value;
        
        return this;
      }
      /**
       * <code>required int32 external_name = 1;</code>
       */
      public Builder clearExternalName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        externalName_ = 0;
        
        return this;
      }

      private int internalName_ ;
      /**
       * <code>required int32 internal_name = 2;</code>
       */
      public boolean hasInternalName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 internal_name = 2;</code>
       */
      public int getInternalName() {
        return internalName_;
      }
      /**
       * <code>required int32 internal_name = 2;</code>
       */
      public Builder setInternalName(int value) {
        bitField0_ |= 0x00000002;
        internalName_ = value;
        
        return this;
      }
      /**
       * <code>required int32 internal_name = 2;</code>
       */
      public Builder clearInternalName() {
        bitField0_ = (bitField0_ & ~0x00000002);
        internalName_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression plainReference_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression plain_reference = 3;</code>
       */
      public boolean hasPlainReference() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression plain_reference = 3;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getPlainReference() {
        return plainReference_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression plain_reference = 3;</code>
       */
      public Builder setPlainReference(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        plainReference_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression plain_reference = 3;</code>
       */
      public Builder setPlainReference(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        plainReference_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression plain_reference = 3;</code>
       */
      public Builder mergePlainReference(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            plainReference_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          plainReference_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(plainReference_).mergeFrom(value).buildPartial();
        } else {
          plainReference_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression plain_reference = 3;</code>
       */
      public Builder clearPlainReference() {
        plainReference_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.JsImportedModule)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.JsImportedModule)
  }

  public interface ExpressionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Expression)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional int32 fileId = 1;</code>
     */
    boolean hasFileId();
    /**
     * <code>optional int32 fileId = 1;</code>
     */
    int getFileId();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 2;</code>
     */
    boolean hasLocation();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location getLocation();

    /**
     * <code>optional bool synthetic = 3 [default = false];</code>
     */
    boolean hasSynthetic();
    /**
     * <code>optional bool synthetic = 3 [default = false];</code>
     */
    boolean getSynthetic();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SideEffects side_effects = 4 [default = AFFECTS_STATE];</code>
     */
    boolean hasSideEffects();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SideEffects side_effects = 4 [default = AFFECTS_STATE];</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SideEffects getSideEffects();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.JsImportedModule local_alias = 5;</code>
     */
    boolean hasLocalAlias();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.JsImportedModule local_alias = 5;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule getLocalAlias();

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 6;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> 
        getBeforeCommentsList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 6;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment getBeforeComments(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 6;</code>
     */
    int getBeforeCommentsCount();

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 7;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> 
        getAfterCommentsList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 7;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment getAfterComments(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 7;</code>
     */
    int getAfterCommentsCount();

    /**
     * <code>optional int32 simple_name_reference = 22;</code>
     */
    boolean hasSimpleNameReference();
    /**
     * <code>optional int32 simple_name_reference = 22;</code>
     */
    int getSimpleNameReference();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ThisLiteral this_literal = 23;</code>
     */
    boolean hasThisLiteral();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ThisLiteral this_literal = 23;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral getThisLiteral();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.NullLiteral null_literal = 24;</code>
     */
    boolean hasNullLiteral();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.NullLiteral null_literal = 24;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral getNullLiteral();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.TrueLiteral true_literal = 25;</code>
     */
    boolean hasTrueLiteral();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.TrueLiteral true_literal = 25;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral getTrueLiteral();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.FalseLiteral false_literal = 26;</code>
     */
    boolean hasFalseLiteral();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.FalseLiteral false_literal = 26;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral getFalseLiteral();

    /**
     * <code>optional int32 string_literal = 27;</code>
     */
    boolean hasStringLiteral();
    /**
     * <code>optional int32 string_literal = 27;</code>
     */
    int getStringLiteral();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.RegExpLiteral reg_exp_literal = 28;</code>
     */
    boolean hasRegExpLiteral();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.RegExpLiteral reg_exp_literal = 28;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral getRegExpLiteral();

    /**
     * <code>optional int32 int_literal = 29;</code>
     */
    boolean hasIntLiteral();
    /**
     * <code>optional int32 int_literal = 29;</code>
     */
    int getIntLiteral();

    /**
     * <code>optional double double_literal = 30;</code>
     */
    boolean hasDoubleLiteral();
    /**
     * <code>optional double double_literal = 30;</code>
     */
    double getDoubleLiteral();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ArrayLiteral array_literal = 31;</code>
     */
    boolean hasArrayLiteral();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ArrayLiteral array_literal = 31;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral getArrayLiteral();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteral object_literal = 32;</code>
     */
    boolean hasObjectLiteral();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteral object_literal = 32;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral getObjectLiteral();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Function function = 33;</code>
     */
    boolean hasFunction();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Function function = 33;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function getFunction();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.DocComment doc_comment = 34;</code>
     */
    boolean hasDocComment();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.DocComment doc_comment = 34;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment getDocComment();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.BinaryOperation binary = 35;</code>
     */
    boolean hasBinary();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.BinaryOperation binary = 35;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation getBinary();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.UnaryOperation unary = 36;</code>
     */
    boolean hasUnary();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.UnaryOperation unary = 36;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation getUnary();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Conditional conditional = 37;</code>
     */
    boolean hasConditional();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Conditional conditional = 37;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional getConditional();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ArrayAccess array_access = 38;</code>
     */
    boolean hasArrayAccess();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ArrayAccess array_access = 38;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess getArrayAccess();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.NameReference name_reference = 39;</code>
     */
    boolean hasNameReference();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.NameReference name_reference = 39;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference getNameReference();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.PropertyReference property_reference = 40;</code>
     */
    boolean hasPropertyReference();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.PropertyReference property_reference = 40;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference getPropertyReference();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Invocation invocation = 41;</code>
     */
    boolean hasInvocation();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Invocation invocation = 41;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation getInvocation();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Instantiation instantiation = 42;</code>
     */
    boolean hasInstantiation();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Instantiation instantiation = 42;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation getInstantiation();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SuperLiteral super_literal = 43;</code>
     */
    boolean hasSuperLiteral();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SuperLiteral super_literal = 43;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral getSuperLiteral();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Class class = 44;</code>
     */
    boolean hasClass_();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Class class = 44;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class getClass_();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Expression}
   */
  public static final class Expression extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Expression)
      ExpressionOrBuilder {
    // Use Expression.newBuilder() to construct.
    private Expression(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Expression(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Expression getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Expression(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              fileId_ = input.readInt32();
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = location_.toBuilder();
              }
              location_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(location_);
                location_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              synthetic_ = input.readBool();
              break;
            }
            case 32: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SideEffects value = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SideEffects.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000008;
                sideEffects_ = value;
              }
              break;
            }
            case 42: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                subBuilder = localAlias_.toBuilder();
              }
              localAlias_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(localAlias_);
                localAlias_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
            case 50: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                beforeComments_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment>();
                mutable_bitField0_ |= 0x00000020;
              }
              beforeComments_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment.PARSER, extensionRegistry));
              break;
            }
            case 58: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                afterComments_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment>();
                mutable_bitField0_ |= 0x00000040;
              }
              afterComments_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment.PARSER, extensionRegistry));
              break;
            }
            case 176: {
              expressionCase_ = 22;
              expression_ = input.readInt32();
              break;
            }
            case 186: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral.Builder subBuilder = null;
              if (expressionCase_ == 23) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral) expression_).toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral) expression_);
                expression_ = subBuilder.buildPartial();
              }
              expressionCase_ = 23;
              break;
            }
            case 194: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral.Builder subBuilder = null;
              if (expressionCase_ == 24) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral) expression_).toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral) expression_);
                expression_ = subBuilder.buildPartial();
              }
              expressionCase_ = 24;
              break;
            }
            case 202: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral.Builder subBuilder = null;
              if (expressionCase_ == 25) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral) expression_).toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral) expression_);
                expression_ = subBuilder.buildPartial();
              }
              expressionCase_ = 25;
              break;
            }
            case 210: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral.Builder subBuilder = null;
              if (expressionCase_ == 26) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral) expression_).toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral) expression_);
                expression_ = subBuilder.buildPartial();
              }
              expressionCase_ = 26;
              break;
            }
            case 216: {
              expressionCase_ = 27;
              expression_ = input.readInt32();
              break;
            }
            case 226: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral.Builder subBuilder = null;
              if (expressionCase_ == 28) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral) expression_).toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral) expression_);
                expression_ = subBuilder.buildPartial();
              }
              expressionCase_ = 28;
              break;
            }
            case 232: {
              expressionCase_ = 29;
              expression_ = input.readInt32();
              break;
            }
            case 241: {
              expressionCase_ = 30;
              expression_ = input.readDouble();
              break;
            }
            case 250: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral.Builder subBuilder = null;
              if (expressionCase_ == 31) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral) expression_).toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral) expression_);
                expression_ = subBuilder.buildPartial();
              }
              expressionCase_ = 31;
              break;
            }
            case 258: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral.Builder subBuilder = null;
              if (expressionCase_ == 32) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral) expression_).toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral) expression_);
                expression_ = subBuilder.buildPartial();
              }
              expressionCase_ = 32;
              break;
            }
            case 266: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Builder subBuilder = null;
              if (expressionCase_ == 33) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function) expression_).toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function) expression_);
                expression_ = subBuilder.buildPartial();
              }
              expressionCase_ = 33;
              break;
            }
            case 274: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment.Builder subBuilder = null;
              if (expressionCase_ == 34) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment) expression_).toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment) expression_);
                expression_ = subBuilder.buildPartial();
              }
              expressionCase_ = 34;
              break;
            }
            case 282: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.Builder subBuilder = null;
              if (expressionCase_ == 35) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation) expression_).toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation) expression_);
                expression_ = subBuilder.buildPartial();
              }
              expressionCase_ = 35;
              break;
            }
            case 290: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.Builder subBuilder = null;
              if (expressionCase_ == 36) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation) expression_).toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation) expression_);
                expression_ = subBuilder.buildPartial();
              }
              expressionCase_ = 36;
              break;
            }
            case 298: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional.Builder subBuilder = null;
              if (expressionCase_ == 37) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional) expression_).toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional) expression_);
                expression_ = subBuilder.buildPartial();
              }
              expressionCase_ = 37;
              break;
            }
            case 306: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess.Builder subBuilder = null;
              if (expressionCase_ == 38) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess) expression_).toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess) expression_);
                expression_ = subBuilder.buildPartial();
              }
              expressionCase_ = 38;
              break;
            }
            case 314: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference.Builder subBuilder = null;
              if (expressionCase_ == 39) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference) expression_).toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference) expression_);
                expression_ = subBuilder.buildPartial();
              }
              expressionCase_ = 39;
              break;
            }
            case 322: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference.Builder subBuilder = null;
              if (expressionCase_ == 40) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference) expression_).toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference) expression_);
                expression_ = subBuilder.buildPartial();
              }
              expressionCase_ = 40;
              break;
            }
            case 330: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation.Builder subBuilder = null;
              if (expressionCase_ == 41) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation) expression_).toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation) expression_);
                expression_ = subBuilder.buildPartial();
              }
              expressionCase_ = 41;
              break;
            }
            case 338: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation.Builder subBuilder = null;
              if (expressionCase_ == 42) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation) expression_).toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation) expression_);
                expression_ = subBuilder.buildPartial();
              }
              expressionCase_ = 42;
              break;
            }
            case 346: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral.Builder subBuilder = null;
              if (expressionCase_ == 43) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral) expression_).toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral) expression_);
                expression_ = subBuilder.buildPartial();
              }
              expressionCase_ = 43;
              break;
            }
            case 354: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class.Builder subBuilder = null;
              if (expressionCase_ == 44) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class) expression_).toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class) expression_);
                expression_ = subBuilder.buildPartial();
              }
              expressionCase_ = 44;
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          beforeComments_ = java.util.Collections.unmodifiableList(beforeComments_);
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          afterComments_ = java.util.Collections.unmodifiableList(afterComments_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Expression> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Expression>() {
      public Expression parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Expression(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    private int expressionCase_ = 0;
    private java.lang.Object expression_;
    public enum ExpressionCase
        implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
      SIMPLE_NAME_REFERENCE(22),
      THIS_LITERAL(23),
      NULL_LITERAL(24),
      TRUE_LITERAL(25),
      FALSE_LITERAL(26),
      STRING_LITERAL(27),
      REG_EXP_LITERAL(28),
      INT_LITERAL(29),
      DOUBLE_LITERAL(30),
      ARRAY_LITERAL(31),
      OBJECT_LITERAL(32),
      FUNCTION(33),
      DOC_COMMENT(34),
      BINARY(35),
      UNARY(36),
      CONDITIONAL(37),
      ARRAY_ACCESS(38),
      NAME_REFERENCE(39),
      PROPERTY_REFERENCE(40),
      INVOCATION(41),
      INSTANTIATION(42),
      SUPER_LITERAL(43),
      CLASS(44),
      EXPRESSION_NOT_SET(0);
      private int value = 0;
      private ExpressionCase(int value) {
        this.value = value;
      }
      public static ExpressionCase valueOf(int value) {
        switch (value) {
          case 22: return SIMPLE_NAME_REFERENCE;
          case 23: return THIS_LITERAL;
          case 24: return NULL_LITERAL;
          case 25: return TRUE_LITERAL;
          case 26: return FALSE_LITERAL;
          case 27: return STRING_LITERAL;
          case 28: return REG_EXP_LITERAL;
          case 29: return INT_LITERAL;
          case 30: return DOUBLE_LITERAL;
          case 31: return ARRAY_LITERAL;
          case 32: return OBJECT_LITERAL;
          case 33: return FUNCTION;
          case 34: return DOC_COMMENT;
          case 35: return BINARY;
          case 36: return UNARY;
          case 37: return CONDITIONAL;
          case 38: return ARRAY_ACCESS;
          case 39: return NAME_REFERENCE;
          case 40: return PROPERTY_REFERENCE;
          case 41: return INVOCATION;
          case 42: return INSTANTIATION;
          case 43: return SUPER_LITERAL;
          case 44: return CLASS;
          case 0: return EXPRESSION_NOT_SET;
          default: throw new java.lang.IllegalArgumentException(
            "Value is undefined for this oneof enum.");
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public ExpressionCase
    getExpressionCase() {
      return ExpressionCase.valueOf(
          expressionCase_);
    }

    public static final int FILEID_FIELD_NUMBER = 1;
    private int fileId_;
    /**
     * <code>optional int32 fileId = 1;</code>
     */
    public boolean hasFileId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int32 fileId = 1;</code>
     */
    public int getFileId() {
      return fileId_;
    }

    public static final int LOCATION_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location location_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 2;</code>
     */
    public boolean hasLocation() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location getLocation() {
      return location_;
    }

    public static final int SYNTHETIC_FIELD_NUMBER = 3;
    private boolean synthetic_;
    /**
     * <code>optional bool synthetic = 3 [default = false];</code>
     */
    public boolean hasSynthetic() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional bool synthetic = 3 [default = false];</code>
     */
    public boolean getSynthetic() {
      return synthetic_;
    }

    public static final int SIDE_EFFECTS_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SideEffects sideEffects_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SideEffects side_effects = 4 [default = AFFECTS_STATE];</code>
     */
    public boolean hasSideEffects() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SideEffects side_effects = 4 [default = AFFECTS_STATE];</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SideEffects getSideEffects() {
      return sideEffects_;
    }

    public static final int LOCAL_ALIAS_FIELD_NUMBER = 5;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule localAlias_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.JsImportedModule local_alias = 5;</code>
     */
    public boolean hasLocalAlias() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.JsImportedModule local_alias = 5;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule getLocalAlias() {
      return localAlias_;
    }

    public static final int BEFORE_COMMENTS_FIELD_NUMBER = 6;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> beforeComments_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 6;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> getBeforeCommentsList() {
      return beforeComments_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 6;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CommentOrBuilder> 
        getBeforeCommentsOrBuilderList() {
      return beforeComments_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 6;</code>
     */
    public int getBeforeCommentsCount() {
      return beforeComments_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 6;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment getBeforeComments(int index) {
      return beforeComments_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 6;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CommentOrBuilder getBeforeCommentsOrBuilder(
        int index) {
      return beforeComments_.get(index);
    }

    public static final int AFTER_COMMENTS_FIELD_NUMBER = 7;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> afterComments_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 7;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> getAfterCommentsList() {
      return afterComments_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 7;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CommentOrBuilder> 
        getAfterCommentsOrBuilderList() {
      return afterComments_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 7;</code>
     */
    public int getAfterCommentsCount() {
      return afterComments_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 7;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment getAfterComments(int index) {
      return afterComments_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 7;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CommentOrBuilder getAfterCommentsOrBuilder(
        int index) {
      return afterComments_.get(index);
    }

    public static final int SIMPLE_NAME_REFERENCE_FIELD_NUMBER = 22;
    /**
     * <code>optional int32 simple_name_reference = 22;</code>
     */
    public boolean hasSimpleNameReference() {
      return expressionCase_ == 22;
    }
    /**
     * <code>optional int32 simple_name_reference = 22;</code>
     */
    public int getSimpleNameReference() {
      if (expressionCase_ == 22) {
        return (java.lang.Integer) expression_;
      }
      return 0;
    }

    public static final int THIS_LITERAL_FIELD_NUMBER = 23;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ThisLiteral this_literal = 23;</code>
     */
    public boolean hasThisLiteral() {
      return expressionCase_ == 23;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ThisLiteral this_literal = 23;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral getThisLiteral() {
      if (expressionCase_ == 23) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral) expression_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral.getDefaultInstance();
    }

    public static final int NULL_LITERAL_FIELD_NUMBER = 24;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.NullLiteral null_literal = 24;</code>
     */
    public boolean hasNullLiteral() {
      return expressionCase_ == 24;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.NullLiteral null_literal = 24;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral getNullLiteral() {
      if (expressionCase_ == 24) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral) expression_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral.getDefaultInstance();
    }

    public static final int TRUE_LITERAL_FIELD_NUMBER = 25;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.TrueLiteral true_literal = 25;</code>
     */
    public boolean hasTrueLiteral() {
      return expressionCase_ == 25;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.TrueLiteral true_literal = 25;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral getTrueLiteral() {
      if (expressionCase_ == 25) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral) expression_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral.getDefaultInstance();
    }

    public static final int FALSE_LITERAL_FIELD_NUMBER = 26;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.FalseLiteral false_literal = 26;</code>
     */
    public boolean hasFalseLiteral() {
      return expressionCase_ == 26;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.FalseLiteral false_literal = 26;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral getFalseLiteral() {
      if (expressionCase_ == 26) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral) expression_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral.getDefaultInstance();
    }

    public static final int STRING_LITERAL_FIELD_NUMBER = 27;
    /**
     * <code>optional int32 string_literal = 27;</code>
     */
    public boolean hasStringLiteral() {
      return expressionCase_ == 27;
    }
    /**
     * <code>optional int32 string_literal = 27;</code>
     */
    public int getStringLiteral() {
      if (expressionCase_ == 27) {
        return (java.lang.Integer) expression_;
      }
      return 0;
    }

    public static final int REG_EXP_LITERAL_FIELD_NUMBER = 28;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.RegExpLiteral reg_exp_literal = 28;</code>
     */
    public boolean hasRegExpLiteral() {
      return expressionCase_ == 28;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.RegExpLiteral reg_exp_literal = 28;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral getRegExpLiteral() {
      if (expressionCase_ == 28) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral) expression_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral.getDefaultInstance();
    }

    public static final int INT_LITERAL_FIELD_NUMBER = 29;
    /**
     * <code>optional int32 int_literal = 29;</code>
     */
    public boolean hasIntLiteral() {
      return expressionCase_ == 29;
    }
    /**
     * <code>optional int32 int_literal = 29;</code>
     */
    public int getIntLiteral() {
      if (expressionCase_ == 29) {
        return (java.lang.Integer) expression_;
      }
      return 0;
    }

    public static final int DOUBLE_LITERAL_FIELD_NUMBER = 30;
    /**
     * <code>optional double double_literal = 30;</code>
     */
    public boolean hasDoubleLiteral() {
      return expressionCase_ == 30;
    }
    /**
     * <code>optional double double_literal = 30;</code>
     */
    public double getDoubleLiteral() {
      if (expressionCase_ == 30) {
        return (java.lang.Double) expression_;
      }
      return 0D;
    }

    public static final int ARRAY_LITERAL_FIELD_NUMBER = 31;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ArrayLiteral array_literal = 31;</code>
     */
    public boolean hasArrayLiteral() {
      return expressionCase_ == 31;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ArrayLiteral array_literal = 31;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral getArrayLiteral() {
      if (expressionCase_ == 31) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral) expression_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral.getDefaultInstance();
    }

    public static final int OBJECT_LITERAL_FIELD_NUMBER = 32;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteral object_literal = 32;</code>
     */
    public boolean hasObjectLiteral() {
      return expressionCase_ == 32;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteral object_literal = 32;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral getObjectLiteral() {
      if (expressionCase_ == 32) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral) expression_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral.getDefaultInstance();
    }

    public static final int FUNCTION_FIELD_NUMBER = 33;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Function function = 33;</code>
     */
    public boolean hasFunction() {
      return expressionCase_ == 33;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Function function = 33;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function getFunction() {
      if (expressionCase_ == 33) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function) expression_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.getDefaultInstance();
    }

    public static final int DOC_COMMENT_FIELD_NUMBER = 34;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.DocComment doc_comment = 34;</code>
     */
    public boolean hasDocComment() {
      return expressionCase_ == 34;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.DocComment doc_comment = 34;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment getDocComment() {
      if (expressionCase_ == 34) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment) expression_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment.getDefaultInstance();
    }

    public static final int BINARY_FIELD_NUMBER = 35;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.BinaryOperation binary = 35;</code>
     */
    public boolean hasBinary() {
      return expressionCase_ == 35;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.BinaryOperation binary = 35;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation getBinary() {
      if (expressionCase_ == 35) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation) expression_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.getDefaultInstance();
    }

    public static final int UNARY_FIELD_NUMBER = 36;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.UnaryOperation unary = 36;</code>
     */
    public boolean hasUnary() {
      return expressionCase_ == 36;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.UnaryOperation unary = 36;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation getUnary() {
      if (expressionCase_ == 36) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation) expression_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.getDefaultInstance();
    }

    public static final int CONDITIONAL_FIELD_NUMBER = 37;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Conditional conditional = 37;</code>
     */
    public boolean hasConditional() {
      return expressionCase_ == 37;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Conditional conditional = 37;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional getConditional() {
      if (expressionCase_ == 37) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional) expression_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional.getDefaultInstance();
    }

    public static final int ARRAY_ACCESS_FIELD_NUMBER = 38;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ArrayAccess array_access = 38;</code>
     */
    public boolean hasArrayAccess() {
      return expressionCase_ == 38;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ArrayAccess array_access = 38;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess getArrayAccess() {
      if (expressionCase_ == 38) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess) expression_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess.getDefaultInstance();
    }

    public static final int NAME_REFERENCE_FIELD_NUMBER = 39;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.NameReference name_reference = 39;</code>
     */
    public boolean hasNameReference() {
      return expressionCase_ == 39;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.NameReference name_reference = 39;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference getNameReference() {
      if (expressionCase_ == 39) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference) expression_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference.getDefaultInstance();
    }

    public static final int PROPERTY_REFERENCE_FIELD_NUMBER = 40;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.PropertyReference property_reference = 40;</code>
     */
    public boolean hasPropertyReference() {
      return expressionCase_ == 40;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.PropertyReference property_reference = 40;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference getPropertyReference() {
      if (expressionCase_ == 40) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference) expression_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference.getDefaultInstance();
    }

    public static final int INVOCATION_FIELD_NUMBER = 41;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Invocation invocation = 41;</code>
     */
    public boolean hasInvocation() {
      return expressionCase_ == 41;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Invocation invocation = 41;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation getInvocation() {
      if (expressionCase_ == 41) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation) expression_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation.getDefaultInstance();
    }

    public static final int INSTANTIATION_FIELD_NUMBER = 42;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Instantiation instantiation = 42;</code>
     */
    public boolean hasInstantiation() {
      return expressionCase_ == 42;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Instantiation instantiation = 42;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation getInstantiation() {
      if (expressionCase_ == 42) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation) expression_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation.getDefaultInstance();
    }

    public static final int SUPER_LITERAL_FIELD_NUMBER = 43;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SuperLiteral super_literal = 43;</code>
     */
    public boolean hasSuperLiteral() {
      return expressionCase_ == 43;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SuperLiteral super_literal = 43;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral getSuperLiteral() {
      if (expressionCase_ == 43) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral) expression_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral.getDefaultInstance();
    }

    public static final int CLASS_FIELD_NUMBER = 44;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Class class = 44;</code>
     */
    public boolean hasClass_() {
      return expressionCase_ == 44;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Class class = 44;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class getClass_() {
      if (expressionCase_ == 44) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class) expression_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class.getDefaultInstance();
    }

    private void initFields() {
      fileId_ = 0;
      location_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance();
      synthetic_ = false;
      sideEffects_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SideEffects.AFFECTS_STATE;
      localAlias_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule.getDefaultInstance();
      beforeComments_ = java.util.Collections.emptyList();
      afterComments_ = 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 (hasLocation()) {
        if (!getLocation().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasLocalAlias()) {
        if (!getLocalAlias().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getBeforeCommentsCount(); i++) {
        if (!getBeforeComments(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getAfterCommentsCount(); i++) {
        if (!getAfterComments(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasRegExpLiteral()) {
        if (!getRegExpLiteral().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasArrayLiteral()) {
        if (!getArrayLiteral().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasObjectLiteral()) {
        if (!getObjectLiteral().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasFunction()) {
        if (!getFunction().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasDocComment()) {
        if (!getDocComment().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasBinary()) {
        if (!getBinary().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasUnary()) {
        if (!getUnary().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasConditional()) {
        if (!getConditional().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasArrayAccess()) {
        if (!getArrayAccess().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasNameReference()) {
        if (!getNameReference().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasPropertyReference()) {
        if (!getPropertyReference().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasInvocation()) {
        if (!getInvocation().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasInstantiation()) {
        if (!getInstantiation().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasClass_()) {
        if (!getClass_().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, fileId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, location_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBool(3, synthetic_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeEnum(4, sideEffects_.getNumber());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(5, localAlias_);
      }
      for (int i = 0; i < beforeComments_.size(); i++) {
        output.writeMessage(6, beforeComments_.get(i));
      }
      for (int i = 0; i < afterComments_.size(); i++) {
        output.writeMessage(7, afterComments_.get(i));
      }
      if (expressionCase_ == 22) {
        output.writeInt32(
            22, (int)((java.lang.Integer) expression_));
      }
      if (expressionCase_ == 23) {
        output.writeMessage(23, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral) expression_);
      }
      if (expressionCase_ == 24) {
        output.writeMessage(24, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral) expression_);
      }
      if (expressionCase_ == 25) {
        output.writeMessage(25, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral) expression_);
      }
      if (expressionCase_ == 26) {
        output.writeMessage(26, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral) expression_);
      }
      if (expressionCase_ == 27) {
        output.writeInt32(
            27, (int)((java.lang.Integer) expression_));
      }
      if (expressionCase_ == 28) {
        output.writeMessage(28, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral) expression_);
      }
      if (expressionCase_ == 29) {
        output.writeInt32(
            29, (int)((java.lang.Integer) expression_));
      }
      if (expressionCase_ == 30) {
        output.writeDouble(
            30, (double)((java.lang.Double) expression_));
      }
      if (expressionCase_ == 31) {
        output.writeMessage(31, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral) expression_);
      }
      if (expressionCase_ == 32) {
        output.writeMessage(32, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral) expression_);
      }
      if (expressionCase_ == 33) {
        output.writeMessage(33, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function) expression_);
      }
      if (expressionCase_ == 34) {
        output.writeMessage(34, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment) expression_);
      }
      if (expressionCase_ == 35) {
        output.writeMessage(35, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation) expression_);
      }
      if (expressionCase_ == 36) {
        output.writeMessage(36, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation) expression_);
      }
      if (expressionCase_ == 37) {
        output.writeMessage(37, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional) expression_);
      }
      if (expressionCase_ == 38) {
        output.writeMessage(38, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess) expression_);
      }
      if (expressionCase_ == 39) {
        output.writeMessage(39, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference) expression_);
      }
      if (expressionCase_ == 40) {
        output.writeMessage(40, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference) expression_);
      }
      if (expressionCase_ == 41) {
        output.writeMessage(41, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation) expression_);
      }
      if (expressionCase_ == 42) {
        output.writeMessage(42, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation) expression_);
      }
      if (expressionCase_ == 43) {
        output.writeMessage(43, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral) expression_);
      }
      if (expressionCase_ == 44) {
        output.writeMessage(44, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class) 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
          .computeInt32Size(1, fileId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, location_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(3, synthetic_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(4, sideEffects_.getNumber());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, localAlias_);
      }
      for (int i = 0; i < beforeComments_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(6, beforeComments_.get(i));
      }
      for (int i = 0; i < afterComments_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(7, afterComments_.get(i));
      }
      if (expressionCase_ == 22) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(
              22, (int)((java.lang.Integer) expression_));
      }
      if (expressionCase_ == 23) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(23, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral) expression_);
      }
      if (expressionCase_ == 24) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(24, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral) expression_);
      }
      if (expressionCase_ == 25) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(25, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral) expression_);
      }
      if (expressionCase_ == 26) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(26, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral) expression_);
      }
      if (expressionCase_ == 27) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(
              27, (int)((java.lang.Integer) expression_));
      }
      if (expressionCase_ == 28) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(28, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral) expression_);
      }
      if (expressionCase_ == 29) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(
              29, (int)((java.lang.Integer) expression_));
      }
      if (expressionCase_ == 30) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeDoubleSize(
              30, (double)((java.lang.Double) expression_));
      }
      if (expressionCase_ == 31) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(31, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral) expression_);
      }
      if (expressionCase_ == 32) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(32, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral) expression_);
      }
      if (expressionCase_ == 33) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(33, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function) expression_);
      }
      if (expressionCase_ == 34) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(34, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment) expression_);
      }
      if (expressionCase_ == 35) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(35, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation) expression_);
      }
      if (expressionCase_ == 36) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(36, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation) expression_);
      }
      if (expressionCase_ == 37) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(37, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional) expression_);
      }
      if (expressionCase_ == 38) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(38, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess) expression_);
      }
      if (expressionCase_ == 39) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(39, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference) expression_);
      }
      if (expressionCase_ == 40) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(40, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference) expression_);
      }
      if (expressionCase_ == 41) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(41, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation) expression_);
      }
      if (expressionCase_ == 42) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(42, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation) expression_);
      }
      if (expressionCase_ == 43) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(43, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral) expression_);
      }
      if (expressionCase_ == 44) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(44, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class) 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.serialization.js.ast.JsAstProtoBuf.Expression parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Expression}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Expression)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        fileId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        location_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        synthetic_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        sideEffects_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SideEffects.AFFECTS_STATE;
        bitField0_ = (bitField0_ & ~0x00000008);
        localAlias_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000010);
        beforeComments_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        afterComments_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        expressionCase_ = 0;
        expression_ = null;
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.fileId_ = fileId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.location_ = location_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.synthetic_ = synthetic_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.sideEffects_ = sideEffects_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.localAlias_ = localAlias_;
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          beforeComments_ = java.util.Collections.unmodifiableList(beforeComments_);
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.beforeComments_ = beforeComments_;
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          afterComments_ = java.util.Collections.unmodifiableList(afterComments_);
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.afterComments_ = afterComments_;
        if (expressionCase_ == 22) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 23) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 24) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 25) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 26) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 27) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 28) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 29) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 30) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 31) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 32) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 33) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 34) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 35) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 36) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 37) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 38) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 39) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 40) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 41) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 42) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 43) {
          result.expression_ = expression_;
        }
        if (expressionCase_ == 44) {
          result.expression_ = expression_;
        }
        result.bitField0_ = to_bitField0_;
        result.expressionCase_ = expressionCase_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) return this;
        if (other.hasFileId()) {
          setFileId(other.getFileId());
        }
        if (other.hasLocation()) {
          mergeLocation(other.getLocation());
        }
        if (other.hasSynthetic()) {
          setSynthetic(other.getSynthetic());
        }
        if (other.hasSideEffects()) {
          setSideEffects(other.getSideEffects());
        }
        if (other.hasLocalAlias()) {
          mergeLocalAlias(other.getLocalAlias());
        }
        if (!other.beforeComments_.isEmpty()) {
          if (beforeComments_.isEmpty()) {
            beforeComments_ = other.beforeComments_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureBeforeCommentsIsMutable();
            beforeComments_.addAll(other.beforeComments_);
          }
          
        }
        if (!other.afterComments_.isEmpty()) {
          if (afterComments_.isEmpty()) {
            afterComments_ = other.afterComments_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureAfterCommentsIsMutable();
            afterComments_.addAll(other.afterComments_);
          }
          
        }
        switch (other.getExpressionCase()) {
          case SIMPLE_NAME_REFERENCE: {
            setSimpleNameReference(other.getSimpleNameReference());
            break;
          }
          case THIS_LITERAL: {
            mergeThisLiteral(other.getThisLiteral());
            break;
          }
          case NULL_LITERAL: {
            mergeNullLiteral(other.getNullLiteral());
            break;
          }
          case TRUE_LITERAL: {
            mergeTrueLiteral(other.getTrueLiteral());
            break;
          }
          case FALSE_LITERAL: {
            mergeFalseLiteral(other.getFalseLiteral());
            break;
          }
          case STRING_LITERAL: {
            setStringLiteral(other.getStringLiteral());
            break;
          }
          case REG_EXP_LITERAL: {
            mergeRegExpLiteral(other.getRegExpLiteral());
            break;
          }
          case INT_LITERAL: {
            setIntLiteral(other.getIntLiteral());
            break;
          }
          case DOUBLE_LITERAL: {
            setDoubleLiteral(other.getDoubleLiteral());
            break;
          }
          case ARRAY_LITERAL: {
            mergeArrayLiteral(other.getArrayLiteral());
            break;
          }
          case OBJECT_LITERAL: {
            mergeObjectLiteral(other.getObjectLiteral());
            break;
          }
          case FUNCTION: {
            mergeFunction(other.getFunction());
            break;
          }
          case DOC_COMMENT: {
            mergeDocComment(other.getDocComment());
            break;
          }
          case BINARY: {
            mergeBinary(other.getBinary());
            break;
          }
          case UNARY: {
            mergeUnary(other.getUnary());
            break;
          }
          case CONDITIONAL: {
            mergeConditional(other.getConditional());
            break;
          }
          case ARRAY_ACCESS: {
            mergeArrayAccess(other.getArrayAccess());
            break;
          }
          case NAME_REFERENCE: {
            mergeNameReference(other.getNameReference());
            break;
          }
          case PROPERTY_REFERENCE: {
            mergePropertyReference(other.getPropertyReference());
            break;
          }
          case INVOCATION: {
            mergeInvocation(other.getInvocation());
            break;
          }
          case INSTANTIATION: {
            mergeInstantiation(other.getInstantiation());
            break;
          }
          case SUPER_LITERAL: {
            mergeSuperLiteral(other.getSuperLiteral());
            break;
          }
          case CLASS: {
            mergeClass_(other.getClass_());
            break;
          }
          case EXPRESSION_NOT_SET: {
            break;
          }
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (hasLocation()) {
          if (!getLocation().isInitialized()) {
            
            return false;
          }
        }
        if (hasLocalAlias()) {
          if (!getLocalAlias().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getBeforeCommentsCount(); i++) {
          if (!getBeforeComments(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getAfterCommentsCount(); i++) {
          if (!getAfterComments(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasRegExpLiteral()) {
          if (!getRegExpLiteral().isInitialized()) {
            
            return false;
          }
        }
        if (hasArrayLiteral()) {
          if (!getArrayLiteral().isInitialized()) {
            
            return false;
          }
        }
        if (hasObjectLiteral()) {
          if (!getObjectLiteral().isInitialized()) {
            
            return false;
          }
        }
        if (hasFunction()) {
          if (!getFunction().isInitialized()) {
            
            return false;
          }
        }
        if (hasDocComment()) {
          if (!getDocComment().isInitialized()) {
            
            return false;
          }
        }
        if (hasBinary()) {
          if (!getBinary().isInitialized()) {
            
            return false;
          }
        }
        if (hasUnary()) {
          if (!getUnary().isInitialized()) {
            
            return false;
          }
        }
        if (hasConditional()) {
          if (!getConditional().isInitialized()) {
            
            return false;
          }
        }
        if (hasArrayAccess()) {
          if (!getArrayAccess().isInitialized()) {
            
            return false;
          }
        }
        if (hasNameReference()) {
          if (!getNameReference().isInitialized()) {
            
            return false;
          }
        }
        if (hasPropertyReference()) {
          if (!getPropertyReference().isInitialized()) {
            
            return false;
          }
        }
        if (hasInvocation()) {
          if (!getInvocation().isInitialized()) {
            
            return false;
          }
        }
        if (hasInstantiation()) {
          if (!getInstantiation().isInitialized()) {
            
            return false;
          }
        }
        if (hasClass_()) {
          if (!getClass_().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.serialization.js.ast.JsAstProtoBuf.Expression parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int expressionCase_ = 0;
      private java.lang.Object expression_;
      public ExpressionCase
          getExpressionCase() {
        return ExpressionCase.valueOf(
            expressionCase_);
      }

      public Builder clearExpression() {
        expressionCase_ = 0;
        expression_ = null;
        return this;
      }

      private int bitField0_;

      private int fileId_ ;
      /**
       * <code>optional int32 fileId = 1;</code>
       */
      public boolean hasFileId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int32 fileId = 1;</code>
       */
      public int getFileId() {
        return fileId_;
      }
      /**
       * <code>optional int32 fileId = 1;</code>
       */
      public Builder setFileId(int value) {
        bitField0_ |= 0x00000001;
        fileId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 fileId = 1;</code>
       */
      public Builder clearFileId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        fileId_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location location_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 2;</code>
       */
      public boolean hasLocation() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location getLocation() {
        return location_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 2;</code>
       */
      public Builder setLocation(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location value) {
        if (value == null) {
          throw new NullPointerException();
        }
        location_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 2;</code>
       */
      public Builder setLocation(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.Builder builderForValue) {
        location_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 2;</code>
       */
      public Builder mergeLocation(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            location_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance()) {
          location_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.newBuilder(location_).mergeFrom(value).buildPartial();
        } else {
          location_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 2;</code>
       */
      public Builder clearLocation() {
        location_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance();

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

      private boolean synthetic_ ;
      /**
       * <code>optional bool synthetic = 3 [default = false];</code>
       */
      public boolean hasSynthetic() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional bool synthetic = 3 [default = false];</code>
       */
      public boolean getSynthetic() {
        return synthetic_;
      }
      /**
       * <code>optional bool synthetic = 3 [default = false];</code>
       */
      public Builder setSynthetic(boolean value) {
        bitField0_ |= 0x00000004;
        synthetic_ = value;
        
        return this;
      }
      /**
       * <code>optional bool synthetic = 3 [default = false];</code>
       */
      public Builder clearSynthetic() {
        bitField0_ = (bitField0_ & ~0x00000004);
        synthetic_ = false;
        
        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SideEffects sideEffects_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SideEffects.AFFECTS_STATE;
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SideEffects side_effects = 4 [default = AFFECTS_STATE];</code>
       */
      public boolean hasSideEffects() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SideEffects side_effects = 4 [default = AFFECTS_STATE];</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SideEffects getSideEffects() {
        return sideEffects_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SideEffects side_effects = 4 [default = AFFECTS_STATE];</code>
       */
      public Builder setSideEffects(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SideEffects value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000008;
        sideEffects_ = value;
        
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SideEffects side_effects = 4 [default = AFFECTS_STATE];</code>
       */
      public Builder clearSideEffects() {
        bitField0_ = (bitField0_ & ~0x00000008);
        sideEffects_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SideEffects.AFFECTS_STATE;
        
        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule localAlias_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.JsImportedModule local_alias = 5;</code>
       */
      public boolean hasLocalAlias() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.JsImportedModule local_alias = 5;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule getLocalAlias() {
        return localAlias_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.JsImportedModule local_alias = 5;</code>
       */
      public Builder setLocalAlias(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule value) {
        if (value == null) {
          throw new NullPointerException();
        }
        localAlias_ = value;

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.JsImportedModule local_alias = 5;</code>
       */
      public Builder setLocalAlias(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule.Builder builderForValue) {
        localAlias_ = builderForValue.build();

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.JsImportedModule local_alias = 5;</code>
       */
      public Builder mergeLocalAlias(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule value) {
        if (((bitField0_ & 0x00000010) == 0x00000010) &&
            localAlias_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule.getDefaultInstance()) {
          localAlias_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule.newBuilder(localAlias_).mergeFrom(value).buildPartial();
        } else {
          localAlias_ = value;
        }

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.JsImportedModule local_alias = 5;</code>
       */
      public Builder clearLocalAlias() {
        localAlias_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.JsImportedModule.getDefaultInstance();

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

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> beforeComments_ =
        java.util.Collections.emptyList();
      private void ensureBeforeCommentsIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          beforeComments_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment>(beforeComments_);
          bitField0_ |= 0x00000020;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 6;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> getBeforeCommentsList() {
        return java.util.Collections.unmodifiableList(beforeComments_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 6;</code>
       */
      public int getBeforeCommentsCount() {
        return beforeComments_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 6;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment getBeforeComments(int index) {
        return beforeComments_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 6;</code>
       */
      public Builder setBeforeComments(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureBeforeCommentsIsMutable();
        beforeComments_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 6;</code>
       */
      public Builder setBeforeComments(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment.Builder builderForValue) {
        ensureBeforeCommentsIsMutable();
        beforeComments_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 6;</code>
       */
      public Builder addBeforeComments(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureBeforeCommentsIsMutable();
        beforeComments_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 6;</code>
       */
      public Builder addBeforeComments(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureBeforeCommentsIsMutable();
        beforeComments_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 6;</code>
       */
      public Builder addBeforeComments(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment.Builder builderForValue) {
        ensureBeforeCommentsIsMutable();
        beforeComments_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 6;</code>
       */
      public Builder addBeforeComments(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment.Builder builderForValue) {
        ensureBeforeCommentsIsMutable();
        beforeComments_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 6;</code>
       */
      public Builder addAllBeforeComments(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> values) {
        ensureBeforeCommentsIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, beforeComments_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 6;</code>
       */
      public Builder clearBeforeComments() {
        beforeComments_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 6;</code>
       */
      public Builder removeBeforeComments(int index) {
        ensureBeforeCommentsIsMutable();
        beforeComments_.remove(index);

        return this;
      }

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> afterComments_ =
        java.util.Collections.emptyList();
      private void ensureAfterCommentsIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          afterComments_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment>(afterComments_);
          bitField0_ |= 0x00000040;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 7;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> getAfterCommentsList() {
        return java.util.Collections.unmodifiableList(afterComments_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 7;</code>
       */
      public int getAfterCommentsCount() {
        return afterComments_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 7;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment getAfterComments(int index) {
        return afterComments_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 7;</code>
       */
      public Builder setAfterComments(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureAfterCommentsIsMutable();
        afterComments_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 7;</code>
       */
      public Builder setAfterComments(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment.Builder builderForValue) {
        ensureAfterCommentsIsMutable();
        afterComments_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 7;</code>
       */
      public Builder addAfterComments(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureAfterCommentsIsMutable();
        afterComments_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 7;</code>
       */
      public Builder addAfterComments(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureAfterCommentsIsMutable();
        afterComments_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 7;</code>
       */
      public Builder addAfterComments(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment.Builder builderForValue) {
        ensureAfterCommentsIsMutable();
        afterComments_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 7;</code>
       */
      public Builder addAfterComments(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment.Builder builderForValue) {
        ensureAfterCommentsIsMutable();
        afterComments_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 7;</code>
       */
      public Builder addAllAfterComments(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> values) {
        ensureAfterCommentsIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, afterComments_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 7;</code>
       */
      public Builder clearAfterComments() {
        afterComments_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 7;</code>
       */
      public Builder removeAfterComments(int index) {
        ensureAfterCommentsIsMutable();
        afterComments_.remove(index);

        return this;
      }

      /**
       * <code>optional int32 simple_name_reference = 22;</code>
       */
      public boolean hasSimpleNameReference() {
        return expressionCase_ == 22;
      }
      /**
       * <code>optional int32 simple_name_reference = 22;</code>
       */
      public int getSimpleNameReference() {
        if (expressionCase_ == 22) {
          return (java.lang.Integer) expression_;
        }
        return 0;
      }
      /**
       * <code>optional int32 simple_name_reference = 22;</code>
       */
      public Builder setSimpleNameReference(int value) {
        expressionCase_ = 22;
        expression_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 simple_name_reference = 22;</code>
       */
      public Builder clearSimpleNameReference() {
        if (expressionCase_ == 22) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ThisLiteral this_literal = 23;</code>
       */
      public boolean hasThisLiteral() {
        return expressionCase_ == 23;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ThisLiteral this_literal = 23;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral getThisLiteral() {
        if (expressionCase_ == 23) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral) expression_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ThisLiteral this_literal = 23;</code>
       */
      public Builder setThisLiteral(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        expressionCase_ = 23;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ThisLiteral this_literal = 23;</code>
       */
      public Builder setThisLiteral(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral.Builder builderForValue) {
        expression_ = builderForValue.build();

        expressionCase_ = 23;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ThisLiteral this_literal = 23;</code>
       */
      public Builder mergeThisLiteral(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral value) {
        if (expressionCase_ == 23 &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral.getDefaultInstance()) {
          expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral) expression_)
              .mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        expressionCase_ = 23;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ThisLiteral this_literal = 23;</code>
       */
      public Builder clearThisLiteral() {
        if (expressionCase_ == 23) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.NullLiteral null_literal = 24;</code>
       */
      public boolean hasNullLiteral() {
        return expressionCase_ == 24;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.NullLiteral null_literal = 24;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral getNullLiteral() {
        if (expressionCase_ == 24) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral) expression_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.NullLiteral null_literal = 24;</code>
       */
      public Builder setNullLiteral(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        expressionCase_ = 24;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.NullLiteral null_literal = 24;</code>
       */
      public Builder setNullLiteral(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral.Builder builderForValue) {
        expression_ = builderForValue.build();

        expressionCase_ = 24;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.NullLiteral null_literal = 24;</code>
       */
      public Builder mergeNullLiteral(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral value) {
        if (expressionCase_ == 24 &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral.getDefaultInstance()) {
          expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral) expression_)
              .mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        expressionCase_ = 24;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.NullLiteral null_literal = 24;</code>
       */
      public Builder clearNullLiteral() {
        if (expressionCase_ == 24) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.TrueLiteral true_literal = 25;</code>
       */
      public boolean hasTrueLiteral() {
        return expressionCase_ == 25;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.TrueLiteral true_literal = 25;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral getTrueLiteral() {
        if (expressionCase_ == 25) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral) expression_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.TrueLiteral true_literal = 25;</code>
       */
      public Builder setTrueLiteral(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        expressionCase_ = 25;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.TrueLiteral true_literal = 25;</code>
       */
      public Builder setTrueLiteral(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral.Builder builderForValue) {
        expression_ = builderForValue.build();

        expressionCase_ = 25;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.TrueLiteral true_literal = 25;</code>
       */
      public Builder mergeTrueLiteral(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral value) {
        if (expressionCase_ == 25 &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral.getDefaultInstance()) {
          expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral) expression_)
              .mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        expressionCase_ = 25;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.TrueLiteral true_literal = 25;</code>
       */
      public Builder clearTrueLiteral() {
        if (expressionCase_ == 25) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.FalseLiteral false_literal = 26;</code>
       */
      public boolean hasFalseLiteral() {
        return expressionCase_ == 26;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.FalseLiteral false_literal = 26;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral getFalseLiteral() {
        if (expressionCase_ == 26) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral) expression_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.FalseLiteral false_literal = 26;</code>
       */
      public Builder setFalseLiteral(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        expressionCase_ = 26;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.FalseLiteral false_literal = 26;</code>
       */
      public Builder setFalseLiteral(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral.Builder builderForValue) {
        expression_ = builderForValue.build();

        expressionCase_ = 26;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.FalseLiteral false_literal = 26;</code>
       */
      public Builder mergeFalseLiteral(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral value) {
        if (expressionCase_ == 26 &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral.getDefaultInstance()) {
          expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral) expression_)
              .mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        expressionCase_ = 26;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.FalseLiteral false_literal = 26;</code>
       */
      public Builder clearFalseLiteral() {
        if (expressionCase_ == 26) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional int32 string_literal = 27;</code>
       */
      public boolean hasStringLiteral() {
        return expressionCase_ == 27;
      }
      /**
       * <code>optional int32 string_literal = 27;</code>
       */
      public int getStringLiteral() {
        if (expressionCase_ == 27) {
          return (java.lang.Integer) expression_;
        }
        return 0;
      }
      /**
       * <code>optional int32 string_literal = 27;</code>
       */
      public Builder setStringLiteral(int value) {
        expressionCase_ = 27;
        expression_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 string_literal = 27;</code>
       */
      public Builder clearStringLiteral() {
        if (expressionCase_ == 27) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.RegExpLiteral reg_exp_literal = 28;</code>
       */
      public boolean hasRegExpLiteral() {
        return expressionCase_ == 28;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.RegExpLiteral reg_exp_literal = 28;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral getRegExpLiteral() {
        if (expressionCase_ == 28) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral) expression_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.RegExpLiteral reg_exp_literal = 28;</code>
       */
      public Builder setRegExpLiteral(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        expressionCase_ = 28;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.RegExpLiteral reg_exp_literal = 28;</code>
       */
      public Builder setRegExpLiteral(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral.Builder builderForValue) {
        expression_ = builderForValue.build();

        expressionCase_ = 28;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.RegExpLiteral reg_exp_literal = 28;</code>
       */
      public Builder mergeRegExpLiteral(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral value) {
        if (expressionCase_ == 28 &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral.getDefaultInstance()) {
          expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral) expression_)
              .mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        expressionCase_ = 28;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.RegExpLiteral reg_exp_literal = 28;</code>
       */
      public Builder clearRegExpLiteral() {
        if (expressionCase_ == 28) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional int32 int_literal = 29;</code>
       */
      public boolean hasIntLiteral() {
        return expressionCase_ == 29;
      }
      /**
       * <code>optional int32 int_literal = 29;</code>
       */
      public int getIntLiteral() {
        if (expressionCase_ == 29) {
          return (java.lang.Integer) expression_;
        }
        return 0;
      }
      /**
       * <code>optional int32 int_literal = 29;</code>
       */
      public Builder setIntLiteral(int value) {
        expressionCase_ = 29;
        expression_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 int_literal = 29;</code>
       */
      public Builder clearIntLiteral() {
        if (expressionCase_ == 29) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional double double_literal = 30;</code>
       */
      public boolean hasDoubleLiteral() {
        return expressionCase_ == 30;
      }
      /**
       * <code>optional double double_literal = 30;</code>
       */
      public double getDoubleLiteral() {
        if (expressionCase_ == 30) {
          return (java.lang.Double) expression_;
        }
        return 0D;
      }
      /**
       * <code>optional double double_literal = 30;</code>
       */
      public Builder setDoubleLiteral(double value) {
        expressionCase_ = 30;
        expression_ = value;
        
        return this;
      }
      /**
       * <code>optional double double_literal = 30;</code>
       */
      public Builder clearDoubleLiteral() {
        if (expressionCase_ == 30) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ArrayLiteral array_literal = 31;</code>
       */
      public boolean hasArrayLiteral() {
        return expressionCase_ == 31;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ArrayLiteral array_literal = 31;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral getArrayLiteral() {
        if (expressionCase_ == 31) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral) expression_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ArrayLiteral array_literal = 31;</code>
       */
      public Builder setArrayLiteral(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        expressionCase_ = 31;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ArrayLiteral array_literal = 31;</code>
       */
      public Builder setArrayLiteral(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral.Builder builderForValue) {
        expression_ = builderForValue.build();

        expressionCase_ = 31;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ArrayLiteral array_literal = 31;</code>
       */
      public Builder mergeArrayLiteral(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral value) {
        if (expressionCase_ == 31 &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral.getDefaultInstance()) {
          expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral) expression_)
              .mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        expressionCase_ = 31;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ArrayLiteral array_literal = 31;</code>
       */
      public Builder clearArrayLiteral() {
        if (expressionCase_ == 31) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteral object_literal = 32;</code>
       */
      public boolean hasObjectLiteral() {
        return expressionCase_ == 32;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteral object_literal = 32;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral getObjectLiteral() {
        if (expressionCase_ == 32) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral) expression_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteral object_literal = 32;</code>
       */
      public Builder setObjectLiteral(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        expressionCase_ = 32;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteral object_literal = 32;</code>
       */
      public Builder setObjectLiteral(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral.Builder builderForValue) {
        expression_ = builderForValue.build();

        expressionCase_ = 32;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteral object_literal = 32;</code>
       */
      public Builder mergeObjectLiteral(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral value) {
        if (expressionCase_ == 32 &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral.getDefaultInstance()) {
          expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral) expression_)
              .mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        expressionCase_ = 32;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteral object_literal = 32;</code>
       */
      public Builder clearObjectLiteral() {
        if (expressionCase_ == 32) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Function function = 33;</code>
       */
      public boolean hasFunction() {
        return expressionCase_ == 33;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Function function = 33;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function getFunction() {
        if (expressionCase_ == 33) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function) expression_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Function function = 33;</code>
       */
      public Builder setFunction(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        expressionCase_ = 33;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Function function = 33;</code>
       */
      public Builder setFunction(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Builder builderForValue) {
        expression_ = builderForValue.build();

        expressionCase_ = 33;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Function function = 33;</code>
       */
      public Builder mergeFunction(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function value) {
        if (expressionCase_ == 33 &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.getDefaultInstance()) {
          expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function) expression_)
              .mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        expressionCase_ = 33;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Function function = 33;</code>
       */
      public Builder clearFunction() {
        if (expressionCase_ == 33) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.DocComment doc_comment = 34;</code>
       */
      public boolean hasDocComment() {
        return expressionCase_ == 34;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.DocComment doc_comment = 34;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment getDocComment() {
        if (expressionCase_ == 34) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment) expression_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.DocComment doc_comment = 34;</code>
       */
      public Builder setDocComment(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        expressionCase_ = 34;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.DocComment doc_comment = 34;</code>
       */
      public Builder setDocComment(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment.Builder builderForValue) {
        expression_ = builderForValue.build();

        expressionCase_ = 34;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.DocComment doc_comment = 34;</code>
       */
      public Builder mergeDocComment(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment value) {
        if (expressionCase_ == 34 &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment.getDefaultInstance()) {
          expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment) expression_)
              .mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        expressionCase_ = 34;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.DocComment doc_comment = 34;</code>
       */
      public Builder clearDocComment() {
        if (expressionCase_ == 34) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.BinaryOperation binary = 35;</code>
       */
      public boolean hasBinary() {
        return expressionCase_ == 35;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.BinaryOperation binary = 35;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation getBinary() {
        if (expressionCase_ == 35) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation) expression_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.BinaryOperation binary = 35;</code>
       */
      public Builder setBinary(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        expressionCase_ = 35;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.BinaryOperation binary = 35;</code>
       */
      public Builder setBinary(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.Builder builderForValue) {
        expression_ = builderForValue.build();

        expressionCase_ = 35;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.BinaryOperation binary = 35;</code>
       */
      public Builder mergeBinary(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation value) {
        if (expressionCase_ == 35 &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.getDefaultInstance()) {
          expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation) expression_)
              .mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        expressionCase_ = 35;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.BinaryOperation binary = 35;</code>
       */
      public Builder clearBinary() {
        if (expressionCase_ == 35) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.UnaryOperation unary = 36;</code>
       */
      public boolean hasUnary() {
        return expressionCase_ == 36;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.UnaryOperation unary = 36;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation getUnary() {
        if (expressionCase_ == 36) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation) expression_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.UnaryOperation unary = 36;</code>
       */
      public Builder setUnary(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        expressionCase_ = 36;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.UnaryOperation unary = 36;</code>
       */
      public Builder setUnary(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.Builder builderForValue) {
        expression_ = builderForValue.build();

        expressionCase_ = 36;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.UnaryOperation unary = 36;</code>
       */
      public Builder mergeUnary(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation value) {
        if (expressionCase_ == 36 &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.getDefaultInstance()) {
          expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation) expression_)
              .mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        expressionCase_ = 36;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.UnaryOperation unary = 36;</code>
       */
      public Builder clearUnary() {
        if (expressionCase_ == 36) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Conditional conditional = 37;</code>
       */
      public boolean hasConditional() {
        return expressionCase_ == 37;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Conditional conditional = 37;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional getConditional() {
        if (expressionCase_ == 37) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional) expression_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Conditional conditional = 37;</code>
       */
      public Builder setConditional(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        expressionCase_ = 37;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Conditional conditional = 37;</code>
       */
      public Builder setConditional(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional.Builder builderForValue) {
        expression_ = builderForValue.build();

        expressionCase_ = 37;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Conditional conditional = 37;</code>
       */
      public Builder mergeConditional(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional value) {
        if (expressionCase_ == 37 &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional.getDefaultInstance()) {
          expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional) expression_)
              .mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        expressionCase_ = 37;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Conditional conditional = 37;</code>
       */
      public Builder clearConditional() {
        if (expressionCase_ == 37) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ArrayAccess array_access = 38;</code>
       */
      public boolean hasArrayAccess() {
        return expressionCase_ == 38;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ArrayAccess array_access = 38;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess getArrayAccess() {
        if (expressionCase_ == 38) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess) expression_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ArrayAccess array_access = 38;</code>
       */
      public Builder setArrayAccess(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        expressionCase_ = 38;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ArrayAccess array_access = 38;</code>
       */
      public Builder setArrayAccess(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess.Builder builderForValue) {
        expression_ = builderForValue.build();

        expressionCase_ = 38;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ArrayAccess array_access = 38;</code>
       */
      public Builder mergeArrayAccess(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess value) {
        if (expressionCase_ == 38 &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess.getDefaultInstance()) {
          expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess) expression_)
              .mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        expressionCase_ = 38;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ArrayAccess array_access = 38;</code>
       */
      public Builder clearArrayAccess() {
        if (expressionCase_ == 38) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.NameReference name_reference = 39;</code>
       */
      public boolean hasNameReference() {
        return expressionCase_ == 39;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.NameReference name_reference = 39;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference getNameReference() {
        if (expressionCase_ == 39) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference) expression_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.NameReference name_reference = 39;</code>
       */
      public Builder setNameReference(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        expressionCase_ = 39;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.NameReference name_reference = 39;</code>
       */
      public Builder setNameReference(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference.Builder builderForValue) {
        expression_ = builderForValue.build();

        expressionCase_ = 39;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.NameReference name_reference = 39;</code>
       */
      public Builder mergeNameReference(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference value) {
        if (expressionCase_ == 39 &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference.getDefaultInstance()) {
          expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference) expression_)
              .mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        expressionCase_ = 39;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.NameReference name_reference = 39;</code>
       */
      public Builder clearNameReference() {
        if (expressionCase_ == 39) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.PropertyReference property_reference = 40;</code>
       */
      public boolean hasPropertyReference() {
        return expressionCase_ == 40;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.PropertyReference property_reference = 40;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference getPropertyReference() {
        if (expressionCase_ == 40) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference) expression_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.PropertyReference property_reference = 40;</code>
       */
      public Builder setPropertyReference(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        expressionCase_ = 40;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.PropertyReference property_reference = 40;</code>
       */
      public Builder setPropertyReference(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference.Builder builderForValue) {
        expression_ = builderForValue.build();

        expressionCase_ = 40;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.PropertyReference property_reference = 40;</code>
       */
      public Builder mergePropertyReference(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference value) {
        if (expressionCase_ == 40 &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference.getDefaultInstance()) {
          expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference) expression_)
              .mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        expressionCase_ = 40;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.PropertyReference property_reference = 40;</code>
       */
      public Builder clearPropertyReference() {
        if (expressionCase_ == 40) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Invocation invocation = 41;</code>
       */
      public boolean hasInvocation() {
        return expressionCase_ == 41;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Invocation invocation = 41;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation getInvocation() {
        if (expressionCase_ == 41) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation) expression_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Invocation invocation = 41;</code>
       */
      public Builder setInvocation(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        expressionCase_ = 41;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Invocation invocation = 41;</code>
       */
      public Builder setInvocation(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation.Builder builderForValue) {
        expression_ = builderForValue.build();

        expressionCase_ = 41;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Invocation invocation = 41;</code>
       */
      public Builder mergeInvocation(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation value) {
        if (expressionCase_ == 41 &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation.getDefaultInstance()) {
          expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation) expression_)
              .mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        expressionCase_ = 41;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Invocation invocation = 41;</code>
       */
      public Builder clearInvocation() {
        if (expressionCase_ == 41) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Instantiation instantiation = 42;</code>
       */
      public boolean hasInstantiation() {
        return expressionCase_ == 42;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Instantiation instantiation = 42;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation getInstantiation() {
        if (expressionCase_ == 42) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation) expression_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Instantiation instantiation = 42;</code>
       */
      public Builder setInstantiation(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        expressionCase_ = 42;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Instantiation instantiation = 42;</code>
       */
      public Builder setInstantiation(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation.Builder builderForValue) {
        expression_ = builderForValue.build();

        expressionCase_ = 42;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Instantiation instantiation = 42;</code>
       */
      public Builder mergeInstantiation(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation value) {
        if (expressionCase_ == 42 &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation.getDefaultInstance()) {
          expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation) expression_)
              .mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        expressionCase_ = 42;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Instantiation instantiation = 42;</code>
       */
      public Builder clearInstantiation() {
        if (expressionCase_ == 42) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SuperLiteral super_literal = 43;</code>
       */
      public boolean hasSuperLiteral() {
        return expressionCase_ == 43;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SuperLiteral super_literal = 43;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral getSuperLiteral() {
        if (expressionCase_ == 43) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral) expression_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SuperLiteral super_literal = 43;</code>
       */
      public Builder setSuperLiteral(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        expressionCase_ = 43;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SuperLiteral super_literal = 43;</code>
       */
      public Builder setSuperLiteral(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral.Builder builderForValue) {
        expression_ = builderForValue.build();

        expressionCase_ = 43;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SuperLiteral super_literal = 43;</code>
       */
      public Builder mergeSuperLiteral(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral value) {
        if (expressionCase_ == 43 &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral.getDefaultInstance()) {
          expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral) expression_)
              .mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        expressionCase_ = 43;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SuperLiteral super_literal = 43;</code>
       */
      public Builder clearSuperLiteral() {
        if (expressionCase_ == 43) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Class class = 44;</code>
       */
      public boolean hasClass_() {
        return expressionCase_ == 44;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Class class = 44;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class getClass_() {
        if (expressionCase_ == 44) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class) expression_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Class class = 44;</code>
       */
      public Builder setClass_(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        expressionCase_ = 44;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Class class = 44;</code>
       */
      public Builder setClass_(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class.Builder builderForValue) {
        expression_ = builderForValue.build();

        expressionCase_ = 44;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Class class = 44;</code>
       */
      public Builder mergeClass_(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class value) {
        if (expressionCase_ == 44 &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class.getDefaultInstance()) {
          expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class) expression_)
              .mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        expressionCase_ = 44;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Class class = 44;</code>
       */
      public Builder clearClass_() {
        if (expressionCase_ == 44) {
          expressionCase_ = 0;
          expression_ = null;
          
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Expression)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Expression)
  }

  public interface ThisLiteralOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.ThisLiteral)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.ThisLiteral}
   */
  public static final class ThisLiteral extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.ThisLiteral)
      ThisLiteralOrBuilder {
    // Use ThisLiteral.newBuilder() to construct.
    private ThisLiteral(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ThisLiteral(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public ThisLiteral getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private ThisLiteral(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } 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<ThisLiteral> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<ThisLiteral>() {
      public ThisLiteral parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new ThisLiteral(input, extensionRegistry);
      }
    };

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

    private void initFields() {
    }
    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();
      output.writeRawBytes(unknownFields);
    }

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

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

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.ThisLiteral}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.ThisLiteral)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteralOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral(this);
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral.getDefaultInstance()) return this;
        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.serialization.js.ast.JsAstProtoBuf.ThisLiteral parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThisLiteral) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.ThisLiteral)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.ThisLiteral)
  }

  public interface SuperLiteralOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.SuperLiteral)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.SuperLiteral}
   */
  public static final class SuperLiteral extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.SuperLiteral)
      SuperLiteralOrBuilder {
    // Use SuperLiteral.newBuilder() to construct.
    private SuperLiteral(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private SuperLiteral(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public SuperLiteral getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private SuperLiteral(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } 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<SuperLiteral> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<SuperLiteral>() {
      public SuperLiteral parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new SuperLiteral(input, extensionRegistry);
      }
    };

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

    private void initFields() {
    }
    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();
      output.writeRawBytes(unknownFields);
    }

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

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

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.SuperLiteral}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.SuperLiteral)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteralOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral(this);
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral.getDefaultInstance()) return this;
        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.serialization.js.ast.JsAstProtoBuf.SuperLiteral parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SuperLiteral) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.SuperLiteral)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.SuperLiteral)
  }

  public interface NullLiteralOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.NullLiteral)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.NullLiteral}
   */
  public static final class NullLiteral extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.NullLiteral)
      NullLiteralOrBuilder {
    // Use NullLiteral.newBuilder() to construct.
    private NullLiteral(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private NullLiteral(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public NullLiteral getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private NullLiteral(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } 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<NullLiteral> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<NullLiteral>() {
      public NullLiteral parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new NullLiteral(input, extensionRegistry);
      }
    };

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

    private void initFields() {
    }
    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();
      output.writeRawBytes(unknownFields);
    }

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

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

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.NullLiteral}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.NullLiteral)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteralOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral(this);
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral.getDefaultInstance()) return this;
        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.serialization.js.ast.JsAstProtoBuf.NullLiteral parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NullLiteral) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.NullLiteral)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.NullLiteral)
  }

  public interface TrueLiteralOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.TrueLiteral)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.TrueLiteral}
   */
  public static final class TrueLiteral extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.TrueLiteral)
      TrueLiteralOrBuilder {
    // Use TrueLiteral.newBuilder() to construct.
    private TrueLiteral(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private TrueLiteral(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public TrueLiteral getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private TrueLiteral(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } 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<TrueLiteral> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<TrueLiteral>() {
      public TrueLiteral parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new TrueLiteral(input, extensionRegistry);
      }
    };

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

    private void initFields() {
    }
    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();
      output.writeRawBytes(unknownFields);
    }

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

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

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.TrueLiteral}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.TrueLiteral)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteralOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral(this);
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral.getDefaultInstance()) return this;
        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.serialization.js.ast.JsAstProtoBuf.TrueLiteral parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TrueLiteral) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.TrueLiteral)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.TrueLiteral)
  }

  public interface FalseLiteralOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.FalseLiteral)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.FalseLiteral}
   */
  public static final class FalseLiteral extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.FalseLiteral)
      FalseLiteralOrBuilder {
    // Use FalseLiteral.newBuilder() to construct.
    private FalseLiteral(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private FalseLiteral(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public FalseLiteral getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private FalseLiteral(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } 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<FalseLiteral> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<FalseLiteral>() {
      public FalseLiteral parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new FalseLiteral(input, extensionRegistry);
      }
    };

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

    private void initFields() {
    }
    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();
      output.writeRawBytes(unknownFields);
    }

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

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

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.FalseLiteral}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.FalseLiteral)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteralOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral(this);
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral.getDefaultInstance()) return this;
        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.serialization.js.ast.JsAstProtoBuf.FalseLiteral parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FalseLiteral) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.FalseLiteral)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.FalseLiteral)
  }

  public interface RegExpLiteralOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.RegExpLiteral)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required int32 pattern_string_id = 1;</code>
     */
    boolean hasPatternStringId();
    /**
     * <code>required int32 pattern_string_id = 1;</code>
     */
    int getPatternStringId();

    /**
     * <code>optional int32 flags_string_id = 2;</code>
     */
    boolean hasFlagsStringId();
    /**
     * <code>optional int32 flags_string_id = 2;</code>
     */
    int getFlagsStringId();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.RegExpLiteral}
   */
  public static final class RegExpLiteral extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.RegExpLiteral)
      RegExpLiteralOrBuilder {
    // Use RegExpLiteral.newBuilder() to construct.
    private RegExpLiteral(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private RegExpLiteral(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public RegExpLiteral getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private RegExpLiteral(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              patternStringId_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              flagsStringId_ = 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<RegExpLiteral> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<RegExpLiteral>() {
      public RegExpLiteral parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new RegExpLiteral(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int PATTERN_STRING_ID_FIELD_NUMBER = 1;
    private int patternStringId_;
    /**
     * <code>required int32 pattern_string_id = 1;</code>
     */
    public boolean hasPatternStringId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 pattern_string_id = 1;</code>
     */
    public int getPatternStringId() {
      return patternStringId_;
    }

    public static final int FLAGS_STRING_ID_FIELD_NUMBER = 2;
    private int flagsStringId_;
    /**
     * <code>optional int32 flags_string_id = 2;</code>
     */
    public boolean hasFlagsStringId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int32 flags_string_id = 2;</code>
     */
    public int getFlagsStringId() {
      return flagsStringId_;
    }

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

      if (!hasPatternStringId()) {
        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, patternStringId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, flagsStringId_);
      }
      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, patternStringId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(2, flagsStringId_);
      }
      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.serialization.js.ast.JsAstProtoBuf.RegExpLiteral parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral 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.serialization.js.ast.JsAstProtoBuf.RegExpLiteral parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral 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.serialization.js.ast.JsAstProtoBuf.RegExpLiteral parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral 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.serialization.js.ast.JsAstProtoBuf.RegExpLiteral parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral 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.serialization.js.ast.JsAstProtoBuf.RegExpLiteral parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral 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.serialization.js.ast.JsAstProtoBuf.RegExpLiteral prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.RegExpLiteral}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.RegExpLiteral)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteralOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

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

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.patternStringId_ = patternStringId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.flagsStringId_ = flagsStringId_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.RegExpLiteral.getDefaultInstance()) return this;
        if (other.hasPatternStringId()) {
          setPatternStringId(other.getPatternStringId());
        }
        if (other.hasFlagsStringId()) {
          setFlagsStringId(other.getFlagsStringId());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

      private int patternStringId_ ;
      /**
       * <code>required int32 pattern_string_id = 1;</code>
       */
      public boolean hasPatternStringId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 pattern_string_id = 1;</code>
       */
      public int getPatternStringId() {
        return patternStringId_;
      }
      /**
       * <code>required int32 pattern_string_id = 1;</code>
       */
      public Builder setPatternStringId(int value) {
        bitField0_ |= 0x00000001;
        patternStringId_ = value;
        
        return this;
      }
      /**
       * <code>required int32 pattern_string_id = 1;</code>
       */
      public Builder clearPatternStringId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        patternStringId_ = 0;
        
        return this;
      }

      private int flagsStringId_ ;
      /**
       * <code>optional int32 flags_string_id = 2;</code>
       */
      public boolean hasFlagsStringId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int32 flags_string_id = 2;</code>
       */
      public int getFlagsStringId() {
        return flagsStringId_;
      }
      /**
       * <code>optional int32 flags_string_id = 2;</code>
       */
      public Builder setFlagsStringId(int value) {
        bitField0_ |= 0x00000002;
        flagsStringId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 flags_string_id = 2;</code>
       */
      public Builder clearFlagsStringId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        flagsStringId_ = 0;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.RegExpLiteral)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.RegExpLiteral)
  }

  public interface ArrayLiteralOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.ArrayLiteral)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression element = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression> 
        getElementList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression element = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getElement(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression element = 1;</code>
     */
    int getElementCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.ArrayLiteral}
   */
  public static final class ArrayLiteral extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.ArrayLiteral)
      ArrayLiteralOrBuilder {
    // Use ArrayLiteral.newBuilder() to construct.
    private ArrayLiteral(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ArrayLiteral(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public ArrayLiteral getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private ArrayLiteral(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                element_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression>();
                mutable_bitField0_ |= 0x00000001;
              }
              element_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          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<ArrayLiteral> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<ArrayLiteral>() {
      public ArrayLiteral parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new ArrayLiteral(input, extensionRegistry);
      }
    };

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

    public static final int ELEMENT_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression> element_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression element = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression> getElementList() {
      return element_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression element = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionOrBuilder> 
        getElementOrBuilderList() {
      return element_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression element = 1;</code>
     */
    public int getElementCount() {
      return element_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression element = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getElement(int index) {
      return element_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression element = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionOrBuilder getElementOrBuilder(
        int index) {
      return element_.get(index);
    }

    private void initFields() {
      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;

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

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.ArrayLiteral}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.ArrayLiteral)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteralOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

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

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          element_ = java.util.Collections.unmodifiableList(element_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.element_ = element_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayLiteral.getDefaultInstance()) return this;
        if (!other.element_.isEmpty()) {
          if (element_.isEmpty()) {
            element_ = other.element_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureElementIsMutable();
            element_.addAll(other.element_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression> element_ =
        java.util.Collections.emptyList();
      private void ensureElementIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          element_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression>(element_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression element = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression> getElementList() {
        return java.util.Collections.unmodifiableList(element_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression element = 1;</code>
       */
      public int getElementCount() {
        return element_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression element = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getElement(int index) {
        return element_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression element = 1;</code>
       */
      public Builder setElement(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureElementIsMutable();
        element_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression element = 1;</code>
       */
      public Builder setElement(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        ensureElementIsMutable();
        element_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression element = 1;</code>
       */
      public Builder addElement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureElementIsMutable();
        element_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression element = 1;</code>
       */
      public Builder addElement(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureElementIsMutable();
        element_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression element = 1;</code>
       */
      public Builder addElement(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        ensureElementIsMutable();
        element_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression element = 1;</code>
       */
      public Builder addElement(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        ensureElementIsMutable();
        element_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression element = 1;</code>
       */
      public Builder addAllElement(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression> values) {
        ensureElementIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, element_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression element = 1;</code>
       */
      public Builder clearElement() {
        element_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression element = 1;</code>
       */
      public Builder removeElement(int index) {
        ensureElementIsMutable();
        element_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.ArrayLiteral)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.ArrayLiteral)
  }

  public interface ObjectLiteralOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.ObjectLiteral)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry entry = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry> 
        getEntryList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry entry = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry getEntry(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry entry = 1;</code>
     */
    int getEntryCount();

    /**
     * <code>optional bool multiline = 2 [default = true];</code>
     */
    boolean hasMultiline();
    /**
     * <code>optional bool multiline = 2 [default = true];</code>
     */
    boolean getMultiline();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.ObjectLiteral}
   */
  public static final class ObjectLiteral extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.ObjectLiteral)
      ObjectLiteralOrBuilder {
    // Use ObjectLiteral.newBuilder() to construct.
    private ObjectLiteral(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ObjectLiteral(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public ObjectLiteral getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private ObjectLiteral(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                entry_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry>();
                mutable_bitField0_ |= 0x00000001;
              }
              entry_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry.PARSER, extensionRegistry));
              break;
            }
            case 16: {
              bitField0_ |= 0x00000001;
              multiline_ = 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_ & 0x00000001) == 0x00000001)) {
          entry_ = java.util.Collections.unmodifiableList(entry_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<ObjectLiteral> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<ObjectLiteral>() {
      public ObjectLiteral parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new ObjectLiteral(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int ENTRY_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry> entry_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry entry = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry> getEntryList() {
      return entry_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry entry = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntryOrBuilder> 
        getEntryOrBuilderList() {
      return entry_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry entry = 1;</code>
     */
    public int getEntryCount() {
      return entry_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry entry = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry getEntry(int index) {
      return entry_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry entry = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntryOrBuilder getEntryOrBuilder(
        int index) {
      return entry_.get(index);
    }

    public static final int MULTILINE_FIELD_NUMBER = 2;
    private boolean multiline_;
    /**
     * <code>optional bool multiline = 2 [default = true];</code>
     */
    public boolean hasMultiline() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional bool multiline = 2 [default = true];</code>
     */
    public boolean getMultiline() {
      return multiline_;
    }

    private void initFields() {
      entry_ = java.util.Collections.emptyList();
      multiline_ = true;
    }
    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 < getEntryCount(); i++) {
        if (!getEntry(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 < entry_.size(); i++) {
        output.writeMessage(1, entry_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBool(2, multiline_);
      }
      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 < entry_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, entry_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(2, multiline_);
      }
      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.serialization.js.ast.JsAstProtoBuf.ObjectLiteral parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral 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.serialization.js.ast.JsAstProtoBuf.ObjectLiteral parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral 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.serialization.js.ast.JsAstProtoBuf.ObjectLiteral parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral 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.serialization.js.ast.JsAstProtoBuf.ObjectLiteral parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral 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.serialization.js.ast.JsAstProtoBuf.ObjectLiteral parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral 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.serialization.js.ast.JsAstProtoBuf.ObjectLiteral prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.ObjectLiteral}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.ObjectLiteral)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

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

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          entry_ = java.util.Collections.unmodifiableList(entry_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.entry_ = entry_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000001;
        }
        result.multiline_ = multiline_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral.getDefaultInstance()) return this;
        if (!other.entry_.isEmpty()) {
          if (entry_.isEmpty()) {
            entry_ = other.entry_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureEntryIsMutable();
            entry_.addAll(other.entry_);
          }
          
        }
        if (other.hasMultiline()) {
          setMultiline(other.getMultiline());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getEntryCount(); i++) {
          if (!getEntry(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.serialization.js.ast.JsAstProtoBuf.ObjectLiteral parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteral) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry> entry_ =
        java.util.Collections.emptyList();
      private void ensureEntryIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          entry_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry>(entry_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry entry = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry> getEntryList() {
        return java.util.Collections.unmodifiableList(entry_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry entry = 1;</code>
       */
      public int getEntryCount() {
        return entry_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry entry = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry getEntry(int index) {
        return entry_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry entry = 1;</code>
       */
      public Builder setEntry(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureEntryIsMutable();
        entry_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry entry = 1;</code>
       */
      public Builder setEntry(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry.Builder builderForValue) {
        ensureEntryIsMutable();
        entry_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry entry = 1;</code>
       */
      public Builder addEntry(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureEntryIsMutable();
        entry_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry entry = 1;</code>
       */
      public Builder addEntry(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureEntryIsMutable();
        entry_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry entry = 1;</code>
       */
      public Builder addEntry(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry.Builder builderForValue) {
        ensureEntryIsMutable();
        entry_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry entry = 1;</code>
       */
      public Builder addEntry(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry.Builder builderForValue) {
        ensureEntryIsMutable();
        entry_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry entry = 1;</code>
       */
      public Builder addAllEntry(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry> values) {
        ensureEntryIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, entry_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry entry = 1;</code>
       */
      public Builder clearEntry() {
        entry_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry entry = 1;</code>
       */
      public Builder removeEntry(int index) {
        ensureEntryIsMutable();
        entry_.remove(index);

        return this;
      }

      private boolean multiline_ = true;
      /**
       * <code>optional bool multiline = 2 [default = true];</code>
       */
      public boolean hasMultiline() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional bool multiline = 2 [default = true];</code>
       */
      public boolean getMultiline() {
        return multiline_;
      }
      /**
       * <code>optional bool multiline = 2 [default = true];</code>
       */
      public Builder setMultiline(boolean value) {
        bitField0_ |= 0x00000002;
        multiline_ = value;
        
        return this;
      }
      /**
       * <code>optional bool multiline = 2 [default = true];</code>
       */
      public Builder clearMultiline() {
        bitField0_ = (bitField0_ & ~0x00000002);
        multiline_ = true;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.ObjectLiteral)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.ObjectLiteral)
  }

  public interface ObjectLiteralEntryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression key = 1;</code>
     */
    boolean hasKey();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression key = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getKey();

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression value = 2;</code>
     */
    boolean hasValue();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression value = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getValue();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry}
   */
  public static final class ObjectLiteralEntry extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry)
      ObjectLiteralEntryOrBuilder {
    // Use ObjectLiteralEntry.newBuilder() to construct.
    private ObjectLiteralEntry(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ObjectLiteralEntry(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public ObjectLiteralEntry getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private ObjectLiteralEntry(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = key_.toBuilder();
              }
              key_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(key_);
                key_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = value_.toBuilder();
              }
              value_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.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<ObjectLiteralEntry> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<ObjectLiteralEntry>() {
      public ObjectLiteralEntry parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new ObjectLiteralEntry(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int KEY_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression key_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression key = 1;</code>
     */
    public boolean hasKey() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression key = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getKey() {
      return key_;
    }

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

    private void initFields() {
      key_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      value_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasKey()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasValue()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getKey().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, key_);
      }
      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, key_);
      }
      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.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry 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.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry 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.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry 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.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry 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.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry 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.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntryOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        key_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.key_ = key_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.value_ = value_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry.getDefaultInstance()) return this;
        if (other.hasKey()) {
          mergeKey(other.getKey());
        }
        if (other.hasValue()) {
          mergeValue(other.getValue());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasKey()) {
          
          return false;
        }
        if (!hasValue()) {
          
          return false;
        }
        if (!getKey().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.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ObjectLiteralEntry) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression key_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression key = 1;</code>
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression key = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getKey() {
        return key_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression key = 1;</code>
       */
      public Builder setKey(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        key_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression key = 1;</code>
       */
      public Builder setKey(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        key_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression key = 1;</code>
       */
      public Builder mergeKey(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            key_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          key_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(key_).mergeFrom(value).buildPartial();
        } else {
          key_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression key = 1;</code>
       */
      public Builder clearKey() {
        key_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

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

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression value = 2;</code>
       */
      public Builder setValue(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        value_ = builderForValue.build();

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

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression value = 2;</code>
       */
      public Builder clearValue() {
        value_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.ObjectLiteralEntry)
  }

  public interface FunctionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Function)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter> 
        getParameterList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter getParameter(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
     */
    int getParameterCount();

    /**
     * <code>optional int32 name_id = 2;</code>
     */
    boolean hasNameId();
    /**
     * <code>optional int32 name_id = 2;</code>
     */
    int getNameId();

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 3;</code>
     */
    boolean hasBody();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 3;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getBody();

    /**
     * <code>optional bool local = 4 [default = false];</code>
     */
    boolean hasLocal();
    /**
     * <code>optional bool local = 4 [default = false];</code>
     */
    boolean getLocal();

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function.Modifier modifier = 5;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Modifier> getModifierList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function.Modifier modifier = 5;</code>
     */
    int getModifierCount();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function.Modifier modifier = 5;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Modifier getModifier(int index);

    /**
     * <code>optional bool is_es6_arrow = 6 [default = false];</code>
     */
    boolean hasIsEs6Arrow();
    /**
     * <code>optional bool is_es6_arrow = 6 [default = false];</code>
     */
    boolean getIsEs6Arrow();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Function}
   */
  public static final class Function extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Function)
      FunctionOrBuilder {
    // Use Function.newBuilder() to construct.
    private Function(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Function(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Function getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Function(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                parameter_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter>();
                mutable_bitField0_ |= 0x00000001;
              }
              parameter_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter.PARSER, extensionRegistry));
              break;
            }
            case 16: {
              bitField0_ |= 0x00000001;
              nameId_ = input.readInt32();
              break;
            }
            case 26: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = body_.toBuilder();
              }
              body_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(body_);
                body_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 32: {
              bitField0_ |= 0x00000004;
              local_ = input.readBool();
              break;
            }
            case 40: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Modifier value = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Modifier.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
                } else {
                if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                  modifier_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Modifier>();
                  mutable_bitField0_ |= 0x00000010;
                }
                modifier_.add(value);
              }
              break;
            }
            case 42: {
              int length = input.readRawVarint32();
              int oldLimit = input.pushLimit(length);
              while(input.getBytesUntilLimit() > 0) {
                int rawValue = input.readEnum();
                org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Modifier value = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Modifier.valueOf(rawValue);
                if (value == null) {
                  unknownFieldsCodedOutput.writeRawVarint32(tag);
                  unknownFieldsCodedOutput.writeRawVarint32(rawValue);
                  } else {
                  if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                    modifier_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Modifier>();
                    mutable_bitField0_ |= 0x00000010;
                  }
                  modifier_.add(value);
                }
              }
              input.popLimit(oldLimit);
              break;
            }
            case 48: {
              bitField0_ |= 0x00000008;
              isEs6Arrow_ = 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_ & 0x00000001) == 0x00000001)) {
          parameter_ = java.util.Collections.unmodifiableList(parameter_);
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          modifier_ = java.util.Collections.unmodifiableList(modifier_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Function> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Function>() {
      public Function parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Function(input, extensionRegistry);
      }
    };

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

    /**
     * Protobuf enum {@code org.jetbrains.kotlin.serialization.js.ast.Function.Modifier}
     */
    public enum Modifier
        implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
      /**
       * <code>STATIC = 1;</code>
       */
      STATIC(0, 1),
      /**
       * <code>GET = 2;</code>
       */
      GET(1, 2),
      /**
       * <code>SET = 3;</code>
       */
      SET(2, 3),
      /**
       * <code>GENERATOR = 4;</code>
       */
      GENERATOR(3, 4),
      ;

      /**
       * <code>STATIC = 1;</code>
       */
      public static final int STATIC_VALUE = 1;
      /**
       * <code>GET = 2;</code>
       */
      public static final int GET_VALUE = 2;
      /**
       * <code>SET = 3;</code>
       */
      public static final int SET_VALUE = 3;
      /**
       * <code>GENERATOR = 4;</code>
       */
      public static final int GENERATOR_VALUE = 4;


      public final int getNumber() { return value; }

      public static Modifier valueOf(int value) {
        switch (value) {
          case 1: return STATIC;
          case 2: return GET;
          case 3: return SET;
          case 4: return GENERATOR;
          default: return null;
        }
      }

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.serialization.js.ast.Function.Modifier)
    }

    private int bitField0_;
    public static final int PARAMETER_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter> parameter_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter> getParameterList() {
      return parameter_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ParameterOrBuilder> 
        getParameterOrBuilderList() {
      return parameter_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
     */
    public int getParameterCount() {
      return parameter_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter getParameter(int index) {
      return parameter_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ParameterOrBuilder getParameterOrBuilder(
        int index) {
      return parameter_.get(index);
    }

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

    public static final int BODY_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement body_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 3;</code>
     */
    public boolean hasBody() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 3;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getBody() {
      return body_;
    }

    public static final int LOCAL_FIELD_NUMBER = 4;
    private boolean local_;
    /**
     * <code>optional bool local = 4 [default = false];</code>
     */
    public boolean hasLocal() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional bool local = 4 [default = false];</code>
     */
    public boolean getLocal() {
      return local_;
    }

    public static final int MODIFIER_FIELD_NUMBER = 5;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Modifier> modifier_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function.Modifier modifier = 5;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Modifier> getModifierList() {
      return modifier_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function.Modifier modifier = 5;</code>
     */
    public int getModifierCount() {
      return modifier_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function.Modifier modifier = 5;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Modifier getModifier(int index) {
      return modifier_.get(index);
    }

    public static final int IS_ES6_ARROW_FIELD_NUMBER = 6;
    private boolean isEs6Arrow_;
    /**
     * <code>optional bool is_es6_arrow = 6 [default = false];</code>
     */
    public boolean hasIsEs6Arrow() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional bool is_es6_arrow = 6 [default = false];</code>
     */
    public boolean getIsEs6Arrow() {
      return isEs6Arrow_;
    }

    private void initFields() {
      parameter_ = java.util.Collections.emptyList();
      nameId_ = 0;
      body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
      local_ = false;
      modifier_ = java.util.Collections.emptyList();
      isEs6Arrow_ = false;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasBody()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getParameterCount(); i++) {
        if (!getParameter(i).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();
      for (int i = 0; i < parameter_.size(); i++) {
        output.writeMessage(1, parameter_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(2, nameId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(3, body_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBool(4, local_);
      }
      for (int i = 0; i < modifier_.size(); i++) {
        output.writeEnum(5, modifier_.get(i).getNumber());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBool(6, isEs6Arrow_);
      }
      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 < parameter_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, parameter_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(2, nameId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, body_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(4, local_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < modifier_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeEnumSizeNoTag(modifier_.get(i).getNumber());
        }
        size += dataSize;
        size += 1 * modifier_.size();
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(6, isEs6Arrow_);
      }
      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.serialization.js.ast.JsAstProtoBuf.Function parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

      public Builder clear() {
        super.clear();
        parameter_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        nameId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        local_ = false;
        bitField0_ = (bitField0_ & ~0x00000008);
        modifier_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        isEs6Arrow_ = false;
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          parameter_ = java.util.Collections.unmodifiableList(parameter_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.parameter_ = parameter_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000001;
        }
        result.nameId_ = nameId_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        result.body_ = body_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        result.local_ = local_;
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          modifier_ = java.util.Collections.unmodifiableList(modifier_);
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.modifier_ = modifier_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000008;
        }
        result.isEs6Arrow_ = isEs6Arrow_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.getDefaultInstance()) return this;
        if (!other.parameter_.isEmpty()) {
          if (parameter_.isEmpty()) {
            parameter_ = other.parameter_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureParameterIsMutable();
            parameter_.addAll(other.parameter_);
          }
          
        }
        if (other.hasNameId()) {
          setNameId(other.getNameId());
        }
        if (other.hasBody()) {
          mergeBody(other.getBody());
        }
        if (other.hasLocal()) {
          setLocal(other.getLocal());
        }
        if (!other.modifier_.isEmpty()) {
          if (modifier_.isEmpty()) {
            modifier_ = other.modifier_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureModifierIsMutable();
            modifier_.addAll(other.modifier_);
          }
          
        }
        if (other.hasIsEs6Arrow()) {
          setIsEs6Arrow(other.getIsEs6Arrow());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasBody()) {
          
          return false;
        }
        for (int i = 0; i < getParameterCount(); i++) {
          if (!getParameter(i).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.serialization.js.ast.JsAstProtoBuf.Function parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter> parameter_ =
        java.util.Collections.emptyList();
      private void ensureParameterIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          parameter_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter>(parameter_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter> getParameterList() {
        return java.util.Collections.unmodifiableList(parameter_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
       */
      public int getParameterCount() {
        return parameter_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter getParameter(int index) {
        return parameter_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
       */
      public Builder setParameter(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureParameterIsMutable();
        parameter_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
       */
      public Builder setParameter(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter.Builder builderForValue) {
        ensureParameterIsMutable();
        parameter_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
       */
      public Builder addParameter(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureParameterIsMutable();
        parameter_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
       */
      public Builder addParameter(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureParameterIsMutable();
        parameter_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
       */
      public Builder addParameter(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter.Builder builderForValue) {
        ensureParameterIsMutable();
        parameter_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
       */
      public Builder addParameter(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter.Builder builderForValue) {
        ensureParameterIsMutable();
        parameter_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
       */
      public Builder addAllParameter(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter> values) {
        ensureParameterIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, parameter_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
       */
      public Builder clearParameter() {
        parameter_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
       */
      public Builder removeParameter(int index) {
        ensureParameterIsMutable();
        parameter_.remove(index);

        return this;
      }

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 3;</code>
       */
      public boolean hasBody() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 3;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getBody() {
        return body_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 3;</code>
       */
      public Builder setBody(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        body_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 3;</code>
       */
      public Builder setBody(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        body_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 3;</code>
       */
      public Builder mergeBody(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            body_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance()) {
          body_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.newBuilder(body_).mergeFrom(value).buildPartial();
        } else {
          body_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 3;</code>
       */
      public Builder clearBody() {
        body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();

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

      private boolean local_ ;
      /**
       * <code>optional bool local = 4 [default = false];</code>
       */
      public boolean hasLocal() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional bool local = 4 [default = false];</code>
       */
      public boolean getLocal() {
        return local_;
      }
      /**
       * <code>optional bool local = 4 [default = false];</code>
       */
      public Builder setLocal(boolean value) {
        bitField0_ |= 0x00000008;
        local_ = value;
        
        return this;
      }
      /**
       * <code>optional bool local = 4 [default = false];</code>
       */
      public Builder clearLocal() {
        bitField0_ = (bitField0_ & ~0x00000008);
        local_ = false;
        
        return this;
      }

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Modifier> modifier_ =
        java.util.Collections.emptyList();
      private void ensureModifierIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          modifier_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Modifier>(modifier_);
          bitField0_ |= 0x00000010;
        }
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function.Modifier modifier = 5;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Modifier> getModifierList() {
        return java.util.Collections.unmodifiableList(modifier_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function.Modifier modifier = 5;</code>
       */
      public int getModifierCount() {
        return modifier_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function.Modifier modifier = 5;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Modifier getModifier(int index) {
        return modifier_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function.Modifier modifier = 5;</code>
       */
      public Builder setModifier(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Modifier value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureModifierIsMutable();
        modifier_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function.Modifier modifier = 5;</code>
       */
      public Builder addModifier(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Modifier value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureModifierIsMutable();
        modifier_.add(value);
        
        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function.Modifier modifier = 5;</code>
       */
      public Builder addAllModifier(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Modifier> values) {
        ensureModifierIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, modifier_);
        
        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function.Modifier modifier = 5;</code>
       */
      public Builder clearModifier() {
        modifier_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        
        return this;
      }

      private boolean isEs6Arrow_ ;
      /**
       * <code>optional bool is_es6_arrow = 6 [default = false];</code>
       */
      public boolean hasIsEs6Arrow() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional bool is_es6_arrow = 6 [default = false];</code>
       */
      public boolean getIsEs6Arrow() {
        return isEs6Arrow_;
      }
      /**
       * <code>optional bool is_es6_arrow = 6 [default = false];</code>
       */
      public Builder setIsEs6Arrow(boolean value) {
        bitField0_ |= 0x00000020;
        isEs6Arrow_ = value;
        
        return this;
      }
      /**
       * <code>optional bool is_es6_arrow = 6 [default = false];</code>
       */
      public Builder clearIsEs6Arrow() {
        bitField0_ = (bitField0_ & ~0x00000020);
        isEs6Arrow_ = false;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Function)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Function)
  }

  public interface ClassOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Class)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

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

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression super_expression = 2;</code>
     */
    boolean hasSuperExpression();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression super_expression = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getSuperExpression();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Function constructor = 3;</code>
     */
    boolean hasConstructor();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Function constructor = 3;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function getConstructor();

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function member = 4;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function> 
        getMemberList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function member = 4;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function getMember(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function member = 4;</code>
     */
    int getMemberCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Class}
   */
  public static final class Class extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Class)
      ClassOrBuilder {
    // Use Class.newBuilder() to construct.
    private Class(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Class(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Class getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Class(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              nameId_ = input.readInt32();
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = superExpression_.toBuilder();
              }
              superExpression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(superExpression_);
                superExpression_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = constructor_.toBuilder();
              }
              constructor_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(constructor_);
                constructor_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                member_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function>();
                mutable_bitField0_ |= 0x00000008;
              }
              member_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.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)) {
          member_ = java.util.Collections.unmodifiableList(member_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Class> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Class>() {
      public Class parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Class(input, extensionRegistry);
      }
    };

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

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

    public static final int SUPER_EXPRESSION_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression superExpression_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression super_expression = 2;</code>
     */
    public boolean hasSuperExpression() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression super_expression = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getSuperExpression() {
      return superExpression_;
    }

    public static final int CONSTRUCTOR_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function constructor_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Function constructor = 3;</code>
     */
    public boolean hasConstructor() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Function constructor = 3;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function getConstructor() {
      return constructor_;
    }

    public static final int MEMBER_FIELD_NUMBER = 4;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function> member_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function member = 4;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function> getMemberList() {
      return member_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function member = 4;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FunctionOrBuilder> 
        getMemberOrBuilderList() {
      return member_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function member = 4;</code>
     */
    public int getMemberCount() {
      return member_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function member = 4;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function getMember(int index) {
      return member_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function member = 4;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FunctionOrBuilder getMemberOrBuilder(
        int index) {
      return member_.get(index);
    }

    private void initFields() {
      nameId_ = 0;
      superExpression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      constructor_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.getDefaultInstance();
      member_ = 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 (hasSuperExpression()) {
        if (!getSuperExpression().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasConstructor()) {
        if (!getConstructor().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getMemberCount(); i++) {
        if (!getMember(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, nameId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, superExpression_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, constructor_);
      }
      for (int i = 0; i < member_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, member_.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.serialization.js.ast.JsAstProtoBuf.Class parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class parseFrom(
        byte[] data,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class parseFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class parseDelimitedFrom(
        java.io.InputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

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

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

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

      public Builder clear() {
        super.clear();
        nameId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        superExpression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        constructor_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        member_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class.getDefaultInstance();
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.nameId_ = nameId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.superExpression_ = superExpression_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.constructor_ = constructor_;
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          member_ = java.util.Collections.unmodifiableList(member_);
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.member_ = member_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class.getDefaultInstance()) return this;
        if (other.hasNameId()) {
          setNameId(other.getNameId());
        }
        if (other.hasSuperExpression()) {
          mergeSuperExpression(other.getSuperExpression());
        }
        if (other.hasConstructor()) {
          mergeConstructor(other.getConstructor());
        }
        if (!other.member_.isEmpty()) {
          if (member_.isEmpty()) {
            member_ = other.member_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureMemberIsMutable();
            member_.addAll(other.member_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (hasSuperExpression()) {
          if (!getSuperExpression().isInitialized()) {
            
            return false;
          }
        }
        if (hasConstructor()) {
          if (!getConstructor().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getMemberCount(); i++) {
          if (!getMember(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.serialization.js.ast.JsAstProtoBuf.Class parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Class) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression superExpression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression super_expression = 2;</code>
       */
      public boolean hasSuperExpression() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression super_expression = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getSuperExpression() {
        return superExpression_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression super_expression = 2;</code>
       */
      public Builder setSuperExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        superExpression_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression super_expression = 2;</code>
       */
      public Builder setSuperExpression(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        superExpression_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression super_expression = 2;</code>
       */
      public Builder mergeSuperExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            superExpression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          superExpression_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(superExpression_).mergeFrom(value).buildPartial();
        } else {
          superExpression_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression super_expression = 2;</code>
       */
      public Builder clearSuperExpression() {
        superExpression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function constructor_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Function constructor = 3;</code>
       */
      public boolean hasConstructor() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Function constructor = 3;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function getConstructor() {
        return constructor_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Function constructor = 3;</code>
       */
      public Builder setConstructor(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function value) {
        if (value == null) {
          throw new NullPointerException();
        }
        constructor_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Function constructor = 3;</code>
       */
      public Builder setConstructor(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Builder builderForValue) {
        constructor_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Function constructor = 3;</code>
       */
      public Builder mergeConstructor(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            constructor_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.getDefaultInstance()) {
          constructor_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.newBuilder(constructor_).mergeFrom(value).buildPartial();
        } else {
          constructor_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Function constructor = 3;</code>
       */
      public Builder clearConstructor() {
        constructor_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.getDefaultInstance();

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

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function> member_ =
        java.util.Collections.emptyList();
      private void ensureMemberIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          member_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function>(member_);
          bitField0_ |= 0x00000008;
         }
      }

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

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function member = 4;</code>
       */
      public Builder setMember(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Builder builderForValue) {
        ensureMemberIsMutable();
        member_.set(index, builderForValue.build());

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

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

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function member = 4;</code>
       */
      public Builder addMember(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Builder builderForValue) {
        ensureMemberIsMutable();
        member_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function member = 4;</code>
       */
      public Builder addMember(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function.Builder builderForValue) {
        ensureMemberIsMutable();
        member_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Function member = 4;</code>
       */
      public Builder addAllMember(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Function> values) {
        ensureMemberIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, member_);

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

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

        return this;
      }

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

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

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

  public interface ParameterOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Parameter)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

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

    /**
     * <code>optional bool has_default_value = 2 [default = false];</code>
     */
    boolean hasHasDefaultValue();
    /**
     * <code>optional bool has_default_value = 2 [default = false];</code>
     */
    boolean getHasDefaultValue();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Parameter}
   */
  public static final class Parameter extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Parameter)
      ParameterOrBuilder {
    // Use Parameter.newBuilder() to construct.
    private Parameter(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Parameter(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Parameter getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Parameter(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              nameId_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              hasDefaultValue_ = 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<Parameter> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Parameter>() {
      public Parameter parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Parameter(input, extensionRegistry);
      }
    };

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

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

    public static final int HAS_DEFAULT_VALUE_FIELD_NUMBER = 2;
    private boolean hasDefaultValue_;
    /**
     * <code>optional bool has_default_value = 2 [default = false];</code>
     */
    public boolean hasHasDefaultValue() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional bool has_default_value = 2 [default = false];</code>
     */
    public boolean getHasDefaultValue() {
      return hasDefaultValue_;
    }

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

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

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

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

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

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Parameter}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Parameter)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ParameterOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

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

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.nameId_ = nameId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.hasDefaultValue_ = hasDefaultValue_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter.getDefaultInstance()) return this;
        if (other.hasNameId()) {
          setNameId(other.getNameId());
        }
        if (other.hasHasDefaultValue()) {
          setHasDefaultValue(other.getHasDefaultValue());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

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

      private boolean hasDefaultValue_ ;
      /**
       * <code>optional bool has_default_value = 2 [default = false];</code>
       */
      public boolean hasHasDefaultValue() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional bool has_default_value = 2 [default = false];</code>
       */
      public boolean getHasDefaultValue() {
        return hasDefaultValue_;
      }
      /**
       * <code>optional bool has_default_value = 2 [default = false];</code>
       */
      public Builder setHasDefaultValue(boolean value) {
        bitField0_ |= 0x00000002;
        hasDefaultValue_ = value;
        
        return this;
      }
      /**
       * <code>optional bool has_default_value = 2 [default = false];</code>
       */
      public Builder clearHasDefaultValue() {
        bitField0_ = (bitField0_ & ~0x00000002);
        hasDefaultValue_ = false;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Parameter)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Parameter)
  }

  public interface DocCommentOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.DocComment)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.DocCommentTag tag = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag> 
        getTagList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.DocCommentTag tag = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag getTag(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.DocCommentTag tag = 1;</code>
     */
    int getTagCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.DocComment}
   */
  public static final class DocComment extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.DocComment)
      DocCommentOrBuilder {
    // Use DocComment.newBuilder() to construct.
    private DocComment(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private DocComment(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public DocComment getDefaultInstanceForType() {
      return defaultInstance;
    }

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

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

    public static final int TAG_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag> tag_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.DocCommentTag tag = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag> getTagList() {
      return tag_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.DocCommentTag tag = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTagOrBuilder> 
        getTagOrBuilderList() {
      return tag_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.DocCommentTag tag = 1;</code>
     */
    public int getTagCount() {
      return tag_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.DocCommentTag tag = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag getTag(int index) {
      return tag_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.DocCommentTag tag = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTagOrBuilder getTagOrBuilder(
        int index) {
      return tag_.get(index);
    }

    private void initFields() {
      tag_ = 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 < getTagCount(); i++) {
        if (!getTag(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 < tag_.size(); i++) {
        output.writeMessage(1, tag_.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 < tag_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, tag_.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.serialization.js.ast.JsAstProtoBuf.DocComment parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment 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.serialization.js.ast.JsAstProtoBuf.DocComment parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment 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.serialization.js.ast.JsAstProtoBuf.DocComment parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment 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.serialization.js.ast.JsAstProtoBuf.DocComment parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment 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.serialization.js.ast.JsAstProtoBuf.DocComment parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment 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.serialization.js.ast.JsAstProtoBuf.DocComment prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.DocComment}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.DocComment)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

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

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          tag_ = java.util.Collections.unmodifiableList(tag_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.tag_ = tag_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment.getDefaultInstance()) return this;
        if (!other.tag_.isEmpty()) {
          if (tag_.isEmpty()) {
            tag_ = other.tag_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureTagIsMutable();
            tag_.addAll(other.tag_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getTagCount(); i++) {
          if (!getTag(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.serialization.js.ast.JsAstProtoBuf.DocComment parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocComment) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag> tag_ =
        java.util.Collections.emptyList();
      private void ensureTagIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          tag_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag>(tag_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.DocCommentTag tag = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag> getTagList() {
        return java.util.Collections.unmodifiableList(tag_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.DocCommentTag tag = 1;</code>
       */
      public int getTagCount() {
        return tag_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.DocCommentTag tag = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag getTag(int index) {
        return tag_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.DocCommentTag tag = 1;</code>
       */
      public Builder setTag(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTagIsMutable();
        tag_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.DocCommentTag tag = 1;</code>
       */
      public Builder setTag(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag.Builder builderForValue) {
        ensureTagIsMutable();
        tag_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.DocCommentTag tag = 1;</code>
       */
      public Builder addTag(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTagIsMutable();
        tag_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.DocCommentTag tag = 1;</code>
       */
      public Builder addTag(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTagIsMutable();
        tag_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.DocCommentTag tag = 1;</code>
       */
      public Builder addTag(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag.Builder builderForValue) {
        ensureTagIsMutable();
        tag_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.DocCommentTag tag = 1;</code>
       */
      public Builder addTag(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag.Builder builderForValue) {
        ensureTagIsMutable();
        tag_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.DocCommentTag tag = 1;</code>
       */
      public Builder addAllTag(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag> values) {
        ensureTagIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, tag_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.DocCommentTag tag = 1;</code>
       */
      public Builder clearTag() {
        tag_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.DocCommentTag tag = 1;</code>
       */
      public Builder removeTag(int index) {
        ensureTagIsMutable();
        tag_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.DocComment)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.DocComment)
  }

  public interface DocCommentTagOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.DocCommentTag)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

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

    /**
     * <code>optional int32 value_string_id = 2;</code>
     */
    boolean hasValueStringId();
    /**
     * <code>optional int32 value_string_id = 2;</code>
     */
    int getValueStringId();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 3;</code>
     */
    boolean hasExpression();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 3;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getExpression();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.DocCommentTag}
   */
  public static final class DocCommentTag extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.DocCommentTag)
      DocCommentTagOrBuilder {
    // Use DocCommentTag.newBuilder() to construct.
    private DocCommentTag(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private DocCommentTag(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public DocCommentTag getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private DocCommentTag(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              nameId_ = input.readInt32();
              break;
            }
            case 16: {
              valueCase_ = 2;
              value_ = input.readInt32();
              break;
            }
            case 26: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (valueCase_ == 3) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) value_).toBuilder();
              }
              value_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 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<DocCommentTag> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<DocCommentTag>() {
      public DocCommentTag parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new DocCommentTag(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<DocCommentTag> 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 {
      VALUE_STRING_ID(2),
      EXPRESSION(3),
      VALUE_NOT_SET(0);
      private int value = 0;
      private ValueCase(int value) {
        this.value = value;
      }
      public static ValueCase valueOf(int value) {
        switch (value) {
          case 2: return VALUE_STRING_ID;
          case 3: return EXPRESSION;
          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 NAME_ID_FIELD_NUMBER = 1;
    private int nameId_;
    /**
     * <code>required int32 name_id = 1;</code>
     */
    public boolean hasNameId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 name_id = 1;</code>
     */
    public int getNameId() {
      return nameId_;
    }

    public static final int VALUE_STRING_ID_FIELD_NUMBER = 2;
    /**
     * <code>optional int32 value_string_id = 2;</code>
     */
    public boolean hasValueStringId() {
      return valueCase_ == 2;
    }
    /**
     * <code>optional int32 value_string_id = 2;</code>
     */
    public int getValueStringId() {
      if (valueCase_ == 2) {
        return (java.lang.Integer) value_;
      }
      return 0;
    }

    public static final int EXPRESSION_FIELD_NUMBER = 3;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 3;</code>
     */
    public boolean hasExpression() {
      return valueCase_ == 3;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 3;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getExpression() {
      if (valueCase_ == 3) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) value_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
    }

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

      if (!hasNameId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (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.writeInt32(1, nameId_);
      }
      if (valueCase_ == 2) {
        output.writeInt32(
            2, (int)((java.lang.Integer) value_));
      }
      if (valueCase_ == 3) {
        output.writeMessage(3, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) value_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, nameId_);
      }
      if (valueCase_ == 2) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(
              2, (int)((java.lang.Integer) value_));
      }
      if (valueCase_ == 3) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) 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.serialization.js.ast.JsAstProtoBuf.DocCommentTag parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag 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.serialization.js.ast.JsAstProtoBuf.DocCommentTag parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag 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.serialization.js.ast.JsAstProtoBuf.DocCommentTag parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag 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.serialization.js.ast.JsAstProtoBuf.DocCommentTag parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag 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.serialization.js.ast.JsAstProtoBuf.DocCommentTag parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag 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.serialization.js.ast.JsAstProtoBuf.DocCommentTag prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.DocCommentTag}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.DocCommentTag)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTagOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        nameId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        valueCase_ = 0;
        value_ = null;
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.nameId_ = nameId_;
        if (valueCase_ == 2) {
          result.value_ = value_;
        }
        if (valueCase_ == 3) {
          result.value_ = value_;
        }
        result.bitField0_ = to_bitField0_;
        result.valueCase_ = valueCase_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag.getDefaultInstance()) return this;
        if (other.hasNameId()) {
          setNameId(other.getNameId());
        }
        switch (other.getValueCase()) {
          case VALUE_STRING_ID: {
            setValueStringId(other.getValueStringId());
            break;
          }
          case EXPRESSION: {
            mergeExpression(other.getExpression());
            break;
          }
          case VALUE_NOT_SET: {
            break;
          }
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

      public Builder mergeFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DocCommentTag) 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_;

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

      /**
       * <code>optional int32 value_string_id = 2;</code>
       */
      public boolean hasValueStringId() {
        return valueCase_ == 2;
      }
      /**
       * <code>optional int32 value_string_id = 2;</code>
       */
      public int getValueStringId() {
        if (valueCase_ == 2) {
          return (java.lang.Integer) value_;
        }
        return 0;
      }
      /**
       * <code>optional int32 value_string_id = 2;</code>
       */
      public Builder setValueStringId(int value) {
        valueCase_ = 2;
        value_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 value_string_id = 2;</code>
       */
      public Builder clearValueStringId() {
        if (valueCase_ == 2) {
          valueCase_ = 0;
          value_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 3;</code>
       */
      public boolean hasExpression() {
        return valueCase_ == 3;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 3;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getExpression() {
        if (valueCase_ == 3) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) value_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 3;</code>
       */
      public Builder setExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        value_ = value;

        valueCase_ = 3;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 3;</code>
       */
      public Builder setExpression(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        value_ = builderForValue.build();

        valueCase_ = 3;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 3;</code>
       */
      public Builder mergeExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (valueCase_ == 3 &&
            value_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          value_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) value_)
              .mergeFrom(value).buildPartial();
        } else {
          value_ = value;
        }

        valueCase_ = 3;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 3;</code>
       */
      public Builder clearExpression() {
        if (valueCase_ == 3) {
          valueCase_ = 0;
          value_ = null;
          
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.DocCommentTag)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.DocCommentTag)
  }

  public interface CommentOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Comment)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required string text = 1;</code>
     */
    boolean hasText();
    /**
     * <code>required string text = 1;</code>
     */
    java.lang.String getText();
    /**
     * <code>required string text = 1;</code>
     */
    org.jetbrains.kotlin.protobuf.ByteString
        getTextBytes();

    /**
     * <code>required bool multiline = 2;</code>
     */
    boolean hasMultiline();
    /**
     * <code>required bool multiline = 2;</code>
     */
    boolean getMultiline();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Comment}
   */
  public static final class Comment extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Comment)
      CommentOrBuilder {
    // Use Comment.newBuilder() to construct.
    private Comment(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Comment(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Comment getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Comment(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              text_ = bs;
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              multiline_ = 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<Comment> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Comment>() {
      public Comment parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Comment(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int TEXT_FIELD_NUMBER = 1;
    private java.lang.Object text_;
    /**
     * <code>required string text = 1;</code>
     */
    public boolean hasText() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string text = 1;</code>
     */
    public java.lang.String getText() {
      java.lang.Object ref = text_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        org.jetbrains.kotlin.protobuf.ByteString bs = 
            (org.jetbrains.kotlin.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          text_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string text = 1;</code>
     */
    public org.jetbrains.kotlin.protobuf.ByteString
        getTextBytes() {
      java.lang.Object ref = text_;
      if (ref instanceof java.lang.String) {
        org.jetbrains.kotlin.protobuf.ByteString b = 
            org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        text_ = b;
        return b;
      } else {
        return (org.jetbrains.kotlin.protobuf.ByteString) ref;
      }
    }

    public static final int MULTILINE_FIELD_NUMBER = 2;
    private boolean multiline_;
    /**
     * <code>required bool multiline = 2;</code>
     */
    public boolean hasMultiline() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required bool multiline = 2;</code>
     */
    public boolean getMultiline() {
      return multiline_;
    }

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

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

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

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

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

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Comment}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Comment)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CommentOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        text_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        multiline_ = false;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.text_ = text_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.multiline_ = multiline_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment.getDefaultInstance()) return this;
        if (other.hasText()) {
          bitField0_ |= 0x00000001;
          text_ = other.text_;
          
        }
        if (other.hasMultiline()) {
          setMultiline(other.getMultiline());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasText()) {
          
          return false;
        }
        if (!hasMultiline()) {
          
          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.serialization.js.ast.JsAstProtoBuf.Comment parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object text_ = "";
      /**
       * <code>required string text = 1;</code>
       */
      public boolean hasText() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string text = 1;</code>
       */
      public java.lang.String getText() {
        java.lang.Object ref = text_;
        if (!(ref instanceof java.lang.String)) {
          org.jetbrains.kotlin.protobuf.ByteString bs =
              (org.jetbrains.kotlin.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            text_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string text = 1;</code>
       */
      public org.jetbrains.kotlin.protobuf.ByteString
          getTextBytes() {
        java.lang.Object ref = text_;
        if (ref instanceof String) {
          org.jetbrains.kotlin.protobuf.ByteString b = 
              org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          text_ = b;
          return b;
        } else {
          return (org.jetbrains.kotlin.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string text = 1;</code>
       */
      public Builder setText(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        text_ = value;
        
        return this;
      }
      /**
       * <code>required string text = 1;</code>
       */
      public Builder clearText() {
        bitField0_ = (bitField0_ & ~0x00000001);
        text_ = getDefaultInstance().getText();
        
        return this;
      }
      /**
       * <code>required string text = 1;</code>
       */
      public Builder setTextBytes(
          org.jetbrains.kotlin.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        text_ = value;
        
        return this;
      }

      private boolean multiline_ ;
      /**
       * <code>required bool multiline = 2;</code>
       */
      public boolean hasMultiline() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required bool multiline = 2;</code>
       */
      public boolean getMultiline() {
        return multiline_;
      }
      /**
       * <code>required bool multiline = 2;</code>
       */
      public Builder setMultiline(boolean value) {
        bitField0_ |= 0x00000002;
        multiline_ = value;
        
        return this;
      }
      /**
       * <code>required bool multiline = 2;</code>
       */
      public Builder clearMultiline() {
        bitField0_ = (bitField0_ & ~0x00000002);
        multiline_ = false;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Comment)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Comment)
  }

  public interface BinaryOperationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.BinaryOperation)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression left = 1;</code>
     */
    boolean hasLeft();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression left = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getLeft();

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression right = 2;</code>
     */
    boolean hasRight();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression right = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getRight();

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.BinaryOperation.Type type = 3;</code>
     */
    boolean hasType();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.BinaryOperation.Type type = 3;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.Type getType();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.BinaryOperation}
   */
  public static final class BinaryOperation extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.BinaryOperation)
      BinaryOperationOrBuilder {
    // Use BinaryOperation.newBuilder() to construct.
    private BinaryOperation(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private BinaryOperation(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public BinaryOperation getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private BinaryOperation(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = left_.toBuilder();
              }
              left_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(left_);
                left_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = right_.toBuilder();
              }
              right_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(right_);
                right_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 24: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.Type value = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.Type.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000004;
                type_ = 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<BinaryOperation> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<BinaryOperation>() {
      public BinaryOperation parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new BinaryOperation(input, extensionRegistry);
      }
    };

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

    /**
     * Protobuf enum {@code org.jetbrains.kotlin.serialization.js.ast.BinaryOperation.Type}
     */
    public enum Type
        implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
      /**
       * <code>MUL = 1;</code>
       */
      MUL(0, 1),
      /**
       * <code>DIV = 2;</code>
       */
      DIV(1, 2),
      /**
       * <code>MOD = 3;</code>
       */
      MOD(2, 3),
      /**
       * <code>ADD = 4;</code>
       */
      ADD(3, 4),
      /**
       * <code>SUB = 5;</code>
       */
      SUB(4, 5),
      /**
       * <code>SHL = 6;</code>
       */
      SHL(5, 6),
      /**
       * <code>SHR = 7;</code>
       */
      SHR(6, 7),
      /**
       * <code>SHRU = 8;</code>
       */
      SHRU(7, 8),
      /**
       * <code>LT = 9;</code>
       */
      LT(8, 9),
      /**
       * <code>LTE = 10;</code>
       */
      LTE(9, 10),
      /**
       * <code>GT = 11;</code>
       */
      GT(10, 11),
      /**
       * <code>GTE = 12;</code>
       */
      GTE(11, 12),
      /**
       * <code>INSTANCEOF = 13;</code>
       */
      INSTANCEOF(12, 13),
      /**
       * <code>IN = 14;</code>
       */
      IN(13, 14),
      /**
       * <code>EQ = 15;</code>
       */
      EQ(14, 15),
      /**
       * <code>NEQ = 16;</code>
       */
      NEQ(15, 16),
      /**
       * <code>REF_EQ = 17;</code>
       */
      REF_EQ(16, 17),
      /**
       * <code>REF_NEQ = 18;</code>
       */
      REF_NEQ(17, 18),
      /**
       * <code>BIT_AND = 19;</code>
       */
      BIT_AND(18, 19),
      /**
       * <code>BIT_XOR = 20;</code>
       */
      BIT_XOR(19, 20),
      /**
       * <code>BIT_OR = 21;</code>
       */
      BIT_OR(20, 21),
      /**
       * <code>AND = 22;</code>
       */
      AND(21, 22),
      /**
       * <code>OR = 23;</code>
       */
      OR(22, 23),
      /**
       * <code>ASG = 24;</code>
       */
      ASG(23, 24),
      /**
       * <code>ASG_ADD = 25;</code>
       */
      ASG_ADD(24, 25),
      /**
       * <code>ASG_SUB = 26;</code>
       */
      ASG_SUB(25, 26),
      /**
       * <code>ASG_MUL = 27;</code>
       */
      ASG_MUL(26, 27),
      /**
       * <code>ASG_DIV = 28;</code>
       */
      ASG_DIV(27, 28),
      /**
       * <code>ASG_MOD = 29;</code>
       */
      ASG_MOD(28, 29),
      /**
       * <code>ASG_SHL = 30;</code>
       */
      ASG_SHL(29, 30),
      /**
       * <code>ASG_SHR = 31;</code>
       */
      ASG_SHR(30, 31),
      /**
       * <code>ASG_SHRU = 32;</code>
       */
      ASG_SHRU(31, 32),
      /**
       * <code>ASG_BIT_AND = 33;</code>
       */
      ASG_BIT_AND(32, 33),
      /**
       * <code>ASG_BIT_OR = 34;</code>
       */
      ASG_BIT_OR(33, 34),
      /**
       * <code>ASG_BIT_XOR = 35;</code>
       */
      ASG_BIT_XOR(34, 35),
      /**
       * <code>COMMA = 36;</code>
       */
      COMMA(35, 36),
      ;

      /**
       * <code>MUL = 1;</code>
       */
      public static final int MUL_VALUE = 1;
      /**
       * <code>DIV = 2;</code>
       */
      public static final int DIV_VALUE = 2;
      /**
       * <code>MOD = 3;</code>
       */
      public static final int MOD_VALUE = 3;
      /**
       * <code>ADD = 4;</code>
       */
      public static final int ADD_VALUE = 4;
      /**
       * <code>SUB = 5;</code>
       */
      public static final int SUB_VALUE = 5;
      /**
       * <code>SHL = 6;</code>
       */
      public static final int SHL_VALUE = 6;
      /**
       * <code>SHR = 7;</code>
       */
      public static final int SHR_VALUE = 7;
      /**
       * <code>SHRU = 8;</code>
       */
      public static final int SHRU_VALUE = 8;
      /**
       * <code>LT = 9;</code>
       */
      public static final int LT_VALUE = 9;
      /**
       * <code>LTE = 10;</code>
       */
      public static final int LTE_VALUE = 10;
      /**
       * <code>GT = 11;</code>
       */
      public static final int GT_VALUE = 11;
      /**
       * <code>GTE = 12;</code>
       */
      public static final int GTE_VALUE = 12;
      /**
       * <code>INSTANCEOF = 13;</code>
       */
      public static final int INSTANCEOF_VALUE = 13;
      /**
       * <code>IN = 14;</code>
       */
      public static final int IN_VALUE = 14;
      /**
       * <code>EQ = 15;</code>
       */
      public static final int EQ_VALUE = 15;
      /**
       * <code>NEQ = 16;</code>
       */
      public static final int NEQ_VALUE = 16;
      /**
       * <code>REF_EQ = 17;</code>
       */
      public static final int REF_EQ_VALUE = 17;
      /**
       * <code>REF_NEQ = 18;</code>
       */
      public static final int REF_NEQ_VALUE = 18;
      /**
       * <code>BIT_AND = 19;</code>
       */
      public static final int BIT_AND_VALUE = 19;
      /**
       * <code>BIT_XOR = 20;</code>
       */
      public static final int BIT_XOR_VALUE = 20;
      /**
       * <code>BIT_OR = 21;</code>
       */
      public static final int BIT_OR_VALUE = 21;
      /**
       * <code>AND = 22;</code>
       */
      public static final int AND_VALUE = 22;
      /**
       * <code>OR = 23;</code>
       */
      public static final int OR_VALUE = 23;
      /**
       * <code>ASG = 24;</code>
       */
      public static final int ASG_VALUE = 24;
      /**
       * <code>ASG_ADD = 25;</code>
       */
      public static final int ASG_ADD_VALUE = 25;
      /**
       * <code>ASG_SUB = 26;</code>
       */
      public static final int ASG_SUB_VALUE = 26;
      /**
       * <code>ASG_MUL = 27;</code>
       */
      public static final int ASG_MUL_VALUE = 27;
      /**
       * <code>ASG_DIV = 28;</code>
       */
      public static final int ASG_DIV_VALUE = 28;
      /**
       * <code>ASG_MOD = 29;</code>
       */
      public static final int ASG_MOD_VALUE = 29;
      /**
       * <code>ASG_SHL = 30;</code>
       */
      public static final int ASG_SHL_VALUE = 30;
      /**
       * <code>ASG_SHR = 31;</code>
       */
      public static final int ASG_SHR_VALUE = 31;
      /**
       * <code>ASG_SHRU = 32;</code>
       */
      public static final int ASG_SHRU_VALUE = 32;
      /**
       * <code>ASG_BIT_AND = 33;</code>
       */
      public static final int ASG_BIT_AND_VALUE = 33;
      /**
       * <code>ASG_BIT_OR = 34;</code>
       */
      public static final int ASG_BIT_OR_VALUE = 34;
      /**
       * <code>ASG_BIT_XOR = 35;</code>
       */
      public static final int ASG_BIT_XOR_VALUE = 35;
      /**
       * <code>COMMA = 36;</code>
       */
      public static final int COMMA_VALUE = 36;


      public final int getNumber() { return value; }

      public static Type valueOf(int value) {
        switch (value) {
          case 1: return MUL;
          case 2: return DIV;
          case 3: return MOD;
          case 4: return ADD;
          case 5: return SUB;
          case 6: return SHL;
          case 7: return SHR;
          case 8: return SHRU;
          case 9: return LT;
          case 10: return LTE;
          case 11: return GT;
          case 12: return GTE;
          case 13: return INSTANCEOF;
          case 14: return IN;
          case 15: return EQ;
          case 16: return NEQ;
          case 17: return REF_EQ;
          case 18: return REF_NEQ;
          case 19: return BIT_AND;
          case 20: return BIT_XOR;
          case 21: return BIT_OR;
          case 22: return AND;
          case 23: return OR;
          case 24: return ASG;
          case 25: return ASG_ADD;
          case 26: return ASG_SUB;
          case 27: return ASG_MUL;
          case 28: return ASG_DIV;
          case 29: return ASG_MOD;
          case 30: return ASG_SHL;
          case 31: return ASG_SHR;
          case 32: return ASG_SHRU;
          case 33: return ASG_BIT_AND;
          case 34: return ASG_BIT_OR;
          case 35: return ASG_BIT_XOR;
          case 36: return COMMA;
          default: return null;
        }
      }

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.serialization.js.ast.BinaryOperation.Type)
    }

    private int bitField0_;
    public static final int LEFT_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression left_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression left = 1;</code>
     */
    public boolean hasLeft() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression left = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getLeft() {
      return left_;
    }

    public static final int RIGHT_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression right_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression right = 2;</code>
     */
    public boolean hasRight() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression right = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getRight() {
      return right_;
    }

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

    private void initFields() {
      left_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      right_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      type_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.Type.MUL;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasLeft()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasRight()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getLeft().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getRight().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, left_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, right_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeEnum(3, type_.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
          .computeMessageSize(1, left_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, right_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(3, type_.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.serialization.js.ast.JsAstProtoBuf.BinaryOperation parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation 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.serialization.js.ast.JsAstProtoBuf.BinaryOperation parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation 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.serialization.js.ast.JsAstProtoBuf.BinaryOperation parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation 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.serialization.js.ast.JsAstProtoBuf.BinaryOperation parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation 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.serialization.js.ast.JsAstProtoBuf.BinaryOperation parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation 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.serialization.js.ast.JsAstProtoBuf.BinaryOperation prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.BinaryOperation}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.BinaryOperation)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperationOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        left_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        right_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        type_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.Type.MUL;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.left_ = left_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.right_ = right_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.type_ = type_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.getDefaultInstance()) return this;
        if (other.hasLeft()) {
          mergeLeft(other.getLeft());
        }
        if (other.hasRight()) {
          mergeRight(other.getRight());
        }
        if (other.hasType()) {
          setType(other.getType());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasLeft()) {
          
          return false;
        }
        if (!hasRight()) {
          
          return false;
        }
        if (!hasType()) {
          
          return false;
        }
        if (!getLeft().isInitialized()) {
          
          return false;
        }
        if (!getRight().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.serialization.js.ast.JsAstProtoBuf.BinaryOperation parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression left_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression left = 1;</code>
       */
      public boolean hasLeft() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression left = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getLeft() {
        return left_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression left = 1;</code>
       */
      public Builder setLeft(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        left_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression left = 1;</code>
       */
      public Builder setLeft(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        left_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression left = 1;</code>
       */
      public Builder mergeLeft(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            left_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          left_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(left_).mergeFrom(value).buildPartial();
        } else {
          left_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression left = 1;</code>
       */
      public Builder clearLeft() {
        left_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression right_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression right = 2;</code>
       */
      public boolean hasRight() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression right = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getRight() {
        return right_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression right = 2;</code>
       */
      public Builder setRight(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        right_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression right = 2;</code>
       */
      public Builder setRight(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        right_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression right = 2;</code>
       */
      public Builder mergeRight(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            right_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          right_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(right_).mergeFrom(value).buildPartial();
        } else {
          right_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression right = 2;</code>
       */
      public Builder clearRight() {
        right_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.Type type_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.Type.MUL;
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.BinaryOperation.Type type = 3;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.BinaryOperation.Type type = 3;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.Type getType() {
        return type_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.BinaryOperation.Type type = 3;</code>
       */
      public Builder setType(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        type_ = value;
        
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.BinaryOperation.Type type = 3;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000004);
        type_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.Type.MUL;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.BinaryOperation)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.BinaryOperation)
  }

  public interface UnaryOperationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.UnaryOperation)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression operand = 1;</code>
     */
    boolean hasOperand();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression operand = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getOperand();

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.UnaryOperation.Type type = 2;</code>
     */
    boolean hasType();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.UnaryOperation.Type type = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.Type getType();

    /**
     * <code>required bool postfix = 3;</code>
     */
    boolean hasPostfix();
    /**
     * <code>required bool postfix = 3;</code>
     */
    boolean getPostfix();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.UnaryOperation}
   */
  public static final class UnaryOperation extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.UnaryOperation)
      UnaryOperationOrBuilder {
    // Use UnaryOperation.newBuilder() to construct.
    private UnaryOperation(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private UnaryOperation(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public UnaryOperation getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private UnaryOperation(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = operand_.toBuilder();
              }
              operand_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(operand_);
                operand_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 16: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.Type value = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.Type.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000002;
                type_ = value;
              }
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              postfix_ = 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<UnaryOperation> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<UnaryOperation>() {
      public UnaryOperation parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new UnaryOperation(input, extensionRegistry);
      }
    };

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

    /**
     * Protobuf enum {@code org.jetbrains.kotlin.serialization.js.ast.UnaryOperation.Type}
     */
    public enum Type
        implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
      /**
       * <code>BIT_NOT = 1;</code>
       */
      BIT_NOT(0, 1),
      /**
       * <code>DEC = 2;</code>
       */
      DEC(1, 2),
      /**
       * <code>DELETE = 3;</code>
       */
      DELETE(2, 3),
      /**
       * <code>INC = 4;</code>
       */
      INC(3, 4),
      /**
       * <code>NEG = 5;</code>
       */
      NEG(4, 5),
      /**
       * <code>POS = 6;</code>
       */
      POS(5, 6),
      /**
       * <code>NOT = 7;</code>
       */
      NOT(6, 7),
      /**
       * <code>TYPEOF = 8;</code>
       */
      TYPEOF(7, 8),
      /**
       * <code>VOID = 9;</code>
       */
      VOID(8, 9),
      ;

      /**
       * <code>BIT_NOT = 1;</code>
       */
      public static final int BIT_NOT_VALUE = 1;
      /**
       * <code>DEC = 2;</code>
       */
      public static final int DEC_VALUE = 2;
      /**
       * <code>DELETE = 3;</code>
       */
      public static final int DELETE_VALUE = 3;
      /**
       * <code>INC = 4;</code>
       */
      public static final int INC_VALUE = 4;
      /**
       * <code>NEG = 5;</code>
       */
      public static final int NEG_VALUE = 5;
      /**
       * <code>POS = 6;</code>
       */
      public static final int POS_VALUE = 6;
      /**
       * <code>NOT = 7;</code>
       */
      public static final int NOT_VALUE = 7;
      /**
       * <code>TYPEOF = 8;</code>
       */
      public static final int TYPEOF_VALUE = 8;
      /**
       * <code>VOID = 9;</code>
       */
      public static final int VOID_VALUE = 9;


      public final int getNumber() { return value; }

      public static Type valueOf(int value) {
        switch (value) {
          case 1: return BIT_NOT;
          case 2: return DEC;
          case 3: return DELETE;
          case 4: return INC;
          case 5: return NEG;
          case 6: return POS;
          case 7: return NOT;
          case 8: return TYPEOF;
          case 9: return VOID;
          default: return null;
        }
      }

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.serialization.js.ast.UnaryOperation.Type)
    }

    private int bitField0_;
    public static final int OPERAND_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression operand_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression operand = 1;</code>
     */
    public boolean hasOperand() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression operand = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getOperand() {
      return operand_;
    }

    public static final int TYPE_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.Type type_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.UnaryOperation.Type type = 2;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.UnaryOperation.Type type = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.Type getType() {
      return type_;
    }

    public static final int POSTFIX_FIELD_NUMBER = 3;
    private boolean postfix_;
    /**
     * <code>required bool postfix = 3;</code>
     */
    public boolean hasPostfix() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required bool postfix = 3;</code>
     */
    public boolean getPostfix() {
      return postfix_;
    }

    private void initFields() {
      operand_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      type_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.Type.BIT_NOT;
      postfix_ = false;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasOperand()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasPostfix()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getOperand().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, operand_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeEnum(2, type_.getNumber());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBool(3, postfix_);
      }
      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, operand_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(2, type_.getNumber());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(3, postfix_);
      }
      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.serialization.js.ast.JsAstProtoBuf.UnaryOperation parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation 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.serialization.js.ast.JsAstProtoBuf.UnaryOperation parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation 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.serialization.js.ast.JsAstProtoBuf.UnaryOperation parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation 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.serialization.js.ast.JsAstProtoBuf.UnaryOperation parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation 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.serialization.js.ast.JsAstProtoBuf.UnaryOperation parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation 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.serialization.js.ast.JsAstProtoBuf.UnaryOperation prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.UnaryOperation}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.UnaryOperation)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperationOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        operand_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.Type.BIT_NOT;
        bitField0_ = (bitField0_ & ~0x00000002);
        postfix_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.operand_ = operand_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.postfix_ = postfix_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.getDefaultInstance()) return this;
        if (other.hasOperand()) {
          mergeOperand(other.getOperand());
        }
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasPostfix()) {
          setPostfix(other.getPostfix());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasOperand()) {
          
          return false;
        }
        if (!hasType()) {
          
          return false;
        }
        if (!hasPostfix()) {
          
          return false;
        }
        if (!getOperand().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.serialization.js.ast.JsAstProtoBuf.UnaryOperation parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression operand_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression operand = 1;</code>
       */
      public boolean hasOperand() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression operand = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getOperand() {
        return operand_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression operand = 1;</code>
       */
      public Builder setOperand(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        operand_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression operand = 1;</code>
       */
      public Builder setOperand(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        operand_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression operand = 1;</code>
       */
      public Builder mergeOperand(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            operand_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          operand_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(operand_).mergeFrom(value).buildPartial();
        } else {
          operand_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression operand = 1;</code>
       */
      public Builder clearOperand() {
        operand_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.Type type_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.Type.BIT_NOT;
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.UnaryOperation.Type type = 2;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.UnaryOperation.Type type = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.Type getType() {
        return type_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.UnaryOperation.Type type = 2;</code>
       */
      public Builder setType(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        type_ = value;
        
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.UnaryOperation.Type type = 2;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000002);
        type_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.Type.BIT_NOT;
        
        return this;
      }

      private boolean postfix_ ;
      /**
       * <code>required bool postfix = 3;</code>
       */
      public boolean hasPostfix() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required bool postfix = 3;</code>
       */
      public boolean getPostfix() {
        return postfix_;
      }
      /**
       * <code>required bool postfix = 3;</code>
       */
      public Builder setPostfix(boolean value) {
        bitField0_ |= 0x00000004;
        postfix_ = value;
        
        return this;
      }
      /**
       * <code>required bool postfix = 3;</code>
       */
      public Builder clearPostfix() {
        bitField0_ = (bitField0_ & ~0x00000004);
        postfix_ = false;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.UnaryOperation)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.UnaryOperation)
  }

  public interface ConditionalOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Conditional)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression test_expression = 1;</code>
     */
    boolean hasTestExpression();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression test_expression = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getTestExpression();

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression then_expression = 2;</code>
     */
    boolean hasThenExpression();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression then_expression = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getThenExpression();

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression else_expression = 3;</code>
     */
    boolean hasElseExpression();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression else_expression = 3;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getElseExpression();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Conditional}
   */
  public static final class Conditional extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Conditional)
      ConditionalOrBuilder {
    // Use Conditional.newBuilder() to construct.
    private Conditional(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Conditional(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Conditional getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Conditional(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = testExpression_.toBuilder();
              }
              testExpression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(testExpression_);
                testExpression_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = thenExpression_.toBuilder();
              }
              thenExpression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(thenExpression_);
                thenExpression_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = elseExpression_.toBuilder();
              }
              elseExpression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(elseExpression_);
                elseExpression_ = 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<Conditional> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Conditional>() {
      public Conditional parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Conditional(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int TEST_EXPRESSION_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression testExpression_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression test_expression = 1;</code>
     */
    public boolean hasTestExpression() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression test_expression = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getTestExpression() {
      return testExpression_;
    }

    public static final int THEN_EXPRESSION_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression thenExpression_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression then_expression = 2;</code>
     */
    public boolean hasThenExpression() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression then_expression = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getThenExpression() {
      return thenExpression_;
    }

    public static final int ELSE_EXPRESSION_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression elseExpression_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression else_expression = 3;</code>
     */
    public boolean hasElseExpression() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression else_expression = 3;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getElseExpression() {
      return elseExpression_;
    }

    private void initFields() {
      testExpression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      thenExpression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      elseExpression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTestExpression()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasThenExpression()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasElseExpression()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTestExpression().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getThenExpression().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getElseExpression().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, testExpression_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, thenExpression_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, elseExpression_);
      }
      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, testExpression_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, thenExpression_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, elseExpression_);
      }
      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.serialization.js.ast.JsAstProtoBuf.Conditional parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional 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.serialization.js.ast.JsAstProtoBuf.Conditional parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional 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.serialization.js.ast.JsAstProtoBuf.Conditional parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional 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.serialization.js.ast.JsAstProtoBuf.Conditional parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional 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.serialization.js.ast.JsAstProtoBuf.Conditional parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional 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.serialization.js.ast.JsAstProtoBuf.Conditional prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Conditional}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Conditional)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ConditionalOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        testExpression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        thenExpression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        elseExpression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.testExpression_ = testExpression_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.thenExpression_ = thenExpression_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.elseExpression_ = elseExpression_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional.getDefaultInstance()) return this;
        if (other.hasTestExpression()) {
          mergeTestExpression(other.getTestExpression());
        }
        if (other.hasThenExpression()) {
          mergeThenExpression(other.getThenExpression());
        }
        if (other.hasElseExpression()) {
          mergeElseExpression(other.getElseExpression());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTestExpression()) {
          
          return false;
        }
        if (!hasThenExpression()) {
          
          return false;
        }
        if (!hasElseExpression()) {
          
          return false;
        }
        if (!getTestExpression().isInitialized()) {
          
          return false;
        }
        if (!getThenExpression().isInitialized()) {
          
          return false;
        }
        if (!getElseExpression().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.serialization.js.ast.JsAstProtoBuf.Conditional parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Conditional) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression testExpression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression test_expression = 1;</code>
       */
      public boolean hasTestExpression() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression test_expression = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getTestExpression() {
        return testExpression_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression test_expression = 1;</code>
       */
      public Builder setTestExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        testExpression_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression test_expression = 1;</code>
       */
      public Builder setTestExpression(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        testExpression_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression test_expression = 1;</code>
       */
      public Builder mergeTestExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            testExpression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          testExpression_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(testExpression_).mergeFrom(value).buildPartial();
        } else {
          testExpression_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression test_expression = 1;</code>
       */
      public Builder clearTestExpression() {
        testExpression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression thenExpression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression then_expression = 2;</code>
       */
      public boolean hasThenExpression() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression then_expression = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getThenExpression() {
        return thenExpression_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression then_expression = 2;</code>
       */
      public Builder setThenExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        thenExpression_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression then_expression = 2;</code>
       */
      public Builder setThenExpression(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        thenExpression_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression then_expression = 2;</code>
       */
      public Builder mergeThenExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            thenExpression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          thenExpression_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(thenExpression_).mergeFrom(value).buildPartial();
        } else {
          thenExpression_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression then_expression = 2;</code>
       */
      public Builder clearThenExpression() {
        thenExpression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression elseExpression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression else_expression = 3;</code>
       */
      public boolean hasElseExpression() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression else_expression = 3;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getElseExpression() {
        return elseExpression_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression else_expression = 3;</code>
       */
      public Builder setElseExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        elseExpression_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression else_expression = 3;</code>
       */
      public Builder setElseExpression(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        elseExpression_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression else_expression = 3;</code>
       */
      public Builder mergeElseExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            elseExpression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          elseExpression_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(elseExpression_).mergeFrom(value).buildPartial();
        } else {
          elseExpression_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression else_expression = 3;</code>
       */
      public Builder clearElseExpression() {
        elseExpression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Conditional)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Conditional)
  }

  public interface ArrayAccessOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.ArrayAccess)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression array = 1;</code>
     */
    boolean hasArray();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression array = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getArray();

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression index = 2;</code>
     */
    boolean hasIndex();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression index = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getIndex();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.ArrayAccess}
   */
  public static final class ArrayAccess extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.ArrayAccess)
      ArrayAccessOrBuilder {
    // Use ArrayAccess.newBuilder() to construct.
    private ArrayAccess(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ArrayAccess(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public ArrayAccess getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private ArrayAccess(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = array_.toBuilder();
              }
              array_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(array_);
                array_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = index_.toBuilder();
              }
              index_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(index_);
                index_ = 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<ArrayAccess> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<ArrayAccess>() {
      public ArrayAccess parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new ArrayAccess(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int ARRAY_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression array_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression array = 1;</code>
     */
    public boolean hasArray() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression array = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getArray() {
      return array_;
    }

    public static final int INDEX_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression index_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression index = 2;</code>
     */
    public boolean hasIndex() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression index = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getIndex() {
      return index_;
    }

    private void initFields() {
      array_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      index_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasArray()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIndex()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getArray().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getIndex().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, array_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, 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
          .computeMessageSize(1, array_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, 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.serialization.js.ast.JsAstProtoBuf.ArrayAccess parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess 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.serialization.js.ast.JsAstProtoBuf.ArrayAccess parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess 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.serialization.js.ast.JsAstProtoBuf.ArrayAccess parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess 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.serialization.js.ast.JsAstProtoBuf.ArrayAccess parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess 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.serialization.js.ast.JsAstProtoBuf.ArrayAccess parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess 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.serialization.js.ast.JsAstProtoBuf.ArrayAccess prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.ArrayAccess}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.ArrayAccess)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccessOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        array_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        index_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.array_ = array_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.index_ = index_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ArrayAccess.getDefaultInstance()) return this;
        if (other.hasArray()) {
          mergeArray(other.getArray());
        }
        if (other.hasIndex()) {
          mergeIndex(other.getIndex());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression array_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression array = 1;</code>
       */
      public boolean hasArray() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression array = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getArray() {
        return array_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression array = 1;</code>
       */
      public Builder setArray(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        array_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression array = 1;</code>
       */
      public Builder setArray(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        array_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression array = 1;</code>
       */
      public Builder mergeArray(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            array_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          array_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(array_).mergeFrom(value).buildPartial();
        } else {
          array_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression array = 1;</code>
       */
      public Builder clearArray() {
        array_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression index_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression index = 2;</code>
       */
      public boolean hasIndex() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression index = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getIndex() {
        return index_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression index = 2;</code>
       */
      public Builder setIndex(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        index_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression index = 2;</code>
       */
      public Builder setIndex(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        index_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression index = 2;</code>
       */
      public Builder mergeIndex(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            index_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          index_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(index_).mergeFrom(value).buildPartial();
        } else {
          index_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression index = 2;</code>
       */
      public Builder clearIndex() {
        index_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.ArrayAccess)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.ArrayAccess)
  }

  public interface NameReferenceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.NameReference)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

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

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
     */
    boolean hasQualifier();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getQualifier();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
     */
    boolean hasInlineStrategy();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy getInlineStrategy();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.NameReference}
   */
  public static final class NameReference extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.NameReference)
      NameReferenceOrBuilder {
    // Use NameReference.newBuilder() to construct.
    private NameReference(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private NameReference(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public NameReference getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private NameReference(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              nameId_ = input.readInt32();
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = qualifier_.toBuilder();
              }
              qualifier_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(qualifier_);
                qualifier_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 24: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy value = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000004;
                inlineStrategy_ = 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<NameReference> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<NameReference>() {
      public NameReference parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new NameReference(input, extensionRegistry);
      }
    };

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

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

    public static final int QUALIFIER_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression qualifier_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
     */
    public boolean hasQualifier() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getQualifier() {
      return qualifier_;
    }

    public static final int INLINE_STRATEGY_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy inlineStrategy_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
     */
    public boolean hasInlineStrategy() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy getInlineStrategy() {
      return inlineStrategy_;
    }

    private void initFields() {
      nameId_ = 0;
      qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

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

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, nameId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, qualifier_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(3, inlineStrategy_.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.serialization.js.ast.JsAstProtoBuf.NameReference parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference 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.serialization.js.ast.JsAstProtoBuf.NameReference parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference 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.serialization.js.ast.JsAstProtoBuf.NameReference parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference 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.serialization.js.ast.JsAstProtoBuf.NameReference parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference 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.serialization.js.ast.JsAstProtoBuf.NameReference parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference 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.serialization.js.ast.JsAstProtoBuf.NameReference prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.NameReference}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.NameReference)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReferenceOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        nameId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.nameId_ = nameId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.qualifier_ = qualifier_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.inlineStrategy_ = inlineStrategy_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference.getDefaultInstance()) return this;
        if (other.hasNameId()) {
          setNameId(other.getNameId());
        }
        if (other.hasQualifier()) {
          mergeQualifier(other.getQualifier());
        }
        if (other.hasInlineStrategy()) {
          setInlineStrategy(other.getInlineStrategy());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasNameId()) {
          
          return false;
        }
        if (hasQualifier()) {
          if (!getQualifier().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.serialization.js.ast.JsAstProtoBuf.NameReference parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameReference) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
       */
      public boolean hasQualifier() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getQualifier() {
        return qualifier_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
       */
      public Builder setQualifier(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        qualifier_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
       */
      public Builder setQualifier(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        qualifier_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
       */
      public Builder mergeQualifier(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            qualifier_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          qualifier_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(qualifier_).mergeFrom(value).buildPartial();
        } else {
          qualifier_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
       */
      public Builder clearQualifier() {
        qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
       */
      public boolean hasInlineStrategy() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy getInlineStrategy() {
        return inlineStrategy_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
       */
      public Builder setInlineStrategy(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        inlineStrategy_ = value;
        
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
       */
      public Builder clearInlineStrategy() {
        bitField0_ = (bitField0_ & ~0x00000004);
        inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.NameReference)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.NameReference)
  }

  public interface PropertyReferenceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.PropertyReference)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required int32 string_id = 1;</code>
     */
    boolean hasStringId();
    /**
     * <code>required int32 string_id = 1;</code>
     */
    int getStringId();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
     */
    boolean hasQualifier();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getQualifier();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
     */
    boolean hasInlineStrategy();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy getInlineStrategy();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.PropertyReference}
   */
  public static final class PropertyReference extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.PropertyReference)
      PropertyReferenceOrBuilder {
    // Use PropertyReference.newBuilder() to construct.
    private PropertyReference(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private PropertyReference(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public PropertyReference getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private PropertyReference(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              stringId_ = input.readInt32();
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = qualifier_.toBuilder();
              }
              qualifier_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(qualifier_);
                qualifier_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 24: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy value = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000004;
                inlineStrategy_ = 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<PropertyReference> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<PropertyReference>() {
      public PropertyReference parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new PropertyReference(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int STRING_ID_FIELD_NUMBER = 1;
    private int stringId_;
    /**
     * <code>required int32 string_id = 1;</code>
     */
    public boolean hasStringId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 string_id = 1;</code>
     */
    public int getStringId() {
      return stringId_;
    }

    public static final int QUALIFIER_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression qualifier_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
     */
    public boolean hasQualifier() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getQualifier() {
      return qualifier_;
    }

    public static final int INLINE_STRATEGY_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy inlineStrategy_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
     */
    public boolean hasInlineStrategy() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy getInlineStrategy() {
      return inlineStrategy_;
    }

    private void initFields() {
      stringId_ = 0;
      qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasStringId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasQualifier()) {
        if (!getQualifier().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, stringId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, qualifier_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeEnum(3, inlineStrategy_.getNumber());
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, stringId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, qualifier_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(3, inlineStrategy_.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.serialization.js.ast.JsAstProtoBuf.PropertyReference parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference 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.serialization.js.ast.JsAstProtoBuf.PropertyReference parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference 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.serialization.js.ast.JsAstProtoBuf.PropertyReference parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference 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.serialization.js.ast.JsAstProtoBuf.PropertyReference parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference 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.serialization.js.ast.JsAstProtoBuf.PropertyReference parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference 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.serialization.js.ast.JsAstProtoBuf.PropertyReference prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.PropertyReference}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.PropertyReference)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReferenceOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        stringId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.stringId_ = stringId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.qualifier_ = qualifier_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.inlineStrategy_ = inlineStrategy_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference.getDefaultInstance()) return this;
        if (other.hasStringId()) {
          setStringId(other.getStringId());
        }
        if (other.hasQualifier()) {
          mergeQualifier(other.getQualifier());
        }
        if (other.hasInlineStrategy()) {
          setInlineStrategy(other.getInlineStrategy());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasStringId()) {
          
          return false;
        }
        if (hasQualifier()) {
          if (!getQualifier().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.serialization.js.ast.JsAstProtoBuf.PropertyReference parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.PropertyReference) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int stringId_ ;
      /**
       * <code>required int32 string_id = 1;</code>
       */
      public boolean hasStringId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 string_id = 1;</code>
       */
      public int getStringId() {
        return stringId_;
      }
      /**
       * <code>required int32 string_id = 1;</code>
       */
      public Builder setStringId(int value) {
        bitField0_ |= 0x00000001;
        stringId_ = value;
        
        return this;
      }
      /**
       * <code>required int32 string_id = 1;</code>
       */
      public Builder clearStringId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        stringId_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
       */
      public boolean hasQualifier() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getQualifier() {
        return qualifier_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
       */
      public Builder setQualifier(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        qualifier_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
       */
      public Builder setQualifier(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        qualifier_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
       */
      public Builder mergeQualifier(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            qualifier_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          qualifier_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(qualifier_).mergeFrom(value).buildPartial();
        } else {
          qualifier_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
       */
      public Builder clearQualifier() {
        qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
       */
      public boolean hasInlineStrategy() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy getInlineStrategy() {
        return inlineStrategy_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
       */
      public Builder setInlineStrategy(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        inlineStrategy_ = value;
        
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
       */
      public Builder clearInlineStrategy() {
        bitField0_ = (bitField0_ & ~0x00000004);
        inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.PropertyReference)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.PropertyReference)
  }

  public interface InvocationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Invocation)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 1;</code>
     */
    boolean hasQualifier();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getQualifier();

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression argument = 2;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression> 
        getArgumentList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression argument = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getArgument(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression argument = 2;</code>
     */
    int getArgumentCount();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
     */
    boolean hasInlineStrategy();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy getInlineStrategy();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Invocation}
   */
  public static final class Invocation extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Invocation)
      InvocationOrBuilder {
    // Use Invocation.newBuilder() to construct.
    private Invocation(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Invocation(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Invocation getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Invocation(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = qualifier_.toBuilder();
              }
              qualifier_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(qualifier_);
                qualifier_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                argument_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression>();
                mutable_bitField0_ |= 0x00000002;
              }
              argument_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry));
              break;
            }
            case 24: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy value = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000002;
                inlineStrategy_ = value;
              }
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          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<Invocation> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Invocation>() {
      public Invocation parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Invocation(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int QUALIFIER_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression qualifier_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 1;</code>
     */
    public boolean hasQualifier() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getQualifier() {
      return qualifier_;
    }

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

    public static final int INLINE_STRATEGY_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy inlineStrategy_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
     */
    public boolean hasInlineStrategy() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy getInlineStrategy() {
      return inlineStrategy_;
    }

    private void initFields() {
      qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      argument_ = java.util.Collections.emptyList();
      inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasQualifier()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getQualifier().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, qualifier_);
      }
      for (int i = 0; i < argument_.size(); i++) {
        output.writeMessage(2, argument_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeEnum(3, inlineStrategy_.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
          .computeMessageSize(1, qualifier_);
      }
      for (int i = 0; i < argument_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, argument_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(3, inlineStrategy_.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.serialization.js.ast.JsAstProtoBuf.Invocation parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation 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.serialization.js.ast.JsAstProtoBuf.Invocation parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation 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.serialization.js.ast.JsAstProtoBuf.Invocation parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation 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.serialization.js.ast.JsAstProtoBuf.Invocation parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation 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.serialization.js.ast.JsAstProtoBuf.Invocation parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation 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.serialization.js.ast.JsAstProtoBuf.Invocation prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Invocation}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Invocation)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InvocationOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        argument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.qualifier_ = qualifier_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          argument_ = java.util.Collections.unmodifiableList(argument_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.argument_ = argument_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        result.inlineStrategy_ = inlineStrategy_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation.getDefaultInstance()) return this;
        if (other.hasQualifier()) {
          mergeQualifier(other.getQualifier());
        }
        if (!other.argument_.isEmpty()) {
          if (argument_.isEmpty()) {
            argument_ = other.argument_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureArgumentIsMutable();
            argument_.addAll(other.argument_);
          }
          
        }
        if (other.hasInlineStrategy()) {
          setInlineStrategy(other.getInlineStrategy());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasQualifier()) {
          
          return false;
        }
        if (!getQualifier().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.serialization.js.ast.JsAstProtoBuf.Invocation parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Invocation) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 1;</code>
       */
      public boolean hasQualifier() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getQualifier() {
        return qualifier_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 1;</code>
       */
      public Builder setQualifier(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        qualifier_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 1;</code>
       */
      public Builder setQualifier(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        qualifier_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 1;</code>
       */
      public Builder mergeQualifier(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            qualifier_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          qualifier_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(qualifier_).mergeFrom(value).buildPartial();
        } else {
          qualifier_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 1;</code>
       */
      public Builder clearQualifier() {
        qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression> argument_ =
        java.util.Collections.emptyList();
      private void ensureArgumentIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          argument_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression>(argument_);
          bitField0_ |= 0x00000002;
         }
      }

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

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

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

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

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

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

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression argument = 2;</code>
       */
      public Builder addAllArgument(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression> values) {
        ensureArgumentIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, argument_);

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

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

        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
       */
      public boolean hasInlineStrategy() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy getInlineStrategy() {
        return inlineStrategy_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
       */
      public Builder setInlineStrategy(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        inlineStrategy_ = value;
        
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
       */
      public Builder clearInlineStrategy() {
        bitField0_ = (bitField0_ & ~0x00000004);
        inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Invocation)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Invocation)
  }

  public interface InstantiationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Instantiation)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 1;</code>
     */
    boolean hasQualifier();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getQualifier();

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

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

    public Instantiation getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Instantiation(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = qualifier_.toBuilder();
              }
              qualifier_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(qualifier_);
                qualifier_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                argument_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression>();
                mutable_bitField0_ |= 0x00000002;
              }
              argument_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          argument_ = java.util.Collections.unmodifiableList(argument_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Instantiation> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Instantiation>() {
      public Instantiation parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Instantiation(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int QUALIFIER_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression qualifier_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 1;</code>
     */
    public boolean hasQualifier() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getQualifier() {
      return qualifier_;
    }

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

    private void initFields() {
      qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.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 (!hasQualifier()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getQualifier().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, qualifier_);
      }
      for (int i = 0; i < argument_.size(); i++) {
        output.writeMessage(2, argument_.get(i));
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, qualifier_);
      }
      for (int i = 0; i < argument_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, argument_.get(i));
      }
      size += unknownFields.size();
      memoizedSerializedSize = size;
      return size;
    }

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

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

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Instantiation}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Instantiation)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InstantiationOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        argument_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

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

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation.getDefaultInstance()) return this;
        if (other.hasQualifier()) {
          mergeQualifier(other.getQualifier());
        }
        if (!other.argument_.isEmpty()) {
          if (argument_.isEmpty()) {
            argument_ = other.argument_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureArgumentIsMutable();
            argument_.addAll(other.argument_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasQualifier()) {
          
          return false;
        }
        if (!getQualifier().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.serialization.js.ast.JsAstProtoBuf.Instantiation parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Instantiation) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 1;</code>
       */
      public boolean hasQualifier() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getQualifier() {
        return qualifier_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 1;</code>
       */
      public Builder setQualifier(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        qualifier_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 1;</code>
       */
      public Builder setQualifier(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        qualifier_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 1;</code>
       */
      public Builder mergeQualifier(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            qualifier_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          qualifier_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(qualifier_).mergeFrom(value).buildPartial();
        } else {
          qualifier_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 1;</code>
       */
      public Builder clearQualifier() {
        qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression> argument_ =
        java.util.Collections.emptyList();
      private void ensureArgumentIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          argument_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression>(argument_);
          bitField0_ |= 0x00000002;
         }
      }

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

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

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

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

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

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

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression argument = 2;</code>
       */
      public Builder addAllArgument(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression> values) {
        ensureArgumentIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, argument_);

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

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

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Instantiation)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Instantiation)
  }

  public interface StatementOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Statement)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional int32 fileId = 1;</code>
     */
    boolean hasFileId();
    /**
     * <code>optional int32 fileId = 1;</code>
     */
    int getFileId();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 2;</code>
     */
    boolean hasLocation();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location getLocation();

    /**
     * <code>optional bool synthetic = 3 [default = false];</code>
     */
    boolean hasSynthetic();
    /**
     * <code>optional bool synthetic = 3 [default = false];</code>
     */
    boolean getSynthetic();

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 4;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> 
        getBeforeCommentsList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 4;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment getBeforeComments(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 4;</code>
     */
    int getBeforeCommentsCount();

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 5;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> 
        getAfterCommentsList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 5;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment getAfterComments(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 5;</code>
     */
    int getAfterCommentsCount();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Return return_statement = 21;</code>
     */
    boolean hasReturnStatement();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Return return_statement = 21;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return getReturnStatement();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Throw throw_statement = 22;</code>
     */
    boolean hasThrowStatement();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Throw throw_statement = 22;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw getThrowStatement();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Break break_statement = 23;</code>
     */
    boolean hasBreakStatement();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Break break_statement = 23;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break getBreakStatement();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Continue continue_statement = 24;</code>
     */
    boolean hasContinueStatement();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Continue continue_statement = 24;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue getContinueStatement();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Debugger debugger = 25;</code>
     */
    boolean hasDebugger();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Debugger debugger = 25;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger getDebugger();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ExpressionStatement expression = 26;</code>
     */
    boolean hasExpression();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ExpressionStatement expression = 26;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement getExpression();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Vars vars = 27;</code>
     */
    boolean hasVars();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Vars vars = 27;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars getVars();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Block block = 28;</code>
     */
    boolean hasBlock();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Block block = 28;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block getBlock();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock composite_block = 29;</code>
     */
    boolean hasCompositeBlock();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock composite_block = 29;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getCompositeBlock();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Label label = 30;</code>
     */
    boolean hasLabel();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Label label = 30;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label getLabel();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.If if_statement = 31;</code>
     */
    boolean hasIfStatement();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.If if_statement = 31;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If getIfStatement();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Switch switch_statement = 32;</code>
     */
    boolean hasSwitchStatement();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Switch switch_statement = 32;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch getSwitchStatement();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.While while_statement = 33;</code>
     */
    boolean hasWhileStatement();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.While while_statement = 33;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While getWhileStatement();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.DoWhile do_while_statement = 34;</code>
     */
    boolean hasDoWhileStatement();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.DoWhile do_while_statement = 34;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile getDoWhileStatement();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.For for_statement = 35;</code>
     */
    boolean hasForStatement();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.For for_statement = 35;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For getForStatement();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ForIn for_in_statement = 36;</code>
     */
    boolean hasForInStatement();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ForIn for_in_statement = 36;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn getForInStatement();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Try try_statement = 37;</code>
     */
    boolean hasTryStatement();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Try try_statement = 37;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try getTryStatement();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Empty empty = 38;</code>
     */
    boolean hasEmpty();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Empty empty = 38;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty getEmpty();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SingleLineComment single_line_comment = 39;</code>
     */
    boolean hasSingleLineComment();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SingleLineComment single_line_comment = 39;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment getSingleLineComment();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.MultiLineComment multi_line_comment = 40;</code>
     */
    boolean hasMultiLineComment();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.MultiLineComment multi_line_comment = 40;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment getMultiLineComment();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Statement}
   */
  public static final class Statement extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Statement)
      StatementOrBuilder {
    // Use Statement.newBuilder() to construct.
    private Statement(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Statement(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Statement getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Statement(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              fileId_ = input.readInt32();
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = location_.toBuilder();
              }
              location_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(location_);
                location_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              synthetic_ = input.readBool();
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                beforeComments_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment>();
                mutable_bitField0_ |= 0x00000008;
              }
              beforeComments_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment.PARSER, extensionRegistry));
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                afterComments_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment>();
                mutable_bitField0_ |= 0x00000010;
              }
              afterComments_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment.PARSER, extensionRegistry));
              break;
            }
            case 170: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return.Builder subBuilder = null;
              if (statementCase_ == 21) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 21;
              break;
            }
            case 178: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw.Builder subBuilder = null;
              if (statementCase_ == 22) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 22;
              break;
            }
            case 186: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break.Builder subBuilder = null;
              if (statementCase_ == 23) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 23;
              break;
            }
            case 194: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue.Builder subBuilder = null;
              if (statementCase_ == 24) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 24;
              break;
            }
            case 202: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger.Builder subBuilder = null;
              if (statementCase_ == 25) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 25;
              break;
            }
            case 210: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement.Builder subBuilder = null;
              if (statementCase_ == 26) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 26;
              break;
            }
            case 218: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars.Builder subBuilder = null;
              if (statementCase_ == 27) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 27;
              break;
            }
            case 226: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block.Builder subBuilder = null;
              if (statementCase_ == 28) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 28;
              break;
            }
            case 234: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.Builder subBuilder = null;
              if (statementCase_ == 29) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 29;
              break;
            }
            case 242: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label.Builder subBuilder = null;
              if (statementCase_ == 30) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 30;
              break;
            }
            case 250: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If.Builder subBuilder = null;
              if (statementCase_ == 31) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 31;
              break;
            }
            case 258: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch.Builder subBuilder = null;
              if (statementCase_ == 32) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 32;
              break;
            }
            case 266: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While.Builder subBuilder = null;
              if (statementCase_ == 33) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 33;
              break;
            }
            case 274: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile.Builder subBuilder = null;
              if (statementCase_ == 34) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 34;
              break;
            }
            case 282: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For.Builder subBuilder = null;
              if (statementCase_ == 35) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 35;
              break;
            }
            case 290: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn.Builder subBuilder = null;
              if (statementCase_ == 36) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 36;
              break;
            }
            case 298: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try.Builder subBuilder = null;
              if (statementCase_ == 37) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 37;
              break;
            }
            case 306: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty.Builder subBuilder = null;
              if (statementCase_ == 38) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 38;
              break;
            }
            case 314: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment.Builder subBuilder = null;
              if (statementCase_ == 39) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 39;
              break;
            }
            case 322: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment.Builder subBuilder = null;
              if (statementCase_ == 40) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment) statement_).toBuilder();
              }
              statement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment) statement_);
                statement_ = subBuilder.buildPartial();
              }
              statementCase_ = 40;
              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)) {
          beforeComments_ = java.util.Collections.unmodifiableList(beforeComments_);
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          afterComments_ = java.util.Collections.unmodifiableList(afterComments_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Statement> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Statement>() {
      public Statement parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Statement(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<Statement> 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 {
      RETURN_STATEMENT(21),
      THROW_STATEMENT(22),
      BREAK_STATEMENT(23),
      CONTINUE_STATEMENT(24),
      DEBUGGER(25),
      EXPRESSION(26),
      VARS(27),
      BLOCK(28),
      COMPOSITE_BLOCK(29),
      LABEL(30),
      IF_STATEMENT(31),
      SWITCH_STATEMENT(32),
      WHILE_STATEMENT(33),
      DO_WHILE_STATEMENT(34),
      FOR_STATEMENT(35),
      FOR_IN_STATEMENT(36),
      TRY_STATEMENT(37),
      EMPTY(38),
      SINGLE_LINE_COMMENT(39),
      MULTI_LINE_COMMENT(40),
      STATEMENT_NOT_SET(0);
      private int value = 0;
      private StatementCase(int value) {
        this.value = value;
      }
      public static StatementCase valueOf(int value) {
        switch (value) {
          case 21: return RETURN_STATEMENT;
          case 22: return THROW_STATEMENT;
          case 23: return BREAK_STATEMENT;
          case 24: return CONTINUE_STATEMENT;
          case 25: return DEBUGGER;
          case 26: return EXPRESSION;
          case 27: return VARS;
          case 28: return BLOCK;
          case 29: return COMPOSITE_BLOCK;
          case 30: return LABEL;
          case 31: return IF_STATEMENT;
          case 32: return SWITCH_STATEMENT;
          case 33: return WHILE_STATEMENT;
          case 34: return DO_WHILE_STATEMENT;
          case 35: return FOR_STATEMENT;
          case 36: return FOR_IN_STATEMENT;
          case 37: return TRY_STATEMENT;
          case 38: return EMPTY;
          case 39: return SINGLE_LINE_COMMENT;
          case 40: return MULTI_LINE_COMMENT;
          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 FILEID_FIELD_NUMBER = 1;
    private int fileId_;
    /**
     * <code>optional int32 fileId = 1;</code>
     */
    public boolean hasFileId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int32 fileId = 1;</code>
     */
    public int getFileId() {
      return fileId_;
    }

    public static final int LOCATION_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location location_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 2;</code>
     */
    public boolean hasLocation() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location getLocation() {
      return location_;
    }

    public static final int SYNTHETIC_FIELD_NUMBER = 3;
    private boolean synthetic_;
    /**
     * <code>optional bool synthetic = 3 [default = false];</code>
     */
    public boolean hasSynthetic() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional bool synthetic = 3 [default = false];</code>
     */
    public boolean getSynthetic() {
      return synthetic_;
    }

    public static final int BEFORE_COMMENTS_FIELD_NUMBER = 4;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> beforeComments_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 4;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> getBeforeCommentsList() {
      return beforeComments_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 4;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CommentOrBuilder> 
        getBeforeCommentsOrBuilderList() {
      return beforeComments_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 4;</code>
     */
    public int getBeforeCommentsCount() {
      return beforeComments_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 4;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment getBeforeComments(int index) {
      return beforeComments_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 4;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CommentOrBuilder getBeforeCommentsOrBuilder(
        int index) {
      return beforeComments_.get(index);
    }

    public static final int AFTER_COMMENTS_FIELD_NUMBER = 5;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> afterComments_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 5;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> getAfterCommentsList() {
      return afterComments_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 5;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CommentOrBuilder> 
        getAfterCommentsOrBuilderList() {
      return afterComments_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 5;</code>
     */
    public int getAfterCommentsCount() {
      return afterComments_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 5;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment getAfterComments(int index) {
      return afterComments_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 5;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CommentOrBuilder getAfterCommentsOrBuilder(
        int index) {
      return afterComments_.get(index);
    }

    public static final int RETURN_STATEMENT_FIELD_NUMBER = 21;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Return return_statement = 21;</code>
     */
    public boolean hasReturnStatement() {
      return statementCase_ == 21;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Return return_statement = 21;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return getReturnStatement() {
      if (statementCase_ == 21) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return) statement_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return.getDefaultInstance();
    }

    public static final int THROW_STATEMENT_FIELD_NUMBER = 22;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Throw throw_statement = 22;</code>
     */
    public boolean hasThrowStatement() {
      return statementCase_ == 22;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Throw throw_statement = 22;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw getThrowStatement() {
      if (statementCase_ == 22) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw) statement_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw.getDefaultInstance();
    }

    public static final int BREAK_STATEMENT_FIELD_NUMBER = 23;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Break break_statement = 23;</code>
     */
    public boolean hasBreakStatement() {
      return statementCase_ == 23;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Break break_statement = 23;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break getBreakStatement() {
      if (statementCase_ == 23) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break) statement_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break.getDefaultInstance();
    }

    public static final int CONTINUE_STATEMENT_FIELD_NUMBER = 24;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Continue continue_statement = 24;</code>
     */
    public boolean hasContinueStatement() {
      return statementCase_ == 24;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Continue continue_statement = 24;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue getContinueStatement() {
      if (statementCase_ == 24) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue) statement_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue.getDefaultInstance();
    }

    public static final int DEBUGGER_FIELD_NUMBER = 25;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Debugger debugger = 25;</code>
     */
    public boolean hasDebugger() {
      return statementCase_ == 25;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Debugger debugger = 25;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger getDebugger() {
      if (statementCase_ == 25) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger) statement_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger.getDefaultInstance();
    }

    public static final int EXPRESSION_FIELD_NUMBER = 26;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ExpressionStatement expression = 26;</code>
     */
    public boolean hasExpression() {
      return statementCase_ == 26;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ExpressionStatement expression = 26;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement getExpression() {
      if (statementCase_ == 26) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement) statement_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement.getDefaultInstance();
    }

    public static final int VARS_FIELD_NUMBER = 27;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Vars vars = 27;</code>
     */
    public boolean hasVars() {
      return statementCase_ == 27;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Vars vars = 27;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars getVars() {
      if (statementCase_ == 27) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars) statement_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars.getDefaultInstance();
    }

    public static final int BLOCK_FIELD_NUMBER = 28;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Block block = 28;</code>
     */
    public boolean hasBlock() {
      return statementCase_ == 28;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Block block = 28;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block getBlock() {
      if (statementCase_ == 28) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block) statement_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block.getDefaultInstance();
    }

    public static final int COMPOSITE_BLOCK_FIELD_NUMBER = 29;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock composite_block = 29;</code>
     */
    public boolean hasCompositeBlock() {
      return statementCase_ == 29;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock composite_block = 29;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getCompositeBlock() {
      if (statementCase_ == 29) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock) statement_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
    }

    public static final int LABEL_FIELD_NUMBER = 30;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Label label = 30;</code>
     */
    public boolean hasLabel() {
      return statementCase_ == 30;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Label label = 30;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label getLabel() {
      if (statementCase_ == 30) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label) statement_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label.getDefaultInstance();
    }

    public static final int IF_STATEMENT_FIELD_NUMBER = 31;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.If if_statement = 31;</code>
     */
    public boolean hasIfStatement() {
      return statementCase_ == 31;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.If if_statement = 31;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If getIfStatement() {
      if (statementCase_ == 31) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If) statement_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If.getDefaultInstance();
    }

    public static final int SWITCH_STATEMENT_FIELD_NUMBER = 32;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Switch switch_statement = 32;</code>
     */
    public boolean hasSwitchStatement() {
      return statementCase_ == 32;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Switch switch_statement = 32;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch getSwitchStatement() {
      if (statementCase_ == 32) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch) statement_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch.getDefaultInstance();
    }

    public static final int WHILE_STATEMENT_FIELD_NUMBER = 33;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.While while_statement = 33;</code>
     */
    public boolean hasWhileStatement() {
      return statementCase_ == 33;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.While while_statement = 33;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While getWhileStatement() {
      if (statementCase_ == 33) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While) statement_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While.getDefaultInstance();
    }

    public static final int DO_WHILE_STATEMENT_FIELD_NUMBER = 34;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.DoWhile do_while_statement = 34;</code>
     */
    public boolean hasDoWhileStatement() {
      return statementCase_ == 34;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.DoWhile do_while_statement = 34;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile getDoWhileStatement() {
      if (statementCase_ == 34) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile) statement_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile.getDefaultInstance();
    }

    public static final int FOR_STATEMENT_FIELD_NUMBER = 35;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.For for_statement = 35;</code>
     */
    public boolean hasForStatement() {
      return statementCase_ == 35;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.For for_statement = 35;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For getForStatement() {
      if (statementCase_ == 35) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For) statement_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For.getDefaultInstance();
    }

    public static final int FOR_IN_STATEMENT_FIELD_NUMBER = 36;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ForIn for_in_statement = 36;</code>
     */
    public boolean hasForInStatement() {
      return statementCase_ == 36;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ForIn for_in_statement = 36;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn getForInStatement() {
      if (statementCase_ == 36) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn) statement_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn.getDefaultInstance();
    }

    public static final int TRY_STATEMENT_FIELD_NUMBER = 37;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Try try_statement = 37;</code>
     */
    public boolean hasTryStatement() {
      return statementCase_ == 37;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Try try_statement = 37;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try getTryStatement() {
      if (statementCase_ == 37) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try) statement_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try.getDefaultInstance();
    }

    public static final int EMPTY_FIELD_NUMBER = 38;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Empty empty = 38;</code>
     */
    public boolean hasEmpty() {
      return statementCase_ == 38;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Empty empty = 38;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty getEmpty() {
      if (statementCase_ == 38) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty) statement_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty.getDefaultInstance();
    }

    public static final int SINGLE_LINE_COMMENT_FIELD_NUMBER = 39;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SingleLineComment single_line_comment = 39;</code>
     */
    public boolean hasSingleLineComment() {
      return statementCase_ == 39;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SingleLineComment single_line_comment = 39;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment getSingleLineComment() {
      if (statementCase_ == 39) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment) statement_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment.getDefaultInstance();
    }

    public static final int MULTI_LINE_COMMENT_FIELD_NUMBER = 40;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.MultiLineComment multi_line_comment = 40;</code>
     */
    public boolean hasMultiLineComment() {
      return statementCase_ == 40;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.MultiLineComment multi_line_comment = 40;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment getMultiLineComment() {
      if (statementCase_ == 40) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment) statement_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment.getDefaultInstance();
    }

    private void initFields() {
      fileId_ = 0;
      location_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance();
      synthetic_ = false;
      beforeComments_ = java.util.Collections.emptyList();
      afterComments_ = 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 (hasLocation()) {
        if (!getLocation().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getBeforeCommentsCount(); i++) {
        if (!getBeforeComments(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getAfterCommentsCount(); i++) {
        if (!getAfterComments(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasReturnStatement()) {
        if (!getReturnStatement().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasThrowStatement()) {
        if (!getThrowStatement().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasExpression()) {
        if (!getExpression().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasVars()) {
        if (!getVars().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasBlock()) {
        if (!getBlock().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasCompositeBlock()) {
        if (!getCompositeBlock().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasLabel()) {
        if (!getLabel().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasIfStatement()) {
        if (!getIfStatement().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSwitchStatement()) {
        if (!getSwitchStatement().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasWhileStatement()) {
        if (!getWhileStatement().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasDoWhileStatement()) {
        if (!getDoWhileStatement().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasForStatement()) {
        if (!getForStatement().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasForInStatement()) {
        if (!getForInStatement().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasTryStatement()) {
        if (!getTryStatement().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSingleLineComment()) {
        if (!getSingleLineComment().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasMultiLineComment()) {
        if (!getMultiLineComment().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, fileId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, location_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBool(3, synthetic_);
      }
      for (int i = 0; i < beforeComments_.size(); i++) {
        output.writeMessage(4, beforeComments_.get(i));
      }
      for (int i = 0; i < afterComments_.size(); i++) {
        output.writeMessage(5, afterComments_.get(i));
      }
      if (statementCase_ == 21) {
        output.writeMessage(21, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return) statement_);
      }
      if (statementCase_ == 22) {
        output.writeMessage(22, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw) statement_);
      }
      if (statementCase_ == 23) {
        output.writeMessage(23, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break) statement_);
      }
      if (statementCase_ == 24) {
        output.writeMessage(24, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue) statement_);
      }
      if (statementCase_ == 25) {
        output.writeMessage(25, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger) statement_);
      }
      if (statementCase_ == 26) {
        output.writeMessage(26, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement) statement_);
      }
      if (statementCase_ == 27) {
        output.writeMessage(27, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars) statement_);
      }
      if (statementCase_ == 28) {
        output.writeMessage(28, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block) statement_);
      }
      if (statementCase_ == 29) {
        output.writeMessage(29, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock) statement_);
      }
      if (statementCase_ == 30) {
        output.writeMessage(30, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label) statement_);
      }
      if (statementCase_ == 31) {
        output.writeMessage(31, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If) statement_);
      }
      if (statementCase_ == 32) {
        output.writeMessage(32, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch) statement_);
      }
      if (statementCase_ == 33) {
        output.writeMessage(33, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While) statement_);
      }
      if (statementCase_ == 34) {
        output.writeMessage(34, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile) statement_);
      }
      if (statementCase_ == 35) {
        output.writeMessage(35, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For) statement_);
      }
      if (statementCase_ == 36) {
        output.writeMessage(36, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn) statement_);
      }
      if (statementCase_ == 37) {
        output.writeMessage(37, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try) statement_);
      }
      if (statementCase_ == 38) {
        output.writeMessage(38, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty) statement_);
      }
      if (statementCase_ == 39) {
        output.writeMessage(39, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment) statement_);
      }
      if (statementCase_ == 40) {
        output.writeMessage(40, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment) 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
          .computeInt32Size(1, fileId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, location_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(3, synthetic_);
      }
      for (int i = 0; i < beforeComments_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, beforeComments_.get(i));
      }
      for (int i = 0; i < afterComments_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, afterComments_.get(i));
      }
      if (statementCase_ == 21) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(21, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return) statement_);
      }
      if (statementCase_ == 22) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(22, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw) statement_);
      }
      if (statementCase_ == 23) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(23, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break) statement_);
      }
      if (statementCase_ == 24) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(24, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue) statement_);
      }
      if (statementCase_ == 25) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(25, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger) statement_);
      }
      if (statementCase_ == 26) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(26, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement) statement_);
      }
      if (statementCase_ == 27) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(27, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars) statement_);
      }
      if (statementCase_ == 28) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(28, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block) statement_);
      }
      if (statementCase_ == 29) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(29, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock) statement_);
      }
      if (statementCase_ == 30) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(30, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label) statement_);
      }
      if (statementCase_ == 31) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(31, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If) statement_);
      }
      if (statementCase_ == 32) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(32, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch) statement_);
      }
      if (statementCase_ == 33) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(33, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While) statement_);
      }
      if (statementCase_ == 34) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(34, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile) statement_);
      }
      if (statementCase_ == 35) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(35, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For) statement_);
      }
      if (statementCase_ == 36) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(36, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn) statement_);
      }
      if (statementCase_ == 37) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(37, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try) statement_);
      }
      if (statementCase_ == 38) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(38, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty) statement_);
      }
      if (statementCase_ == 39) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(39, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment) statement_);
      }
      if (statementCase_ == 40) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(40, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment) 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.serialization.js.ast.JsAstProtoBuf.Statement parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement 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.serialization.js.ast.JsAstProtoBuf.Statement parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement 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.serialization.js.ast.JsAstProtoBuf.Statement parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement 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.serialization.js.ast.JsAstProtoBuf.Statement parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement 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.serialization.js.ast.JsAstProtoBuf.Statement parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement 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.serialization.js.ast.JsAstProtoBuf.Statement prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Statement}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Statement)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StatementOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        fileId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        location_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        synthetic_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        beforeComments_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        afterComments_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        statementCase_ = 0;
        statement_ = null;
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.fileId_ = fileId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.location_ = location_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.synthetic_ = synthetic_;
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          beforeComments_ = java.util.Collections.unmodifiableList(beforeComments_);
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.beforeComments_ = beforeComments_;
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          afterComments_ = java.util.Collections.unmodifiableList(afterComments_);
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.afterComments_ = afterComments_;
        if (statementCase_ == 21) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 22) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 23) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 24) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 25) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 26) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 27) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 28) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 29) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 30) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 31) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 32) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 33) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 34) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 35) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 36) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 37) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 38) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 39) {
          result.statement_ = statement_;
        }
        if (statementCase_ == 40) {
          result.statement_ = statement_;
        }
        result.bitField0_ = to_bitField0_;
        result.statementCase_ = statementCase_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance()) return this;
        if (other.hasFileId()) {
          setFileId(other.getFileId());
        }
        if (other.hasLocation()) {
          mergeLocation(other.getLocation());
        }
        if (other.hasSynthetic()) {
          setSynthetic(other.getSynthetic());
        }
        if (!other.beforeComments_.isEmpty()) {
          if (beforeComments_.isEmpty()) {
            beforeComments_ = other.beforeComments_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureBeforeCommentsIsMutable();
            beforeComments_.addAll(other.beforeComments_);
          }
          
        }
        if (!other.afterComments_.isEmpty()) {
          if (afterComments_.isEmpty()) {
            afterComments_ = other.afterComments_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureAfterCommentsIsMutable();
            afterComments_.addAll(other.afterComments_);
          }
          
        }
        switch (other.getStatementCase()) {
          case RETURN_STATEMENT: {
            mergeReturnStatement(other.getReturnStatement());
            break;
          }
          case THROW_STATEMENT: {
            mergeThrowStatement(other.getThrowStatement());
            break;
          }
          case BREAK_STATEMENT: {
            mergeBreakStatement(other.getBreakStatement());
            break;
          }
          case CONTINUE_STATEMENT: {
            mergeContinueStatement(other.getContinueStatement());
            break;
          }
          case DEBUGGER: {
            mergeDebugger(other.getDebugger());
            break;
          }
          case EXPRESSION: {
            mergeExpression(other.getExpression());
            break;
          }
          case VARS: {
            mergeVars(other.getVars());
            break;
          }
          case BLOCK: {
            mergeBlock(other.getBlock());
            break;
          }
          case COMPOSITE_BLOCK: {
            mergeCompositeBlock(other.getCompositeBlock());
            break;
          }
          case LABEL: {
            mergeLabel(other.getLabel());
            break;
          }
          case IF_STATEMENT: {
            mergeIfStatement(other.getIfStatement());
            break;
          }
          case SWITCH_STATEMENT: {
            mergeSwitchStatement(other.getSwitchStatement());
            break;
          }
          case WHILE_STATEMENT: {
            mergeWhileStatement(other.getWhileStatement());
            break;
          }
          case DO_WHILE_STATEMENT: {
            mergeDoWhileStatement(other.getDoWhileStatement());
            break;
          }
          case FOR_STATEMENT: {
            mergeForStatement(other.getForStatement());
            break;
          }
          case FOR_IN_STATEMENT: {
            mergeForInStatement(other.getForInStatement());
            break;
          }
          case TRY_STATEMENT: {
            mergeTryStatement(other.getTryStatement());
            break;
          }
          case EMPTY: {
            mergeEmpty(other.getEmpty());
            break;
          }
          case SINGLE_LINE_COMMENT: {
            mergeSingleLineComment(other.getSingleLineComment());
            break;
          }
          case MULTI_LINE_COMMENT: {
            mergeMultiLineComment(other.getMultiLineComment());
            break;
          }
          case STATEMENT_NOT_SET: {
            break;
          }
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (hasLocation()) {
          if (!getLocation().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getBeforeCommentsCount(); i++) {
          if (!getBeforeComments(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getAfterCommentsCount(); i++) {
          if (!getAfterComments(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasReturnStatement()) {
          if (!getReturnStatement().isInitialized()) {
            
            return false;
          }
        }
        if (hasThrowStatement()) {
          if (!getThrowStatement().isInitialized()) {
            
            return false;
          }
        }
        if (hasExpression()) {
          if (!getExpression().isInitialized()) {
            
            return false;
          }
        }
        if (hasVars()) {
          if (!getVars().isInitialized()) {
            
            return false;
          }
        }
        if (hasBlock()) {
          if (!getBlock().isInitialized()) {
            
            return false;
          }
        }
        if (hasCompositeBlock()) {
          if (!getCompositeBlock().isInitialized()) {
            
            return false;
          }
        }
        if (hasLabel()) {
          if (!getLabel().isInitialized()) {
            
            return false;
          }
        }
        if (hasIfStatement()) {
          if (!getIfStatement().isInitialized()) {
            
            return false;
          }
        }
        if (hasSwitchStatement()) {
          if (!getSwitchStatement().isInitialized()) {
            
            return false;
          }
        }
        if (hasWhileStatement()) {
          if (!getWhileStatement().isInitialized()) {
            
            return false;
          }
        }
        if (hasDoWhileStatement()) {
          if (!getDoWhileStatement().isInitialized()) {
            
            return false;
          }
        }
        if (hasForStatement()) {
          if (!getForStatement().isInitialized()) {
            
            return false;
          }
        }
        if (hasForInStatement()) {
          if (!getForInStatement().isInitialized()) {
            
            return false;
          }
        }
        if (hasTryStatement()) {
          if (!getTryStatement().isInitialized()) {
            
            return false;
          }
        }
        if (hasSingleLineComment()) {
          if (!getSingleLineComment().isInitialized()) {
            
            return false;
          }
        }
        if (hasMultiLineComment()) {
          if (!getMultiLineComment().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.serialization.js.ast.JsAstProtoBuf.Statement parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement) 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 int fileId_ ;
      /**
       * <code>optional int32 fileId = 1;</code>
       */
      public boolean hasFileId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int32 fileId = 1;</code>
       */
      public int getFileId() {
        return fileId_;
      }
      /**
       * <code>optional int32 fileId = 1;</code>
       */
      public Builder setFileId(int value) {
        bitField0_ |= 0x00000001;
        fileId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 fileId = 1;</code>
       */
      public Builder clearFileId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        fileId_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location location_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 2;</code>
       */
      public boolean hasLocation() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location getLocation() {
        return location_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 2;</code>
       */
      public Builder setLocation(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location value) {
        if (value == null) {
          throw new NullPointerException();
        }
        location_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 2;</code>
       */
      public Builder setLocation(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.Builder builderForValue) {
        location_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 2;</code>
       */
      public Builder mergeLocation(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            location_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance()) {
          location_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.newBuilder(location_).mergeFrom(value).buildPartial();
        } else {
          location_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 2;</code>
       */
      public Builder clearLocation() {
        location_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance();

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

      private boolean synthetic_ ;
      /**
       * <code>optional bool synthetic = 3 [default = false];</code>
       */
      public boolean hasSynthetic() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional bool synthetic = 3 [default = false];</code>
       */
      public boolean getSynthetic() {
        return synthetic_;
      }
      /**
       * <code>optional bool synthetic = 3 [default = false];</code>
       */
      public Builder setSynthetic(boolean value) {
        bitField0_ |= 0x00000004;
        synthetic_ = value;
        
        return this;
      }
      /**
       * <code>optional bool synthetic = 3 [default = false];</code>
       */
      public Builder clearSynthetic() {
        bitField0_ = (bitField0_ & ~0x00000004);
        synthetic_ = false;
        
        return this;
      }

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> beforeComments_ =
        java.util.Collections.emptyList();
      private void ensureBeforeCommentsIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          beforeComments_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment>(beforeComments_);
          bitField0_ |= 0x00000008;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 4;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> getBeforeCommentsList() {
        return java.util.Collections.unmodifiableList(beforeComments_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 4;</code>
       */
      public int getBeforeCommentsCount() {
        return beforeComments_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 4;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment getBeforeComments(int index) {
        return beforeComments_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 4;</code>
       */
      public Builder setBeforeComments(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureBeforeCommentsIsMutable();
        beforeComments_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 4;</code>
       */
      public Builder setBeforeComments(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment.Builder builderForValue) {
        ensureBeforeCommentsIsMutable();
        beforeComments_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 4;</code>
       */
      public Builder addBeforeComments(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureBeforeCommentsIsMutable();
        beforeComments_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 4;</code>
       */
      public Builder addBeforeComments(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureBeforeCommentsIsMutable();
        beforeComments_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 4;</code>
       */
      public Builder addBeforeComments(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment.Builder builderForValue) {
        ensureBeforeCommentsIsMutable();
        beforeComments_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 4;</code>
       */
      public Builder addBeforeComments(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment.Builder builderForValue) {
        ensureBeforeCommentsIsMutable();
        beforeComments_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 4;</code>
       */
      public Builder addAllBeforeComments(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> values) {
        ensureBeforeCommentsIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, beforeComments_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 4;</code>
       */
      public Builder clearBeforeComments() {
        beforeComments_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment before_comments = 4;</code>
       */
      public Builder removeBeforeComments(int index) {
        ensureBeforeCommentsIsMutable();
        beforeComments_.remove(index);

        return this;
      }

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> afterComments_ =
        java.util.Collections.emptyList();
      private void ensureAfterCommentsIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          afterComments_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment>(afterComments_);
          bitField0_ |= 0x00000010;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 5;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> getAfterCommentsList() {
        return java.util.Collections.unmodifiableList(afterComments_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 5;</code>
       */
      public int getAfterCommentsCount() {
        return afterComments_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 5;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment getAfterComments(int index) {
        return afterComments_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 5;</code>
       */
      public Builder setAfterComments(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureAfterCommentsIsMutable();
        afterComments_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 5;</code>
       */
      public Builder setAfterComments(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment.Builder builderForValue) {
        ensureAfterCommentsIsMutable();
        afterComments_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 5;</code>
       */
      public Builder addAfterComments(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureAfterCommentsIsMutable();
        afterComments_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 5;</code>
       */
      public Builder addAfterComments(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureAfterCommentsIsMutable();
        afterComments_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 5;</code>
       */
      public Builder addAfterComments(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment.Builder builderForValue) {
        ensureAfterCommentsIsMutable();
        afterComments_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 5;</code>
       */
      public Builder addAfterComments(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment.Builder builderForValue) {
        ensureAfterCommentsIsMutable();
        afterComments_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 5;</code>
       */
      public Builder addAllAfterComments(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Comment> values) {
        ensureAfterCommentsIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, afterComments_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 5;</code>
       */
      public Builder clearAfterComments() {
        afterComments_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Comment after_comments = 5;</code>
       */
      public Builder removeAfterComments(int index) {
        ensureAfterCommentsIsMutable();
        afterComments_.remove(index);

        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Return return_statement = 21;</code>
       */
      public boolean hasReturnStatement() {
        return statementCase_ == 21;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Return return_statement = 21;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return getReturnStatement() {
        if (statementCase_ == 21) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return) statement_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Return return_statement = 21;</code>
       */
      public Builder setReturnStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 21;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Return return_statement = 21;</code>
       */
      public Builder setReturnStatement(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 21;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Return return_statement = 21;</code>
       */
      public Builder mergeReturnStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return value) {
        if (statementCase_ == 21 &&
            statement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 21;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Return return_statement = 21;</code>
       */
      public Builder clearReturnStatement() {
        if (statementCase_ == 21) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Throw throw_statement = 22;</code>
       */
      public boolean hasThrowStatement() {
        return statementCase_ == 22;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Throw throw_statement = 22;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw getThrowStatement() {
        if (statementCase_ == 22) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw) statement_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Throw throw_statement = 22;</code>
       */
      public Builder setThrowStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 22;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Throw throw_statement = 22;</code>
       */
      public Builder setThrowStatement(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 22;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Throw throw_statement = 22;</code>
       */
      public Builder mergeThrowStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw value) {
        if (statementCase_ == 22 &&
            statement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 22;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Throw throw_statement = 22;</code>
       */
      public Builder clearThrowStatement() {
        if (statementCase_ == 22) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Break break_statement = 23;</code>
       */
      public boolean hasBreakStatement() {
        return statementCase_ == 23;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Break break_statement = 23;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break getBreakStatement() {
        if (statementCase_ == 23) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break) statement_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Break break_statement = 23;</code>
       */
      public Builder setBreakStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 23;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Break break_statement = 23;</code>
       */
      public Builder setBreakStatement(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 23;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Break break_statement = 23;</code>
       */
      public Builder mergeBreakStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break value) {
        if (statementCase_ == 23 &&
            statement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 23;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Break break_statement = 23;</code>
       */
      public Builder clearBreakStatement() {
        if (statementCase_ == 23) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Continue continue_statement = 24;</code>
       */
      public boolean hasContinueStatement() {
        return statementCase_ == 24;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Continue continue_statement = 24;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue getContinueStatement() {
        if (statementCase_ == 24) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue) statement_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Continue continue_statement = 24;</code>
       */
      public Builder setContinueStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 24;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Continue continue_statement = 24;</code>
       */
      public Builder setContinueStatement(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 24;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Continue continue_statement = 24;</code>
       */
      public Builder mergeContinueStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue value) {
        if (statementCase_ == 24 &&
            statement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 24;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Continue continue_statement = 24;</code>
       */
      public Builder clearContinueStatement() {
        if (statementCase_ == 24) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Debugger debugger = 25;</code>
       */
      public boolean hasDebugger() {
        return statementCase_ == 25;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Debugger debugger = 25;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger getDebugger() {
        if (statementCase_ == 25) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger) statement_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Debugger debugger = 25;</code>
       */
      public Builder setDebugger(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 25;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Debugger debugger = 25;</code>
       */
      public Builder setDebugger(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 25;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Debugger debugger = 25;</code>
       */
      public Builder mergeDebugger(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger value) {
        if (statementCase_ == 25 &&
            statement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 25;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Debugger debugger = 25;</code>
       */
      public Builder clearDebugger() {
        if (statementCase_ == 25) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ExpressionStatement expression = 26;</code>
       */
      public boolean hasExpression() {
        return statementCase_ == 26;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ExpressionStatement expression = 26;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement getExpression() {
        if (statementCase_ == 26) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement) statement_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ExpressionStatement expression = 26;</code>
       */
      public Builder setExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 26;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ExpressionStatement expression = 26;</code>
       */
      public Builder setExpression(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 26;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ExpressionStatement expression = 26;</code>
       */
      public Builder mergeExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement value) {
        if (statementCase_ == 26 &&
            statement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 26;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ExpressionStatement expression = 26;</code>
       */
      public Builder clearExpression() {
        if (statementCase_ == 26) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Vars vars = 27;</code>
       */
      public boolean hasVars() {
        return statementCase_ == 27;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Vars vars = 27;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars getVars() {
        if (statementCase_ == 27) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars) statement_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Vars vars = 27;</code>
       */
      public Builder setVars(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 27;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Vars vars = 27;</code>
       */
      public Builder setVars(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 27;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Vars vars = 27;</code>
       */
      public Builder mergeVars(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars value) {
        if (statementCase_ == 27 &&
            statement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 27;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Vars vars = 27;</code>
       */
      public Builder clearVars() {
        if (statementCase_ == 27) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Block block = 28;</code>
       */
      public boolean hasBlock() {
        return statementCase_ == 28;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Block block = 28;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block getBlock() {
        if (statementCase_ == 28) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block) statement_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Block block = 28;</code>
       */
      public Builder setBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 28;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Block block = 28;</code>
       */
      public Builder setBlock(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 28;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Block block = 28;</code>
       */
      public Builder mergeBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block value) {
        if (statementCase_ == 28 &&
            statement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 28;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Block block = 28;</code>
       */
      public Builder clearBlock() {
        if (statementCase_ == 28) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock composite_block = 29;</code>
       */
      public boolean hasCompositeBlock() {
        return statementCase_ == 29;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock composite_block = 29;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getCompositeBlock() {
        if (statementCase_ == 29) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock) statement_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock composite_block = 29;</code>
       */
      public Builder setCompositeBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 29;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock composite_block = 29;</code>
       */
      public Builder setCompositeBlock(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 29;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock composite_block = 29;</code>
       */
      public Builder mergeCompositeBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock value) {
        if (statementCase_ == 29 &&
            statement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 29;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock composite_block = 29;</code>
       */
      public Builder clearCompositeBlock() {
        if (statementCase_ == 29) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Label label = 30;</code>
       */
      public boolean hasLabel() {
        return statementCase_ == 30;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Label label = 30;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label getLabel() {
        if (statementCase_ == 30) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label) statement_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Label label = 30;</code>
       */
      public Builder setLabel(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 30;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Label label = 30;</code>
       */
      public Builder setLabel(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 30;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Label label = 30;</code>
       */
      public Builder mergeLabel(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label value) {
        if (statementCase_ == 30 &&
            statement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 30;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Label label = 30;</code>
       */
      public Builder clearLabel() {
        if (statementCase_ == 30) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.If if_statement = 31;</code>
       */
      public boolean hasIfStatement() {
        return statementCase_ == 31;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.If if_statement = 31;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If getIfStatement() {
        if (statementCase_ == 31) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If) statement_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.If if_statement = 31;</code>
       */
      public Builder setIfStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 31;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.If if_statement = 31;</code>
       */
      public Builder setIfStatement(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 31;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.If if_statement = 31;</code>
       */
      public Builder mergeIfStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If value) {
        if (statementCase_ == 31 &&
            statement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 31;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.If if_statement = 31;</code>
       */
      public Builder clearIfStatement() {
        if (statementCase_ == 31) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Switch switch_statement = 32;</code>
       */
      public boolean hasSwitchStatement() {
        return statementCase_ == 32;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Switch switch_statement = 32;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch getSwitchStatement() {
        if (statementCase_ == 32) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch) statement_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Switch switch_statement = 32;</code>
       */
      public Builder setSwitchStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 32;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Switch switch_statement = 32;</code>
       */
      public Builder setSwitchStatement(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 32;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Switch switch_statement = 32;</code>
       */
      public Builder mergeSwitchStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch value) {
        if (statementCase_ == 32 &&
            statement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 32;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Switch switch_statement = 32;</code>
       */
      public Builder clearSwitchStatement() {
        if (statementCase_ == 32) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.While while_statement = 33;</code>
       */
      public boolean hasWhileStatement() {
        return statementCase_ == 33;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.While while_statement = 33;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While getWhileStatement() {
        if (statementCase_ == 33) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While) statement_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.While while_statement = 33;</code>
       */
      public Builder setWhileStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 33;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.While while_statement = 33;</code>
       */
      public Builder setWhileStatement(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 33;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.While while_statement = 33;</code>
       */
      public Builder mergeWhileStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While value) {
        if (statementCase_ == 33 &&
            statement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 33;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.While while_statement = 33;</code>
       */
      public Builder clearWhileStatement() {
        if (statementCase_ == 33) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.DoWhile do_while_statement = 34;</code>
       */
      public boolean hasDoWhileStatement() {
        return statementCase_ == 34;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.DoWhile do_while_statement = 34;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile getDoWhileStatement() {
        if (statementCase_ == 34) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile) statement_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.DoWhile do_while_statement = 34;</code>
       */
      public Builder setDoWhileStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 34;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.DoWhile do_while_statement = 34;</code>
       */
      public Builder setDoWhileStatement(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 34;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.DoWhile do_while_statement = 34;</code>
       */
      public Builder mergeDoWhileStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile value) {
        if (statementCase_ == 34 &&
            statement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 34;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.DoWhile do_while_statement = 34;</code>
       */
      public Builder clearDoWhileStatement() {
        if (statementCase_ == 34) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.For for_statement = 35;</code>
       */
      public boolean hasForStatement() {
        return statementCase_ == 35;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.For for_statement = 35;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For getForStatement() {
        if (statementCase_ == 35) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For) statement_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.For for_statement = 35;</code>
       */
      public Builder setForStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 35;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.For for_statement = 35;</code>
       */
      public Builder setForStatement(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 35;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.For for_statement = 35;</code>
       */
      public Builder mergeForStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For value) {
        if (statementCase_ == 35 &&
            statement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 35;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.For for_statement = 35;</code>
       */
      public Builder clearForStatement() {
        if (statementCase_ == 35) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ForIn for_in_statement = 36;</code>
       */
      public boolean hasForInStatement() {
        return statementCase_ == 36;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ForIn for_in_statement = 36;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn getForInStatement() {
        if (statementCase_ == 36) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn) statement_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ForIn for_in_statement = 36;</code>
       */
      public Builder setForInStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 36;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ForIn for_in_statement = 36;</code>
       */
      public Builder setForInStatement(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 36;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ForIn for_in_statement = 36;</code>
       */
      public Builder mergeForInStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn value) {
        if (statementCase_ == 36 &&
            statement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 36;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.ForIn for_in_statement = 36;</code>
       */
      public Builder clearForInStatement() {
        if (statementCase_ == 36) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Try try_statement = 37;</code>
       */
      public boolean hasTryStatement() {
        return statementCase_ == 37;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Try try_statement = 37;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try getTryStatement() {
        if (statementCase_ == 37) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try) statement_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Try try_statement = 37;</code>
       */
      public Builder setTryStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 37;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Try try_statement = 37;</code>
       */
      public Builder setTryStatement(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 37;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Try try_statement = 37;</code>
       */
      public Builder mergeTryStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try value) {
        if (statementCase_ == 37 &&
            statement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 37;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Try try_statement = 37;</code>
       */
      public Builder clearTryStatement() {
        if (statementCase_ == 37) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Empty empty = 38;</code>
       */
      public boolean hasEmpty() {
        return statementCase_ == 38;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Empty empty = 38;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty getEmpty() {
        if (statementCase_ == 38) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty) statement_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Empty empty = 38;</code>
       */
      public Builder setEmpty(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 38;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Empty empty = 38;</code>
       */
      public Builder setEmpty(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 38;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Empty empty = 38;</code>
       */
      public Builder mergeEmpty(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty value) {
        if (statementCase_ == 38 &&
            statement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 38;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Empty empty = 38;</code>
       */
      public Builder clearEmpty() {
        if (statementCase_ == 38) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SingleLineComment single_line_comment = 39;</code>
       */
      public boolean hasSingleLineComment() {
        return statementCase_ == 39;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SingleLineComment single_line_comment = 39;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment getSingleLineComment() {
        if (statementCase_ == 39) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment) statement_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SingleLineComment single_line_comment = 39;</code>
       */
      public Builder setSingleLineComment(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 39;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SingleLineComment single_line_comment = 39;</code>
       */
      public Builder setSingleLineComment(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 39;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SingleLineComment single_line_comment = 39;</code>
       */
      public Builder mergeSingleLineComment(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment value) {
        if (statementCase_ == 39 &&
            statement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 39;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SingleLineComment single_line_comment = 39;</code>
       */
      public Builder clearSingleLineComment() {
        if (statementCase_ == 39) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.MultiLineComment multi_line_comment = 40;</code>
       */
      public boolean hasMultiLineComment() {
        return statementCase_ == 40;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.MultiLineComment multi_line_comment = 40;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment getMultiLineComment() {
        if (statementCase_ == 40) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment) statement_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.MultiLineComment multi_line_comment = 40;</code>
       */
      public Builder setMultiLineComment(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment value) {
        if (value == null) {
          throw new NullPointerException();
        }
        statement_ = value;

        statementCase_ = 40;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.MultiLineComment multi_line_comment = 40;</code>
       */
      public Builder setMultiLineComment(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment.Builder builderForValue) {
        statement_ = builderForValue.build();

        statementCase_ = 40;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.MultiLineComment multi_line_comment = 40;</code>
       */
      public Builder mergeMultiLineComment(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment value) {
        if (statementCase_ == 40 &&
            statement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment.getDefaultInstance()) {
          statement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment) statement_)
              .mergeFrom(value).buildPartial();
        } else {
          statement_ = value;
        }

        statementCase_ = 40;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.MultiLineComment multi_line_comment = 40;</code>
       */
      public Builder clearMultiLineComment() {
        if (statementCase_ == 40) {
          statementCase_ = 0;
          statement_ = null;
          
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Statement)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Statement)
  }

  public interface ReturnOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Return)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression value = 1;</code>
     */
    boolean hasValue();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression value = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getValue();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Return}
   */
  public static final class Return extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Return)
      ReturnOrBuilder {
    // Use Return.newBuilder() to construct.
    private Return(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Return(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Return getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Return(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = value_.toBuilder();
              }
              value_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.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<Return> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Return>() {
      public Return parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Return(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int VALUE_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression value = 1;</code>
     */
    public boolean hasValue() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression value = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getValue() {
      return value_;
    }

    private void initFields() {
      value_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Return}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Return)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ReturnOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        value_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return(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.serialization.js.ast.JsAstProtoBuf.Return other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Return.getDefaultInstance()) return this;
        if (other.hasValue()) {
          mergeValue(other.getValue());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression value = 1;</code>
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression value = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getValue() {
        return value_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression value = 1;</code>
       */
      public Builder setValue(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        value_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression value = 1;</code>
       */
      public Builder setValue(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        value_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression value = 1;</code>
       */
      public Builder mergeValue(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            value_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          value_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(value_).mergeFrom(value).buildPartial();
        } else {
          value_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression value = 1;</code>
       */
      public Builder clearValue() {
        value_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Return)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Return)
  }

  public interface ThrowOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Throw)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression exception = 1;</code>
     */
    boolean hasException();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression exception = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getException();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Throw}
   */
  public static final class Throw extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Throw)
      ThrowOrBuilder {
    // Use Throw.newBuilder() to construct.
    private Throw(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Throw(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Throw getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Throw(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = exception_.toBuilder();
              }
              exception_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(exception_);
                exception_ = 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<Throw> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Throw>() {
      public Throw parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Throw(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int EXCEPTION_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression exception_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression exception = 1;</code>
     */
    public boolean hasException() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression exception = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getException() {
      return exception_;
    }

    private void initFields() {
      exception_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasException()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getException().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, exception_);
      }
      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, exception_);
      }
      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.serialization.js.ast.JsAstProtoBuf.Throw parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw 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.serialization.js.ast.JsAstProtoBuf.Throw parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw 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.serialization.js.ast.JsAstProtoBuf.Throw parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw 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.serialization.js.ast.JsAstProtoBuf.Throw parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw 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.serialization.js.ast.JsAstProtoBuf.Throw parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw 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.serialization.js.ast.JsAstProtoBuf.Throw prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Throw}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Throw)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ThrowOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        exception_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.exception_ = exception_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw.getDefaultInstance()) return this;
        if (other.hasException()) {
          mergeException(other.getException());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasException()) {
          
          return false;
        }
        if (!getException().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.serialization.js.ast.JsAstProtoBuf.Throw parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Throw) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression exception_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression exception = 1;</code>
       */
      public boolean hasException() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression exception = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getException() {
        return exception_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression exception = 1;</code>
       */
      public Builder setException(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        exception_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression exception = 1;</code>
       */
      public Builder setException(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        exception_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression exception = 1;</code>
       */
      public Builder mergeException(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            exception_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          exception_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(exception_).mergeFrom(value).buildPartial();
        } else {
          exception_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression exception = 1;</code>
       */
      public Builder clearException() {
        exception_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Throw)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Throw)
  }

  public interface BreakOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Break)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional int32 label_id = 1;</code>
     */
    boolean hasLabelId();
    /**
     * <code>optional int32 label_id = 1;</code>
     */
    int getLabelId();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Break}
   */
  public static final class Break extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Break)
      BreakOrBuilder {
    // Use Break.newBuilder() to construct.
    private Break(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Break(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Break getDefaultInstanceForType() {
      return defaultInstance;
    }

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

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

    private int bitField0_;
    public static final int LABEL_ID_FIELD_NUMBER = 1;
    private int labelId_;
    /**
     * <code>optional int32 label_id = 1;</code>
     */
    public boolean hasLabelId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int32 label_id = 1;</code>
     */
    public int getLabelId() {
      return labelId_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, labelId_);
      }
      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, labelId_);
      }
      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.serialization.js.ast.JsAstProtoBuf.Break parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break 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.serialization.js.ast.JsAstProtoBuf.Break parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break 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.serialization.js.ast.JsAstProtoBuf.Break parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break 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.serialization.js.ast.JsAstProtoBuf.Break parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break 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.serialization.js.ast.JsAstProtoBuf.Break parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break 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.serialization.js.ast.JsAstProtoBuf.Break prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Break}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Break)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BreakOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

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

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.labelId_ = labelId_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break.getDefaultInstance()) return this;
        if (other.hasLabelId()) {
          setLabelId(other.getLabelId());
        }
        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.serialization.js.ast.JsAstProtoBuf.Break parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Break) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int labelId_ ;
      /**
       * <code>optional int32 label_id = 1;</code>
       */
      public boolean hasLabelId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int32 label_id = 1;</code>
       */
      public int getLabelId() {
        return labelId_;
      }
      /**
       * <code>optional int32 label_id = 1;</code>
       */
      public Builder setLabelId(int value) {
        bitField0_ |= 0x00000001;
        labelId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 label_id = 1;</code>
       */
      public Builder clearLabelId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        labelId_ = 0;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Break)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Break)
  }

  public interface ContinueOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Continue)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional int32 label_id = 1;</code>
     */
    boolean hasLabelId();
    /**
     * <code>optional int32 label_id = 1;</code>
     */
    int getLabelId();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Continue}
   */
  public static final class Continue extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Continue)
      ContinueOrBuilder {
    // Use Continue.newBuilder() to construct.
    private Continue(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Continue(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Continue getDefaultInstanceForType() {
      return defaultInstance;
    }

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

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

    private int bitField0_;
    public static final int LABEL_ID_FIELD_NUMBER = 1;
    private int labelId_;
    /**
     * <code>optional int32 label_id = 1;</code>
     */
    public boolean hasLabelId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int32 label_id = 1;</code>
     */
    public int getLabelId() {
      return labelId_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, labelId_);
      }
      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, labelId_);
      }
      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.serialization.js.ast.JsAstProtoBuf.Continue parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue 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.serialization.js.ast.JsAstProtoBuf.Continue parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue 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.serialization.js.ast.JsAstProtoBuf.Continue parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue 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.serialization.js.ast.JsAstProtoBuf.Continue parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue 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.serialization.js.ast.JsAstProtoBuf.Continue parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue 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.serialization.js.ast.JsAstProtoBuf.Continue prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Continue}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Continue)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ContinueOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

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

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.labelId_ = labelId_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue.getDefaultInstance()) return this;
        if (other.hasLabelId()) {
          setLabelId(other.getLabelId());
        }
        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.serialization.js.ast.JsAstProtoBuf.Continue parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Continue) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int labelId_ ;
      /**
       * <code>optional int32 label_id = 1;</code>
       */
      public boolean hasLabelId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int32 label_id = 1;</code>
       */
      public int getLabelId() {
        return labelId_;
      }
      /**
       * <code>optional int32 label_id = 1;</code>
       */
      public Builder setLabelId(int value) {
        bitField0_ |= 0x00000001;
        labelId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 label_id = 1;</code>
       */
      public Builder clearLabelId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        labelId_ = 0;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Continue)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Continue)
  }

  public interface DebuggerOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Debugger)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Debugger}
   */
  public static final class Debugger extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Debugger)
      DebuggerOrBuilder {
    // Use Debugger.newBuilder() to construct.
    private Debugger(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Debugger(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Debugger getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Debugger(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } 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<Debugger> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Debugger>() {
      public Debugger parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Debugger(input, extensionRegistry);
      }
    };

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

    private void initFields() {
    }
    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();
      output.writeRawBytes(unknownFields);
    }

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

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

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Debugger}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Debugger)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DebuggerOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger(this);
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger.getDefaultInstance()) return this;
        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.serialization.js.ast.JsAstProtoBuf.Debugger parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Debugger) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Debugger)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Debugger)
  }

  public interface ExpressionStatementOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.ExpressionStatement)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 1;</code>
     */
    boolean hasExpression();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getExpression();

    /**
     * <code>optional int32 exported_tag_id = 2;</code>
     */
    boolean hasExportedTagId();
    /**
     * <code>optional int32 exported_tag_id = 2;</code>
     */
    int getExportedTagId();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.ExpressionStatement}
   */
  public static final class ExpressionStatement extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.ExpressionStatement)
      ExpressionStatementOrBuilder {
    // Use ExpressionStatement.newBuilder() to construct.
    private ExpressionStatement(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ExpressionStatement(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public ExpressionStatement getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private ExpressionStatement(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = expression_.toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(expression_);
                expression_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              exportedTagId_ = 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<ExpressionStatement> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<ExpressionStatement>() {
      public ExpressionStatement parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new ExpressionStatement(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int EXPRESSION_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression expression_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 1;</code>
     */
    public boolean hasExpression() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getExpression() {
      return expression_;
    }

    public static final int EXPORTED_TAG_ID_FIELD_NUMBER = 2;
    private int exportedTagId_;
    /**
     * <code>optional int32 exported_tag_id = 2;</code>
     */
    public boolean hasExportedTagId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int32 exported_tag_id = 2;</code>
     */
    public int getExportedTagId() {
      return exportedTagId_;
    }

    private void initFields() {
      expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      exportedTagId_ = 0;
    }
    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 (!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_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, exportedTagId_);
      }
      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
          .computeInt32Size(2, exportedTagId_);
      }
      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.serialization.js.ast.JsAstProtoBuf.ExpressionStatement parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement 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.serialization.js.ast.JsAstProtoBuf.ExpressionStatement parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement 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.serialization.js.ast.JsAstProtoBuf.ExpressionStatement parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement 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.serialization.js.ast.JsAstProtoBuf.ExpressionStatement parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement 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.serialization.js.ast.JsAstProtoBuf.ExpressionStatement parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement 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.serialization.js.ast.JsAstProtoBuf.ExpressionStatement prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.ExpressionStatement}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.ExpressionStatement)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatementOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        exportedTagId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement(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.exportedTagId_ = exportedTagId_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionStatement.getDefaultInstance()) return this;
        if (other.hasExpression()) {
          mergeExpression(other.getExpression());
        }
        if (other.hasExportedTagId()) {
          setExportedTagId(other.getExportedTagId());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 1;</code>
       */
      public boolean hasExpression() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getExpression() {
        return expression_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 1;</code>
       */
      public Builder setExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 1;</code>
       */
      public Builder setExpression(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        expression_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 1;</code>
       */
      public Builder mergeExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          expression_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(expression_).mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 1;</code>
       */
      public Builder clearExpression() {
        expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private int exportedTagId_ ;
      /**
       * <code>optional int32 exported_tag_id = 2;</code>
       */
      public boolean hasExportedTagId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int32 exported_tag_id = 2;</code>
       */
      public int getExportedTagId() {
        return exportedTagId_;
      }
      /**
       * <code>optional int32 exported_tag_id = 2;</code>
       */
      public Builder setExportedTagId(int value) {
        bitField0_ |= 0x00000002;
        exportedTagId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 exported_tag_id = 2;</code>
       */
      public Builder clearExportedTagId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        exportedTagId_ = 0;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.ExpressionStatement)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.ExpressionStatement)
  }

  public interface VarsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Vars)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.VarDeclaration declaration = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration> 
        getDeclarationList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.VarDeclaration declaration = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration getDeclaration(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.VarDeclaration declaration = 1;</code>
     */
    int getDeclarationCount();

    /**
     * <code>optional bool multiline = 2 [default = false];</code>
     */
    boolean hasMultiline();
    /**
     * <code>optional bool multiline = 2 [default = false];</code>
     */
    boolean getMultiline();

    /**
     * <code>optional int32 exported_package_id = 3;</code>
     */
    boolean hasExportedPackageId();
    /**
     * <code>optional int32 exported_package_id = 3;</code>
     */
    int getExportedPackageId();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Vars}
   */
  public static final class Vars extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Vars)
      VarsOrBuilder {
    // Use Vars.newBuilder() to construct.
    private Vars(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Vars(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Vars getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Vars(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                declaration_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration>();
                mutable_bitField0_ |= 0x00000001;
              }
              declaration_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration.PARSER, extensionRegistry));
              break;
            }
            case 16: {
              bitField0_ |= 0x00000001;
              multiline_ = input.readBool();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000002;
              exportedPackageId_ = input.readInt32();
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          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<Vars> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Vars>() {
      public Vars parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Vars(input, extensionRegistry);
      }
    };

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

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

    public static final int MULTILINE_FIELD_NUMBER = 2;
    private boolean multiline_;
    /**
     * <code>optional bool multiline = 2 [default = false];</code>
     */
    public boolean hasMultiline() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional bool multiline = 2 [default = false];</code>
     */
    public boolean getMultiline() {
      return multiline_;
    }

    public static final int EXPORTED_PACKAGE_ID_FIELD_NUMBER = 3;
    private int exportedPackageId_;
    /**
     * <code>optional int32 exported_package_id = 3;</code>
     */
    public boolean hasExportedPackageId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int32 exported_package_id = 3;</code>
     */
    public int getExportedPackageId() {
      return exportedPackageId_;
    }

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

      for (int i = 0; i < 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));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBool(2, multiline_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(3, exportedPackageId_);
      }
      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));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(2, multiline_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(3, exportedPackageId_);
      }
      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.serialization.js.ast.JsAstProtoBuf.Vars parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars 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.serialization.js.ast.JsAstProtoBuf.Vars parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars 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.serialization.js.ast.JsAstProtoBuf.Vars parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars 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.serialization.js.ast.JsAstProtoBuf.Vars parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars 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.serialization.js.ast.JsAstProtoBuf.Vars parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars 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.serialization.js.ast.JsAstProtoBuf.Vars prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Vars}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Vars)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarsOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars.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);
        multiline_ = false;
        bitField0_ = (bitField0_ & ~0x00000002);
        exportedPackageId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          declaration_ = java.util.Collections.unmodifiableList(declaration_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.declaration_ = declaration_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000001;
        }
        result.multiline_ = multiline_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        result.exportedPackageId_ = exportedPackageId_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars.getDefaultInstance()) return this;
        if (!other.declaration_.isEmpty()) {
          if (declaration_.isEmpty()) {
            declaration_ = other.declaration_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureDeclarationIsMutable();
            declaration_.addAll(other.declaration_);
          }
          
        }
        if (other.hasMultiline()) {
          setMultiline(other.getMultiline());
        }
        if (other.hasExportedPackageId()) {
          setExportedPackageId(other.getExportedPackageId());
        }
        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.serialization.js.ast.JsAstProtoBuf.Vars parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Vars) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration> declaration_ =
        java.util.Collections.emptyList();
      private void ensureDeclarationIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          declaration_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration>(declaration_);
          bitField0_ |= 0x00000001;
         }
      }

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

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

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

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

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.VarDeclaration declaration = 1;</code>
       */
      public Builder addDeclaration(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration.Builder builderForValue) {
        ensureDeclarationIsMutable();
        declaration_.add(builderForValue.build());

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

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

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

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

        return this;
      }

      private boolean multiline_ ;
      /**
       * <code>optional bool multiline = 2 [default = false];</code>
       */
      public boolean hasMultiline() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional bool multiline = 2 [default = false];</code>
       */
      public boolean getMultiline() {
        return multiline_;
      }
      /**
       * <code>optional bool multiline = 2 [default = false];</code>
       */
      public Builder setMultiline(boolean value) {
        bitField0_ |= 0x00000002;
        multiline_ = value;
        
        return this;
      }
      /**
       * <code>optional bool multiline = 2 [default = false];</code>
       */
      public Builder clearMultiline() {
        bitField0_ = (bitField0_ & ~0x00000002);
        multiline_ = false;
        
        return this;
      }

      private int exportedPackageId_ ;
      /**
       * <code>optional int32 exported_package_id = 3;</code>
       */
      public boolean hasExportedPackageId() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional int32 exported_package_id = 3;</code>
       */
      public int getExportedPackageId() {
        return exportedPackageId_;
      }
      /**
       * <code>optional int32 exported_package_id = 3;</code>
       */
      public Builder setExportedPackageId(int value) {
        bitField0_ |= 0x00000004;
        exportedPackageId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 exported_package_id = 3;</code>
       */
      public Builder clearExportedPackageId() {
        bitField0_ = (bitField0_ & ~0x00000004);
        exportedPackageId_ = 0;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Vars)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Vars)
  }

  public interface VarDeclarationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.VarDeclaration)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

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

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression initial_value = 2;</code>
     */
    boolean hasInitialValue();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression initial_value = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getInitialValue();

    /**
     * <code>optional int32 fileId = 3;</code>
     */
    boolean hasFileId();
    /**
     * <code>optional int32 fileId = 3;</code>
     */
    int getFileId();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 4;</code>
     */
    boolean hasLocation();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 4;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location getLocation();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.VarDeclaration}
   */
  public static final class VarDeclaration extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.VarDeclaration)
      VarDeclarationOrBuilder {
    // Use VarDeclaration.newBuilder() to construct.
    private VarDeclaration(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private VarDeclaration(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public VarDeclaration getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private VarDeclaration(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              nameId_ = input.readInt32();
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = initialValue_.toBuilder();
              }
              initialValue_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(initialValue_);
                initialValue_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              fileId_ = input.readInt32();
              break;
            }
            case 34: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = location_.toBuilder();
              }
              location_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(location_);
                location_ = 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<VarDeclaration> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<VarDeclaration>() {
      public VarDeclaration parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new VarDeclaration(input, extensionRegistry);
      }
    };

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

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

    public static final int INITIAL_VALUE_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression initialValue_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression initial_value = 2;</code>
     */
    public boolean hasInitialValue() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression initial_value = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getInitialValue() {
      return initialValue_;
    }

    public static final int FILEID_FIELD_NUMBER = 3;
    private int fileId_;
    /**
     * <code>optional int32 fileId = 3;</code>
     */
    public boolean hasFileId() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional int32 fileId = 3;</code>
     */
    public int getFileId() {
      return fileId_;
    }

    public static final int LOCATION_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location location_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 4;</code>
     */
    public boolean hasLocation() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 4;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location getLocation() {
      return location_;
    }

    private void initFields() {
      nameId_ = 0;
      initialValue_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      fileId_ = 0;
      location_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasNameId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasInitialValue()) {
        if (!getInitialValue().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasLocation()) {
        if (!getLocation().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, nameId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, initialValue_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(3, fileId_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, location_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, nameId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, initialValue_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(3, fileId_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, location_);
      }
      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.serialization.js.ast.JsAstProtoBuf.VarDeclaration parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration 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.serialization.js.ast.JsAstProtoBuf.VarDeclaration parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration 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.serialization.js.ast.JsAstProtoBuf.VarDeclaration parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration 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.serialization.js.ast.JsAstProtoBuf.VarDeclaration parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration 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.serialization.js.ast.JsAstProtoBuf.VarDeclaration parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration 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.serialization.js.ast.JsAstProtoBuf.VarDeclaration prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.VarDeclaration}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.VarDeclaration)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclarationOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        nameId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        initialValue_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        fileId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        location_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.nameId_ = nameId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.initialValue_ = initialValue_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.fileId_ = fileId_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.location_ = location_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration.getDefaultInstance()) return this;
        if (other.hasNameId()) {
          setNameId(other.getNameId());
        }
        if (other.hasInitialValue()) {
          mergeInitialValue(other.getInitialValue());
        }
        if (other.hasFileId()) {
          setFileId(other.getFileId());
        }
        if (other.hasLocation()) {
          mergeLocation(other.getLocation());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasNameId()) {
          
          return false;
        }
        if (hasInitialValue()) {
          if (!getInitialValue().isInitialized()) {
            
            return false;
          }
        }
        if (hasLocation()) {
          if (!getLocation().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.serialization.js.ast.JsAstProtoBuf.VarDeclaration parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.VarDeclaration) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression initialValue_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression initial_value = 2;</code>
       */
      public boolean hasInitialValue() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression initial_value = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getInitialValue() {
        return initialValue_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression initial_value = 2;</code>
       */
      public Builder setInitialValue(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        initialValue_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression initial_value = 2;</code>
       */
      public Builder setInitialValue(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        initialValue_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression initial_value = 2;</code>
       */
      public Builder mergeInitialValue(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            initialValue_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          initialValue_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(initialValue_).mergeFrom(value).buildPartial();
        } else {
          initialValue_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression initial_value = 2;</code>
       */
      public Builder clearInitialValue() {
        initialValue_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private int fileId_ ;
      /**
       * <code>optional int32 fileId = 3;</code>
       */
      public boolean hasFileId() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional int32 fileId = 3;</code>
       */
      public int getFileId() {
        return fileId_;
      }
      /**
       * <code>optional int32 fileId = 3;</code>
       */
      public Builder setFileId(int value) {
        bitField0_ |= 0x00000004;
        fileId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 fileId = 3;</code>
       */
      public Builder clearFileId() {
        bitField0_ = (bitField0_ & ~0x00000004);
        fileId_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location location_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 4;</code>
       */
      public boolean hasLocation() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 4;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location getLocation() {
        return location_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 4;</code>
       */
      public Builder setLocation(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location value) {
        if (value == null) {
          throw new NullPointerException();
        }
        location_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 4;</code>
       */
      public Builder setLocation(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.Builder builderForValue) {
        location_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 4;</code>
       */
      public Builder mergeLocation(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            location_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance()) {
          location_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.newBuilder(location_).mergeFrom(value).buildPartial();
        } else {
          location_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 4;</code>
       */
      public Builder clearLocation() {
        location_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.VarDeclaration)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.VarDeclaration)
  }

  public interface BlockOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Block)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement> 
        getStatementList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getStatement(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
     */
    int getStatementCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Block}
   */
  public static final class Block extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Block)
      BlockOrBuilder {
    // Use Block.newBuilder() to construct.
    private Block(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Block(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Block getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Block(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                statement_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement>();
                mutable_bitField0_ |= 0x00000001;
              }
              statement_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.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<Block> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Block>() {
      public Block parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Block(input, extensionRegistry);
      }
    };

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

    public static final int STATEMENT_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement> statement_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement> getStatementList() {
      return statement_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StatementOrBuilder> 
        getStatementOrBuilderList() {
      return statement_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
     */
    public int getStatementCount() {
      return statement_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getStatement(int index) {
      return statement_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StatementOrBuilder 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.serialization.js.ast.JsAstProtoBuf.Block parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block 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.serialization.js.ast.JsAstProtoBuf.Block parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block 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.serialization.js.ast.JsAstProtoBuf.Block parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block 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.serialization.js.ast.JsAstProtoBuf.Block parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block 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.serialization.js.ast.JsAstProtoBuf.Block parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block 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.serialization.js.ast.JsAstProtoBuf.Block prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block(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.serialization.js.ast.JsAstProtoBuf.Block other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block.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.serialization.js.ast.JsAstProtoBuf.Block parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Block) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement> statement_ =
        java.util.Collections.emptyList();
      private void ensureStatementIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          statement_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement>(statement_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement> getStatementList() {
        return java.util.Collections.unmodifiableList(statement_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public int getStatementCount() {
        return statement_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getStatement(int index) {
        return statement_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public Builder setStatement(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureStatementIsMutable();
        statement_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public Builder setStatement(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        ensureStatementIsMutable();
        statement_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public Builder addStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureStatementIsMutable();
        statement_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public Builder addStatement(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureStatementIsMutable();
        statement_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public Builder addStatement(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        ensureStatementIsMutable();
        statement_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public Builder addStatement(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        ensureStatementIsMutable();
        statement_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public Builder addAllStatement(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement> values) {
        ensureStatementIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, statement_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public Builder clearStatement() {
        statement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public Builder removeStatement(int index) {
        ensureStatementIsMutable();
        statement_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Block)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Block)
  }

  public interface CompositeBlockOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.CompositeBlock)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement> 
        getStatementList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getStatement(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
     */
    int getStatementCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.CompositeBlock}
   */
  public static final class CompositeBlock extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.CompositeBlock)
      CompositeBlockOrBuilder {
    // Use CompositeBlock.newBuilder() to construct.
    private CompositeBlock(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private CompositeBlock(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public CompositeBlock getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private CompositeBlock(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                statement_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement>();
                mutable_bitField0_ |= 0x00000001;
              }
              statement_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.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<CompositeBlock> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<CompositeBlock>() {
      public CompositeBlock parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new CompositeBlock(input, extensionRegistry);
      }
    };

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

    public static final int STATEMENT_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement> statement_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement> getStatementList() {
      return statement_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StatementOrBuilder> 
        getStatementOrBuilderList() {
      return statement_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
     */
    public int getStatementCount() {
      return statement_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getStatement(int index) {
      return statement_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StatementOrBuilder 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.serialization.js.ast.JsAstProtoBuf.CompositeBlock parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock 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.serialization.js.ast.JsAstProtoBuf.CompositeBlock parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock 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.serialization.js.ast.JsAstProtoBuf.CompositeBlock parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock 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.serialization.js.ast.JsAstProtoBuf.CompositeBlock parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock 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.serialization.js.ast.JsAstProtoBuf.CompositeBlock parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock 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.serialization.js.ast.JsAstProtoBuf.CompositeBlock prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock(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.serialization.js.ast.JsAstProtoBuf.CompositeBlock other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.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.serialization.js.ast.JsAstProtoBuf.CompositeBlock parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement> statement_ =
        java.util.Collections.emptyList();
      private void ensureStatementIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          statement_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement>(statement_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement> getStatementList() {
        return java.util.Collections.unmodifiableList(statement_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public int getStatementCount() {
        return statement_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getStatement(int index) {
        return statement_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public Builder setStatement(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureStatementIsMutable();
        statement_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public Builder setStatement(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        ensureStatementIsMutable();
        statement_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public Builder addStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureStatementIsMutable();
        statement_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public Builder addStatement(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureStatementIsMutable();
        statement_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public Builder addStatement(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        ensureStatementIsMutable();
        statement_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public Builder addStatement(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        ensureStatementIsMutable();
        statement_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public Builder addAllStatement(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement> values) {
        ensureStatementIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, statement_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public Builder clearStatement() {
        statement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 1;</code>
       */
      public Builder removeStatement(int index) {
        ensureStatementIsMutable();
        statement_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.CompositeBlock)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.CompositeBlock)
  }

  public interface LabelOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Label)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

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

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement inner_statement = 2;</code>
     */
    boolean hasInnerStatement();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement inner_statement = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getInnerStatement();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Label}
   */
  public static final class Label extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Label)
      LabelOrBuilder {
    // Use Label.newBuilder() to construct.
    private Label(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Label(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Label getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Label(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              nameId_ = input.readInt32();
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = innerStatement_.toBuilder();
              }
              innerStatement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(innerStatement_);
                innerStatement_ = 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<Label> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Label>() {
      public Label parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Label(input, extensionRegistry);
      }
    };

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

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

    public static final int INNER_STATEMENT_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement innerStatement_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement inner_statement = 2;</code>
     */
    public boolean hasInnerStatement() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement inner_statement = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getInnerStatement() {
      return innerStatement_;
    }

    private void initFields() {
      nameId_ = 0;
      innerStatement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

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

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

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

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Label}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Label)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LabelOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        nameId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        innerStatement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.nameId_ = nameId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.innerStatement_ = innerStatement_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label.getDefaultInstance()) return this;
        if (other.hasNameId()) {
          setNameId(other.getNameId());
        }
        if (other.hasInnerStatement()) {
          mergeInnerStatement(other.getInnerStatement());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasNameId()) {
          
          return false;
        }
        if (!hasInnerStatement()) {
          
          return false;
        }
        if (!getInnerStatement().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.serialization.js.ast.JsAstProtoBuf.Label parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Label) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement innerStatement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement inner_statement = 2;</code>
       */
      public boolean hasInnerStatement() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement inner_statement = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getInnerStatement() {
        return innerStatement_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement inner_statement = 2;</code>
       */
      public Builder setInnerStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        innerStatement_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement inner_statement = 2;</code>
       */
      public Builder setInnerStatement(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        innerStatement_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement inner_statement = 2;</code>
       */
      public Builder mergeInnerStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            innerStatement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance()) {
          innerStatement_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.newBuilder(innerStatement_).mergeFrom(value).buildPartial();
        } else {
          innerStatement_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement inner_statement = 2;</code>
       */
      public Builder clearInnerStatement() {
        innerStatement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Label)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Label)
  }

  public interface IfOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.If)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
     */
    boolean hasCondition();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getCondition();

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement then_statement = 2;</code>
     */
    boolean hasThenStatement();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement then_statement = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getThenStatement();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement else_statement = 3;</code>
     */
    boolean hasElseStatement();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement else_statement = 3;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getElseStatement();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.If}
   */
  public static final class If extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.If)
      IfOrBuilder {
    // Use If.newBuilder() to construct.
    private If(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private If(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public If getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private If(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = condition_.toBuilder();
              }
              condition_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(condition_);
                condition_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = thenStatement_.toBuilder();
              }
              thenStatement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(thenStatement_);
                thenStatement_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = elseStatement_.toBuilder();
              }
              elseStatement_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(elseStatement_);
                elseStatement_ = 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<If> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<If>() {
      public If parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new If(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int CONDITION_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression condition_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
     */
    public boolean hasCondition() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getCondition() {
      return condition_;
    }

    public static final int THEN_STATEMENT_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement thenStatement_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement then_statement = 2;</code>
     */
    public boolean hasThenStatement() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement then_statement = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getThenStatement() {
      return thenStatement_;
    }

    public static final int ELSE_STATEMENT_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement elseStatement_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement else_statement = 3;</code>
     */
    public boolean hasElseStatement() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement else_statement = 3;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getElseStatement() {
      return elseStatement_;
    }

    private void initFields() {
      condition_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      thenStatement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
      elseStatement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.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 (!hasThenStatement()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getCondition().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getThenStatement().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasElseStatement()) {
        if (!getElseStatement().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, thenStatement_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, elseStatement_);
      }
      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, thenStatement_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, elseStatement_);
      }
      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.serialization.js.ast.JsAstProtoBuf.If parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If 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.serialization.js.ast.JsAstProtoBuf.If parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If 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.serialization.js.ast.JsAstProtoBuf.If parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If 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.serialization.js.ast.JsAstProtoBuf.If parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If 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.serialization.js.ast.JsAstProtoBuf.If parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If 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.serialization.js.ast.JsAstProtoBuf.If prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.If}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.If)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IfOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        condition_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        thenStatement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        elseStatement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If(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.thenStatement_ = thenStatement_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.elseStatement_ = elseStatement_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If.getDefaultInstance()) return this;
        if (other.hasCondition()) {
          mergeCondition(other.getCondition());
        }
        if (other.hasThenStatement()) {
          mergeThenStatement(other.getThenStatement());
        }
        if (other.hasElseStatement()) {
          mergeElseStatement(other.getElseStatement());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasCondition()) {
          
          return false;
        }
        if (!hasThenStatement()) {
          
          return false;
        }
        if (!getCondition().isInitialized()) {
          
          return false;
        }
        if (!getThenStatement().isInitialized()) {
          
          return false;
        }
        if (hasElseStatement()) {
          if (!getElseStatement().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.serialization.js.ast.JsAstProtoBuf.If parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.If) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression condition_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
       */
      public boolean hasCondition() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getCondition() {
        return condition_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
       */
      public Builder setCondition(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        condition_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
       */
      public Builder setCondition(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        condition_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
       */
      public Builder mergeCondition(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            condition_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          condition_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(condition_).mergeFrom(value).buildPartial();
        } else {
          condition_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
       */
      public Builder clearCondition() {
        condition_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement thenStatement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement then_statement = 2;</code>
       */
      public boolean hasThenStatement() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement then_statement = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getThenStatement() {
        return thenStatement_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement then_statement = 2;</code>
       */
      public Builder setThenStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        thenStatement_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement then_statement = 2;</code>
       */
      public Builder setThenStatement(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        thenStatement_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement then_statement = 2;</code>
       */
      public Builder mergeThenStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            thenStatement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance()) {
          thenStatement_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.newBuilder(thenStatement_).mergeFrom(value).buildPartial();
        } else {
          thenStatement_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement then_statement = 2;</code>
       */
      public Builder clearThenStatement() {
        thenStatement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement elseStatement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement else_statement = 3;</code>
       */
      public boolean hasElseStatement() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement else_statement = 3;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getElseStatement() {
        return elseStatement_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement else_statement = 3;</code>
       */
      public Builder setElseStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        elseStatement_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement else_statement = 3;</code>
       */
      public Builder setElseStatement(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        elseStatement_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement else_statement = 3;</code>
       */
      public Builder mergeElseStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            elseStatement_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance()) {
          elseStatement_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.newBuilder(elseStatement_).mergeFrom(value).buildPartial();
        } else {
          elseStatement_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement else_statement = 3;</code>
       */
      public Builder clearElseStatement() {
        elseStatement_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.If)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.If)
  }

  public interface SwitchOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Switch)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 1;</code>
     */
    boolean hasExpression();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getExpression();

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.SwitchEntry entry = 2;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry> 
        getEntryList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.SwitchEntry entry = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry getEntry(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.SwitchEntry entry = 2;</code>
     */
    int getEntryCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Switch}
   */
  public static final class Switch extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Switch)
      SwitchOrBuilder {
    // Use Switch.newBuilder() to construct.
    private Switch(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Switch(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Switch getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Switch(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = expression_.toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(expression_);
                expression_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                entry_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry>();
                mutable_bitField0_ |= 0x00000002;
              }
              entry_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry.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)) {
          entry_ = java.util.Collections.unmodifiableList(entry_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Switch> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Switch>() {
      public Switch parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Switch(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int EXPRESSION_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression expression_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 1;</code>
     */
    public boolean hasExpression() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getExpression() {
      return expression_;
    }

    public static final int ENTRY_FIELD_NUMBER = 2;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry> entry_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.SwitchEntry entry = 2;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry> getEntryList() {
      return entry_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.SwitchEntry entry = 2;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntryOrBuilder> 
        getEntryOrBuilderList() {
      return entry_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.SwitchEntry entry = 2;</code>
     */
    public int getEntryCount() {
      return entry_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.SwitchEntry entry = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry getEntry(int index) {
      return entry_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.SwitchEntry entry = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntryOrBuilder getEntryOrBuilder(
        int index) {
      return entry_.get(index);
    }

    private void initFields() {
      expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      entry_ = 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 (!hasExpression()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getExpression().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getEntryCount(); i++) {
        if (!getEntry(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, expression_);
      }
      for (int i = 0; i < entry_.size(); i++) {
        output.writeMessage(2, entry_.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, expression_);
      }
      for (int i = 0; i < entry_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, entry_.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.serialization.js.ast.JsAstProtoBuf.Switch parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch 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.serialization.js.ast.JsAstProtoBuf.Switch parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch 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.serialization.js.ast.JsAstProtoBuf.Switch parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch 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.serialization.js.ast.JsAstProtoBuf.Switch parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch 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.serialization.js.ast.JsAstProtoBuf.Switch parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch 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.serialization.js.ast.JsAstProtoBuf.Switch prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Switch}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Switch)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        entry_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.expression_ = expression_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          entry_ = java.util.Collections.unmodifiableList(entry_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.entry_ = entry_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch.getDefaultInstance()) return this;
        if (other.hasExpression()) {
          mergeExpression(other.getExpression());
        }
        if (!other.entry_.isEmpty()) {
          if (entry_.isEmpty()) {
            entry_ = other.entry_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureEntryIsMutable();
            entry_.addAll(other.entry_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasExpression()) {
          
          return false;
        }
        if (!getExpression().isInitialized()) {
          
          return false;
        }
        for (int i = 0; i < getEntryCount(); i++) {
          if (!getEntry(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.serialization.js.ast.JsAstProtoBuf.Switch parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Switch) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 1;</code>
       */
      public boolean hasExpression() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getExpression() {
        return expression_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 1;</code>
       */
      public Builder setExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 1;</code>
       */
      public Builder setExpression(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        expression_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 1;</code>
       */
      public Builder mergeExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          expression_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(expression_).mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 1;</code>
       */
      public Builder clearExpression() {
        expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry> entry_ =
        java.util.Collections.emptyList();
      private void ensureEntryIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          entry_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry>(entry_);
          bitField0_ |= 0x00000002;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.SwitchEntry entry = 2;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry> getEntryList() {
        return java.util.Collections.unmodifiableList(entry_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.SwitchEntry entry = 2;</code>
       */
      public int getEntryCount() {
        return entry_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.SwitchEntry entry = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry getEntry(int index) {
        return entry_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.SwitchEntry entry = 2;</code>
       */
      public Builder setEntry(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureEntryIsMutable();
        entry_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.SwitchEntry entry = 2;</code>
       */
      public Builder setEntry(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry.Builder builderForValue) {
        ensureEntryIsMutable();
        entry_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.SwitchEntry entry = 2;</code>
       */
      public Builder addEntry(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureEntryIsMutable();
        entry_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.SwitchEntry entry = 2;</code>
       */
      public Builder addEntry(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureEntryIsMutable();
        entry_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.SwitchEntry entry = 2;</code>
       */
      public Builder addEntry(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry.Builder builderForValue) {
        ensureEntryIsMutable();
        entry_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.SwitchEntry entry = 2;</code>
       */
      public Builder addEntry(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry.Builder builderForValue) {
        ensureEntryIsMutable();
        entry_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.SwitchEntry entry = 2;</code>
       */
      public Builder addAllEntry(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry> values) {
        ensureEntryIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, entry_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.SwitchEntry entry = 2;</code>
       */
      public Builder clearEntry() {
        entry_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.SwitchEntry entry = 2;</code>
       */
      public Builder removeEntry(int index) {
        ensureEntryIsMutable();
        entry_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Switch)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Switch)
  }

  public interface SwitchEntryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.SwitchEntry)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression label = 1;</code>
     */
    boolean hasLabel();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression label = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getLabel();

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 2;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement> 
        getStatementList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getStatement(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 2;</code>
     */
    int getStatementCount();

    /**
     * <code>optional int32 fileId = 3;</code>
     */
    boolean hasFileId();
    /**
     * <code>optional int32 fileId = 3;</code>
     */
    int getFileId();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 4;</code>
     */
    boolean hasLocation();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 4;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location getLocation();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.SwitchEntry}
   */
  public static final class SwitchEntry extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.SwitchEntry)
      SwitchEntryOrBuilder {
    // Use SwitchEntry.newBuilder() to construct.
    private SwitchEntry(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private SwitchEntry(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public SwitchEntry getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private SwitchEntry(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = label_.toBuilder();
              }
              label_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(label_);
                label_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                statement_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement>();
                mutable_bitField0_ |= 0x00000002;
              }
              statement_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.PARSER, extensionRegistry));
              break;
            }
            case 24: {
              bitField0_ |= 0x00000002;
              fileId_ = input.readInt32();
              break;
            }
            case 34: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = location_.toBuilder();
              }
              location_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(location_);
                location_ = 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_ & 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<SwitchEntry> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<SwitchEntry>() {
      public SwitchEntry parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new SwitchEntry(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int LABEL_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression label_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression label = 1;</code>
     */
    public boolean hasLabel() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression label = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getLabel() {
      return label_;
    }

    public static final int STATEMENT_FIELD_NUMBER = 2;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement> statement_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 2;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement> getStatementList() {
      return statement_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 2;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StatementOrBuilder> 
        getStatementOrBuilderList() {
      return statement_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 2;</code>
     */
    public int getStatementCount() {
      return statement_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getStatement(int index) {
      return statement_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StatementOrBuilder getStatementOrBuilder(
        int index) {
      return statement_.get(index);
    }

    public static final int FILEID_FIELD_NUMBER = 3;
    private int fileId_;
    /**
     * <code>optional int32 fileId = 3;</code>
     */
    public boolean hasFileId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int32 fileId = 3;</code>
     */
    public int getFileId() {
      return fileId_;
    }

    public static final int LOCATION_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location location_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 4;</code>
     */
    public boolean hasLocation() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 4;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location getLocation() {
      return location_;
    }

    private void initFields() {
      label_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      statement_ = java.util.Collections.emptyList();
      fileId_ = 0;
      location_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (hasLabel()) {
        if (!getLabel().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getStatementCount(); i++) {
        if (!getStatement(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasLocation()) {
        if (!getLocation().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, label_);
      }
      for (int i = 0; i < statement_.size(); i++) {
        output.writeMessage(2, statement_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(3, fileId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(4, location_);
      }
      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, label_);
      }
      for (int i = 0; i < statement_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, statement_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(3, fileId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, location_);
      }
      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.serialization.js.ast.JsAstProtoBuf.SwitchEntry parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry 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.serialization.js.ast.JsAstProtoBuf.SwitchEntry parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry 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.serialization.js.ast.JsAstProtoBuf.SwitchEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry 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.serialization.js.ast.JsAstProtoBuf.SwitchEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry 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.serialization.js.ast.JsAstProtoBuf.SwitchEntry parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry 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.serialization.js.ast.JsAstProtoBuf.SwitchEntry prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.SwitchEntry}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.SwitchEntry)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntryOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        label_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        statement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        fileId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        location_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.label_ = label_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          statement_ = java.util.Collections.unmodifiableList(statement_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.statement_ = statement_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        result.fileId_ = fileId_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        result.location_ = location_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry.getDefaultInstance()) return this;
        if (other.hasLabel()) {
          mergeLabel(other.getLabel());
        }
        if (!other.statement_.isEmpty()) {
          if (statement_.isEmpty()) {
            statement_ = other.statement_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureStatementIsMutable();
            statement_.addAll(other.statement_);
          }
          
        }
        if (other.hasFileId()) {
          setFileId(other.getFileId());
        }
        if (other.hasLocation()) {
          mergeLocation(other.getLocation());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (hasLabel()) {
          if (!getLabel().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getStatementCount(); i++) {
          if (!getStatement(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasLocation()) {
          if (!getLocation().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.serialization.js.ast.JsAstProtoBuf.SwitchEntry parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SwitchEntry) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression label_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression label = 1;</code>
       */
      public boolean hasLabel() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression label = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getLabel() {
        return label_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression label = 1;</code>
       */
      public Builder setLabel(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        label_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression label = 1;</code>
       */
      public Builder setLabel(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        label_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression label = 1;</code>
       */
      public Builder mergeLabel(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            label_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          label_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(label_).mergeFrom(value).buildPartial();
        } else {
          label_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression label = 1;</code>
       */
      public Builder clearLabel() {
        label_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement> statement_ =
        java.util.Collections.emptyList();
      private void ensureStatementIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          statement_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement>(statement_);
          bitField0_ |= 0x00000002;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 2;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement> getStatementList() {
        return java.util.Collections.unmodifiableList(statement_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 2;</code>
       */
      public int getStatementCount() {
        return statement_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getStatement(int index) {
        return statement_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 2;</code>
       */
      public Builder setStatement(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureStatementIsMutable();
        statement_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 2;</code>
       */
      public Builder setStatement(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        ensureStatementIsMutable();
        statement_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 2;</code>
       */
      public Builder addStatement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureStatementIsMutable();
        statement_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 2;</code>
       */
      public Builder addStatement(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureStatementIsMutable();
        statement_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 2;</code>
       */
      public Builder addStatement(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        ensureStatementIsMutable();
        statement_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 2;</code>
       */
      public Builder addStatement(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        ensureStatementIsMutable();
        statement_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 2;</code>
       */
      public Builder addAllStatement(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement> values) {
        ensureStatementIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, statement_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 2;</code>
       */
      public Builder clearStatement() {
        statement_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Statement statement = 2;</code>
       */
      public Builder removeStatement(int index) {
        ensureStatementIsMutable();
        statement_.remove(index);

        return this;
      }

      private int fileId_ ;
      /**
       * <code>optional int32 fileId = 3;</code>
       */
      public boolean hasFileId() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional int32 fileId = 3;</code>
       */
      public int getFileId() {
        return fileId_;
      }
      /**
       * <code>optional int32 fileId = 3;</code>
       */
      public Builder setFileId(int value) {
        bitField0_ |= 0x00000004;
        fileId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 fileId = 3;</code>
       */
      public Builder clearFileId() {
        bitField0_ = (bitField0_ & ~0x00000004);
        fileId_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location location_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 4;</code>
       */
      public boolean hasLocation() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 4;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location getLocation() {
        return location_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 4;</code>
       */
      public Builder setLocation(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location value) {
        if (value == null) {
          throw new NullPointerException();
        }
        location_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 4;</code>
       */
      public Builder setLocation(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.Builder builderForValue) {
        location_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 4;</code>
       */
      public Builder mergeLocation(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            location_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance()) {
          location_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.newBuilder(location_).mergeFrom(value).buildPartial();
        } else {
          location_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Location location = 4;</code>
       */
      public Builder clearLocation() {
        location_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.SwitchEntry)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.SwitchEntry)
  }

  public interface WhileOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.While)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
     */
    boolean hasCondition();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getCondition();

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
     */
    boolean hasBody();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getBody();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.While}
   */
  public static final class While extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.While)
      WhileOrBuilder {
    // Use While.newBuilder() to construct.
    private While(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private While(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public While getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private While(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = condition_.toBuilder();
              }
              condition_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(condition_);
                condition_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = body_.toBuilder();
              }
              body_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.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<While> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<While>() {
      public While parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new While(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int CONDITION_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression condition_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
     */
    public boolean hasCondition() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getCondition() {
      return condition_;
    }

    public static final int BODY_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement body_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
     */
    public boolean hasBody() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getBody() {
      return body_;
    }

    private void initFields() {
      condition_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.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 (!hasBody()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getCondition().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, condition_);
      }
      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, condition_);
      }
      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.serialization.js.ast.JsAstProtoBuf.While parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While 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.serialization.js.ast.JsAstProtoBuf.While parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While 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.serialization.js.ast.JsAstProtoBuf.While parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While 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.serialization.js.ast.JsAstProtoBuf.While parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While 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.serialization.js.ast.JsAstProtoBuf.While parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While 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.serialization.js.ast.JsAstProtoBuf.While prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.While}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.While)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.WhileOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        condition_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While(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.body_ = body_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While.getDefaultInstance()) return this;
        if (other.hasCondition()) {
          mergeCondition(other.getCondition());
        }
        if (other.hasBody()) {
          mergeBody(other.getBody());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasCondition()) {
          
          return false;
        }
        if (!hasBody()) {
          
          return false;
        }
        if (!getCondition().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.serialization.js.ast.JsAstProtoBuf.While parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.While) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression condition_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
       */
      public boolean hasCondition() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getCondition() {
        return condition_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
       */
      public Builder setCondition(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        condition_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
       */
      public Builder setCondition(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        condition_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
       */
      public Builder mergeCondition(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            condition_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          condition_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(condition_).mergeFrom(value).buildPartial();
        } else {
          condition_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
       */
      public Builder clearCondition() {
        condition_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
       */
      public boolean hasBody() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getBody() {
        return body_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
       */
      public Builder setBody(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        body_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
       */
      public Builder setBody(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        body_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
       */
      public Builder mergeBody(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            body_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance()) {
          body_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.newBuilder(body_).mergeFrom(value).buildPartial();
        } else {
          body_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
       */
      public Builder clearBody() {
        body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.While)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.While)
  }

  public interface DoWhileOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.DoWhile)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
     */
    boolean hasCondition();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getCondition();

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
     */
    boolean hasBody();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getBody();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.DoWhile}
   */
  public static final class DoWhile extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.DoWhile)
      DoWhileOrBuilder {
    // Use DoWhile.newBuilder() to construct.
    private DoWhile(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private DoWhile(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public DoWhile getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private DoWhile(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = condition_.toBuilder();
              }
              condition_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(condition_);
                condition_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = body_.toBuilder();
              }
              body_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.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<DoWhile> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<DoWhile>() {
      public DoWhile parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new DoWhile(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int CONDITION_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression condition_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
     */
    public boolean hasCondition() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getCondition() {
      return condition_;
    }

    public static final int BODY_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement body_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
     */
    public boolean hasBody() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getBody() {
      return body_;
    }

    private void initFields() {
      condition_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.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 (!hasBody()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getCondition().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, condition_);
      }
      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, condition_);
      }
      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.serialization.js.ast.JsAstProtoBuf.DoWhile parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile 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.serialization.js.ast.JsAstProtoBuf.DoWhile parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile 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.serialization.js.ast.JsAstProtoBuf.DoWhile parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile 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.serialization.js.ast.JsAstProtoBuf.DoWhile parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile 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.serialization.js.ast.JsAstProtoBuf.DoWhile parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile 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.serialization.js.ast.JsAstProtoBuf.DoWhile prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.DoWhile}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.DoWhile)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhileOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        condition_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile(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.body_ = body_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile.getDefaultInstance()) return this;
        if (other.hasCondition()) {
          mergeCondition(other.getCondition());
        }
        if (other.hasBody()) {
          mergeBody(other.getBody());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasCondition()) {
          
          return false;
        }
        if (!hasBody()) {
          
          return false;
        }
        if (!getCondition().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.serialization.js.ast.JsAstProtoBuf.DoWhile parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.DoWhile) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression condition_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
       */
      public boolean hasCondition() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getCondition() {
        return condition_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
       */
      public Builder setCondition(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        condition_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
       */
      public Builder setCondition(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        condition_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
       */
      public Builder mergeCondition(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            condition_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          condition_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(condition_).mergeFrom(value).buildPartial();
        } else {
          condition_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 1;</code>
       */
      public Builder clearCondition() {
        condition_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
       */
      public boolean hasBody() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getBody() {
        return body_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
       */
      public Builder setBody(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        body_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
       */
      public Builder setBody(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        body_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
       */
      public Builder mergeBody(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            body_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance()) {
          body_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.newBuilder(body_).mergeFrom(value).buildPartial();
        } else {
          body_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
       */
      public Builder clearBody() {
        body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.DoWhile)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.DoWhile)
  }

  public interface ForOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.For)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement variables = 1;</code>
     */
    boolean hasVariables();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement variables = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getVariables();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
     */
    boolean hasExpression();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getExpression();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.EmptyInit empty = 3;</code>
     */
    boolean hasEmpty();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.EmptyInit empty = 3;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit getEmpty();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 4;</code>
     */
    boolean hasCondition();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 4;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getCondition();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression increment = 5;</code>
     */
    boolean hasIncrement();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression increment = 5;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getIncrement();

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 6;</code>
     */
    boolean hasBody();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 6;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getBody();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.For}
   */
  public static final class For extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.For)
      ForOrBuilder {
    // Use For.newBuilder() to construct.
    private For(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private For(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public For getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private For(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder subBuilder = null;
              if (initCase_ == 1) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement) init_).toBuilder();
              }
              init_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement) init_);
                init_ = subBuilder.buildPartial();
              }
              initCase_ = 1;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (initCase_ == 2) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) init_).toBuilder();
              }
              init_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) init_);
                init_ = subBuilder.buildPartial();
              }
              initCase_ = 2;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit.Builder subBuilder = null;
              if (initCase_ == 3) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit) init_).toBuilder();
              }
              init_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit) init_);
                init_ = subBuilder.buildPartial();
              }
              initCase_ = 3;
              break;
            }
            case 34: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = condition_.toBuilder();
              }
              condition_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(condition_);
                condition_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 42: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                subBuilder = increment_.toBuilder();
              }
              increment_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(increment_);
                increment_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
            case 50: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder subBuilder = null;
              if (((bitField0_ & 0x00000020) == 0x00000020)) {
                subBuilder = body_.toBuilder();
              }
              body_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(body_);
                body_ = 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<For> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<For>() {
      public For parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new For(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    private int initCase_ = 0;
    private java.lang.Object init_;
    public enum InitCase
        implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
      VARIABLES(1),
      EXPRESSION(2),
      EMPTY(3),
      INIT_NOT_SET(0);
      private int value = 0;
      private InitCase(int value) {
        this.value = value;
      }
      public static InitCase valueOf(int value) {
        switch (value) {
          case 1: return VARIABLES;
          case 2: return EXPRESSION;
          case 3: return EMPTY;
          case 0: return INIT_NOT_SET;
          default: throw new java.lang.IllegalArgumentException(
            "Value is undefined for this oneof enum.");
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public InitCase
    getInitCase() {
      return InitCase.valueOf(
          initCase_);
    }

    public static final int VARIABLES_FIELD_NUMBER = 1;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement variables = 1;</code>
     */
    public boolean hasVariables() {
      return initCase_ == 1;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement variables = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getVariables() {
      if (initCase_ == 1) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement) init_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
    }

    public static final int EXPRESSION_FIELD_NUMBER = 2;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
     */
    public boolean hasExpression() {
      return initCase_ == 2;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getExpression() {
      if (initCase_ == 2) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) init_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
    }

    public static final int EMPTY_FIELD_NUMBER = 3;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.EmptyInit empty = 3;</code>
     */
    public boolean hasEmpty() {
      return initCase_ == 3;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.EmptyInit empty = 3;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit getEmpty() {
      if (initCase_ == 3) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit) init_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit.getDefaultInstance();
    }

    public static final int CONDITION_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression condition_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 4;</code>
     */
    public boolean hasCondition() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 4;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getCondition() {
      return condition_;
    }

    public static final int INCREMENT_FIELD_NUMBER = 5;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression increment_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression increment = 5;</code>
     */
    public boolean hasIncrement() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression increment = 5;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getIncrement() {
      return increment_;
    }

    public static final int BODY_FIELD_NUMBER = 6;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement body_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 6;</code>
     */
    public boolean hasBody() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 6;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getBody() {
      return body_;
    }

    private void initFields() {
      condition_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      increment_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasBody()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasVariables()) {
        if (!getVariables().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasExpression()) {
        if (!getExpression().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasCondition()) {
        if (!getCondition().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasIncrement()) {
        if (!getIncrement().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 (initCase_ == 1) {
        output.writeMessage(1, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement) init_);
      }
      if (initCase_ == 2) {
        output.writeMessage(2, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) init_);
      }
      if (initCase_ == 3) {
        output.writeMessage(3, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit) init_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, condition_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(5, increment_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeMessage(6, body_);
      }
      output.writeRawBytes(unknownFields);
    }

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

      size = 0;
      if (initCase_ == 1) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement) init_);
      }
      if (initCase_ == 2) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) init_);
      }
      if (initCase_ == 3) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit) init_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, condition_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, increment_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(6, 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.serialization.js.ast.JsAstProtoBuf.For parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For 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.serialization.js.ast.JsAstProtoBuf.For parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For 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.serialization.js.ast.JsAstProtoBuf.For parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For 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.serialization.js.ast.JsAstProtoBuf.For parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For 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.serialization.js.ast.JsAstProtoBuf.For parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For 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.serialization.js.ast.JsAstProtoBuf.For prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.For}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.For)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        condition_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        increment_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000010);
        body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000020);
        initCase_ = 0;
        init_ = null;
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (initCase_ == 1) {
          result.init_ = init_;
        }
        if (initCase_ == 2) {
          result.init_ = init_;
        }
        if (initCase_ == 3) {
          result.init_ = init_;
        }
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.condition_ = condition_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.increment_ = increment_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.body_ = body_;
        result.bitField0_ = to_bitField0_;
        result.initCase_ = initCase_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For.getDefaultInstance()) return this;
        if (other.hasCondition()) {
          mergeCondition(other.getCondition());
        }
        if (other.hasIncrement()) {
          mergeIncrement(other.getIncrement());
        }
        if (other.hasBody()) {
          mergeBody(other.getBody());
        }
        switch (other.getInitCase()) {
          case VARIABLES: {
            mergeVariables(other.getVariables());
            break;
          }
          case EXPRESSION: {
            mergeExpression(other.getExpression());
            break;
          }
          case EMPTY: {
            mergeEmpty(other.getEmpty());
            break;
          }
          case INIT_NOT_SET: {
            break;
          }
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasBody()) {
          
          return false;
        }
        if (hasVariables()) {
          if (!getVariables().isInitialized()) {
            
            return false;
          }
        }
        if (hasExpression()) {
          if (!getExpression().isInitialized()) {
            
            return false;
          }
        }
        if (hasCondition()) {
          if (!getCondition().isInitialized()) {
            
            return false;
          }
        }
        if (hasIncrement()) {
          if (!getIncrement().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.serialization.js.ast.JsAstProtoBuf.For parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.For) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int initCase_ = 0;
      private java.lang.Object init_;
      public InitCase
          getInitCase() {
        return InitCase.valueOf(
            initCase_);
      }

      public Builder clearInit() {
        initCase_ = 0;
        init_ = null;
        return this;
      }

      private int bitField0_;

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement variables = 1;</code>
       */
      public boolean hasVariables() {
        return initCase_ == 1;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement variables = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getVariables() {
        if (initCase_ == 1) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement) init_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement variables = 1;</code>
       */
      public Builder setVariables(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        init_ = value;

        initCase_ = 1;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement variables = 1;</code>
       */
      public Builder setVariables(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        init_ = builderForValue.build();

        initCase_ = 1;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement variables = 1;</code>
       */
      public Builder mergeVariables(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (initCase_ == 1 &&
            init_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance()) {
          init_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement) init_)
              .mergeFrom(value).buildPartial();
        } else {
          init_ = value;
        }

        initCase_ = 1;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement variables = 1;</code>
       */
      public Builder clearVariables() {
        if (initCase_ == 1) {
          initCase_ = 0;
          init_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
       */
      public boolean hasExpression() {
        return initCase_ == 2;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getExpression() {
        if (initCase_ == 2) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) init_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
       */
      public Builder setExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        init_ = value;

        initCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
       */
      public Builder setExpression(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        init_ = builderForValue.build();

        initCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
       */
      public Builder mergeExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (initCase_ == 2 &&
            init_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          init_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) init_)
              .mergeFrom(value).buildPartial();
        } else {
          init_ = value;
        }

        initCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
       */
      public Builder clearExpression() {
        if (initCase_ == 2) {
          initCase_ = 0;
          init_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.EmptyInit empty = 3;</code>
       */
      public boolean hasEmpty() {
        return initCase_ == 3;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.EmptyInit empty = 3;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit getEmpty() {
        if (initCase_ == 3) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit) init_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.EmptyInit empty = 3;</code>
       */
      public Builder setEmpty(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit value) {
        if (value == null) {
          throw new NullPointerException();
        }
        init_ = value;

        initCase_ = 3;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.EmptyInit empty = 3;</code>
       */
      public Builder setEmpty(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit.Builder builderForValue) {
        init_ = builderForValue.build();

        initCase_ = 3;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.EmptyInit empty = 3;</code>
       */
      public Builder mergeEmpty(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit value) {
        if (initCase_ == 3 &&
            init_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit.getDefaultInstance()) {
          init_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit) init_)
              .mergeFrom(value).buildPartial();
        } else {
          init_ = value;
        }

        initCase_ = 3;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.EmptyInit empty = 3;</code>
       */
      public Builder clearEmpty() {
        if (initCase_ == 3) {
          initCase_ = 0;
          init_ = null;
          
        }
        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression condition_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 4;</code>
       */
      public boolean hasCondition() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 4;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getCondition() {
        return condition_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 4;</code>
       */
      public Builder setCondition(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        condition_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 4;</code>
       */
      public Builder setCondition(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        condition_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 4;</code>
       */
      public Builder mergeCondition(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            condition_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          condition_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(condition_).mergeFrom(value).buildPartial();
        } else {
          condition_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression condition = 4;</code>
       */
      public Builder clearCondition() {
        condition_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression increment_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression increment = 5;</code>
       */
      public boolean hasIncrement() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression increment = 5;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getIncrement() {
        return increment_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression increment = 5;</code>
       */
      public Builder setIncrement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        increment_ = value;

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression increment = 5;</code>
       */
      public Builder setIncrement(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        increment_ = builderForValue.build();

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression increment = 5;</code>
       */
      public Builder mergeIncrement(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000010) == 0x00000010) &&
            increment_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          increment_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(increment_).mergeFrom(value).buildPartial();
        } else {
          increment_ = value;
        }

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression increment = 5;</code>
       */
      public Builder clearIncrement() {
        increment_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 6;</code>
       */
      public boolean hasBody() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 6;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getBody() {
        return body_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 6;</code>
       */
      public Builder setBody(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        body_ = value;

        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 6;</code>
       */
      public Builder setBody(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        body_ = builderForValue.build();

        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 6;</code>
       */
      public Builder mergeBody(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (((bitField0_ & 0x00000020) == 0x00000020) &&
            body_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance()) {
          body_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.newBuilder(body_).mergeFrom(value).buildPartial();
        } else {
          body_ = value;
        }

        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 6;</code>
       */
      public Builder clearBody() {
        body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.For)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.For)
  }

  public interface EmptyInitOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.EmptyInit)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.EmptyInit}
   */
  public static final class EmptyInit extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.EmptyInit)
      EmptyInitOrBuilder {
    // Use EmptyInit.newBuilder() to construct.
    private EmptyInit(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private EmptyInit(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public EmptyInit getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private EmptyInit(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } 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<EmptyInit> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<EmptyInit>() {
      public EmptyInit parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new EmptyInit(input, extensionRegistry);
      }
    };

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

    private void initFields() {
    }
    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();
      output.writeRawBytes(unknownFields);
    }

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

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

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.EmptyInit}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.EmptyInit)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInitOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit(this);
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit.getDefaultInstance()) return this;
        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.serialization.js.ast.JsAstProtoBuf.EmptyInit parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyInit) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.EmptyInit)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.EmptyInit)
  }

  public interface ForInOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.ForIn)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional int32 nameId = 1;</code>
     */
    boolean hasNameId();
    /**
     * <code>optional int32 nameId = 1;</code>
     */
    int getNameId();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
     */
    boolean hasExpression();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getExpression();

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression iterable = 3;</code>
     */
    boolean hasIterable();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression iterable = 3;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getIterable();

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 4;</code>
     */
    boolean hasBody();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 4;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getBody();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.ForIn}
   */
  public static final class ForIn extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.ForIn)
      ForInOrBuilder {
    // Use ForIn.newBuilder() to construct.
    private ForIn(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ForIn(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public ForIn getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private ForIn(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              valueCase_ = 1;
              value_ = input.readInt32();
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (valueCase_ == 2) {
                subBuilder = ((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) value_).toBuilder();
              }
              value_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 2;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = iterable_.toBuilder();
              }
              iterable_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(iterable_);
                iterable_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 34: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = body_.toBuilder();
              }
              body_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(body_);
                body_ = 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<ForIn> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<ForIn>() {
      public ForIn parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new ForIn(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public org.jetbrains.kotlin.protobuf.Parser<ForIn> 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 {
      NAMEID(1),
      EXPRESSION(2),
      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 NAMEID;
          case 2: return EXPRESSION;
          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 NAMEID_FIELD_NUMBER = 1;
    /**
     * <code>optional int32 nameId = 1;</code>
     */
    public boolean hasNameId() {
      return valueCase_ == 1;
    }
    /**
     * <code>optional int32 nameId = 1;</code>
     */
    public int getNameId() {
      if (valueCase_ == 1) {
        return (java.lang.Integer) value_;
      }
      return 0;
    }

    public static final int EXPRESSION_FIELD_NUMBER = 2;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
     */
    public boolean hasExpression() {
      return valueCase_ == 2;
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getExpression() {
      if (valueCase_ == 2) {
         return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) value_;
      }
      return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
    }

    public static final int ITERABLE_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression iterable_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression iterable = 3;</code>
     */
    public boolean hasIterable() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression iterable = 3;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getIterable() {
      return iterable_;
    }

    public static final int BODY_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement body_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 4;</code>
     */
    public boolean hasBody() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 4;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getBody() {
      return body_;
    }

    private void initFields() {
      iterable_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasIterable()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasBody()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasExpression()) {
        if (!getExpression().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!getIterable().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 (valueCase_ == 1) {
        output.writeInt32(
            1, (int)((java.lang.Integer) value_));
      }
      if (valueCase_ == 2) {
        output.writeMessage(2, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) value_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, iterable_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, body_);
      }
      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
          .computeInt32Size(
              1, (int)((java.lang.Integer) value_));
      }
      if (valueCase_ == 2) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) value_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, iterable_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, 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.serialization.js.ast.JsAstProtoBuf.ForIn parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn 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.serialization.js.ast.JsAstProtoBuf.ForIn parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn 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.serialization.js.ast.JsAstProtoBuf.ForIn parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn 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.serialization.js.ast.JsAstProtoBuf.ForIn parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn 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.serialization.js.ast.JsAstProtoBuf.ForIn parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn 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.serialization.js.ast.JsAstProtoBuf.ForIn prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.ForIn}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.ForIn)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForInOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        iterable_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        valueCase_ = 0;
        value_ = null;
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (valueCase_ == 1) {
          result.value_ = value_;
        }
        if (valueCase_ == 2) {
          result.value_ = value_;
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.iterable_ = iterable_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.body_ = body_;
        result.bitField0_ = to_bitField0_;
        result.valueCase_ = valueCase_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn.getDefaultInstance()) return this;
        if (other.hasIterable()) {
          mergeIterable(other.getIterable());
        }
        if (other.hasBody()) {
          mergeBody(other.getBody());
        }
        switch (other.getValueCase()) {
          case NAMEID: {
            setNameId(other.getNameId());
            break;
          }
          case EXPRESSION: {
            mergeExpression(other.getExpression());
            break;
          }
          case VALUE_NOT_SET: {
            break;
          }
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasIterable()) {
          
          return false;
        }
        if (!hasBody()) {
          
          return false;
        }
        if (hasExpression()) {
          if (!getExpression().isInitialized()) {
            
            return false;
          }
        }
        if (!getIterable().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.serialization.js.ast.JsAstProtoBuf.ForIn parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ForIn) 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 int32 nameId = 1;</code>
       */
      public boolean hasNameId() {
        return valueCase_ == 1;
      }
      /**
       * <code>optional int32 nameId = 1;</code>
       */
      public int getNameId() {
        if (valueCase_ == 1) {
          return (java.lang.Integer) value_;
        }
        return 0;
      }
      /**
       * <code>optional int32 nameId = 1;</code>
       */
      public Builder setNameId(int value) {
        valueCase_ = 1;
        value_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 nameId = 1;</code>
       */
      public Builder clearNameId() {
        if (valueCase_ == 1) {
          valueCase_ = 0;
          value_ = null;
          
        }
        return this;
      }

      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
       */
      public boolean hasExpression() {
        return valueCase_ == 2;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getExpression() {
        if (valueCase_ == 2) {
          return (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) value_;
        }
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
       */
      public Builder setExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        value_ = value;

        valueCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
       */
      public Builder setExpression(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        value_ = builderForValue.build();

        valueCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
       */
      public Builder mergeExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (valueCase_ == 2 &&
            value_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          value_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder((org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression) value_)
              .mergeFrom(value).buildPartial();
        } else {
          value_ = value;
        }

        valueCase_ = 2;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
       */
      public Builder clearExpression() {
        if (valueCase_ == 2) {
          valueCase_ = 0;
          value_ = null;
          
        }
        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression iterable_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression iterable = 3;</code>
       */
      public boolean hasIterable() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression iterable = 3;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getIterable() {
        return iterable_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression iterable = 3;</code>
       */
      public Builder setIterable(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        iterable_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression iterable = 3;</code>
       */
      public Builder setIterable(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        iterable_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression iterable = 3;</code>
       */
      public Builder mergeIterable(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            iterable_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          iterable_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(iterable_).mergeFrom(value).buildPartial();
        } else {
          iterable_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression iterable = 3;</code>
       */
      public Builder clearIterable() {
        iterable_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 4;</code>
       */
      public boolean hasBody() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 4;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getBody() {
        return body_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 4;</code>
       */
      public Builder setBody(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        body_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 4;</code>
       */
      public Builder setBody(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        body_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 4;</code>
       */
      public Builder mergeBody(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            body_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance()) {
          body_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.newBuilder(body_).mergeFrom(value).buildPartial();
        } else {
          body_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 4;</code>
       */
      public Builder clearBody() {
        body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.ForIn)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.ForIn)
  }

  public interface TryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Try)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement tryBlock = 1;</code>
     */
    boolean hasTryBlock();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement tryBlock = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getTryBlock();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Catch catchBlock = 2;</code>
     */
    boolean hasCatchBlock();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Catch catchBlock = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch getCatchBlock();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement finallyBlock = 3;</code>
     */
    boolean hasFinallyBlock();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement finallyBlock = 3;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getFinallyBlock();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Try}
   */
  public static final class Try extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Try)
      TryOrBuilder {
    // Use Try.newBuilder() to construct.
    private Try(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Try(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Try getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Try(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = tryBlock_.toBuilder();
              }
              tryBlock_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(tryBlock_);
                tryBlock_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = catchBlock_.toBuilder();
              }
              catchBlock_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(catchBlock_);
                catchBlock_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = finallyBlock_.toBuilder();
              }
              finallyBlock_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(finallyBlock_);
                finallyBlock_ = 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<Try> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Try>() {
      public Try parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Try(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int TRYBLOCK_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement tryBlock_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement tryBlock = 1;</code>
     */
    public boolean hasTryBlock() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement tryBlock = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getTryBlock() {
      return tryBlock_;
    }

    public static final int CATCHBLOCK_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch catchBlock_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Catch catchBlock = 2;</code>
     */
    public boolean hasCatchBlock() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Catch catchBlock = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch getCatchBlock() {
      return catchBlock_;
    }

    public static final int FINALLYBLOCK_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement finallyBlock_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement finallyBlock = 3;</code>
     */
    public boolean hasFinallyBlock() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement finallyBlock = 3;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getFinallyBlock() {
      return finallyBlock_;
    }

    private void initFields() {
      tryBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
      catchBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch.getDefaultInstance();
      finallyBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTryBlock()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTryBlock().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasCatchBlock()) {
        if (!getCatchBlock().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasFinallyBlock()) {
        if (!getFinallyBlock().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, tryBlock_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, catchBlock_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, finallyBlock_);
      }
      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, tryBlock_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, catchBlock_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, finallyBlock_);
      }
      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.serialization.js.ast.JsAstProtoBuf.Try parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try 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.serialization.js.ast.JsAstProtoBuf.Try parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try 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.serialization.js.ast.JsAstProtoBuf.Try parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try 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.serialization.js.ast.JsAstProtoBuf.Try parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try 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.serialization.js.ast.JsAstProtoBuf.Try parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try 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.serialization.js.ast.JsAstProtoBuf.Try prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Try}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Try)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.TryOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        tryBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        catchBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        finallyBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.tryBlock_ = tryBlock_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.catchBlock_ = catchBlock_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.finallyBlock_ = finallyBlock_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try.getDefaultInstance()) return this;
        if (other.hasTryBlock()) {
          mergeTryBlock(other.getTryBlock());
        }
        if (other.hasCatchBlock()) {
          mergeCatchBlock(other.getCatchBlock());
        }
        if (other.hasFinallyBlock()) {
          mergeFinallyBlock(other.getFinallyBlock());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTryBlock()) {
          
          return false;
        }
        if (!getTryBlock().isInitialized()) {
          
          return false;
        }
        if (hasCatchBlock()) {
          if (!getCatchBlock().isInitialized()) {
            
            return false;
          }
        }
        if (hasFinallyBlock()) {
          if (!getFinallyBlock().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.serialization.js.ast.JsAstProtoBuf.Try parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Try) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement tryBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement tryBlock = 1;</code>
       */
      public boolean hasTryBlock() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement tryBlock = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getTryBlock() {
        return tryBlock_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement tryBlock = 1;</code>
       */
      public Builder setTryBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        tryBlock_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement tryBlock = 1;</code>
       */
      public Builder setTryBlock(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        tryBlock_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement tryBlock = 1;</code>
       */
      public Builder mergeTryBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            tryBlock_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance()) {
          tryBlock_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.newBuilder(tryBlock_).mergeFrom(value).buildPartial();
        } else {
          tryBlock_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement tryBlock = 1;</code>
       */
      public Builder clearTryBlock() {
        tryBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch catchBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Catch catchBlock = 2;</code>
       */
      public boolean hasCatchBlock() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Catch catchBlock = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch getCatchBlock() {
        return catchBlock_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Catch catchBlock = 2;</code>
       */
      public Builder setCatchBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch value) {
        if (value == null) {
          throw new NullPointerException();
        }
        catchBlock_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Catch catchBlock = 2;</code>
       */
      public Builder setCatchBlock(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch.Builder builderForValue) {
        catchBlock_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Catch catchBlock = 2;</code>
       */
      public Builder mergeCatchBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            catchBlock_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch.getDefaultInstance()) {
          catchBlock_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch.newBuilder(catchBlock_).mergeFrom(value).buildPartial();
        } else {
          catchBlock_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Catch catchBlock = 2;</code>
       */
      public Builder clearCatchBlock() {
        catchBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement finallyBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement finallyBlock = 3;</code>
       */
      public boolean hasFinallyBlock() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement finallyBlock = 3;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getFinallyBlock() {
        return finallyBlock_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement finallyBlock = 3;</code>
       */
      public Builder setFinallyBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        finallyBlock_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement finallyBlock = 3;</code>
       */
      public Builder setFinallyBlock(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        finallyBlock_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement finallyBlock = 3;</code>
       */
      public Builder mergeFinallyBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            finallyBlock_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance()) {
          finallyBlock_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.newBuilder(finallyBlock_).mergeFrom(value).buildPartial();
        } else {
          finallyBlock_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement finallyBlock = 3;</code>
       */
      public Builder clearFinallyBlock() {
        finallyBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Try)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Try)
  }

  public interface CatchOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Catch)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
     */
    boolean hasParameter();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter getParameter();

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
     */
    boolean hasBody();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getBody();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Catch}
   */
  public static final class Catch extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Catch)
      CatchOrBuilder {
    // Use Catch.newBuilder() to construct.
    private Catch(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Catch(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Catch getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Catch(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = parameter_.toBuilder();
              }
              parameter_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(parameter_);
                parameter_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = body_.toBuilder();
              }
              body_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.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<Catch> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Catch>() {
      public Catch parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Catch(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int PARAMETER_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter parameter_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
     */
    public boolean hasParameter() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter getParameter() {
      return parameter_;
    }

    public static final int BODY_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement body_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
     */
    public boolean hasBody() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getBody() {
      return body_;
    }

    private void initFields() {
      parameter_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter.getDefaultInstance();
      body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasParameter()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasBody()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getParameter().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, parameter_);
      }
      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, parameter_);
      }
      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.serialization.js.ast.JsAstProtoBuf.Catch parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch 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.serialization.js.ast.JsAstProtoBuf.Catch parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch 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.serialization.js.ast.JsAstProtoBuf.Catch parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch 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.serialization.js.ast.JsAstProtoBuf.Catch parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch 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.serialization.js.ast.JsAstProtoBuf.Catch parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch 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.serialization.js.ast.JsAstProtoBuf.Catch prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Catch}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Catch)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CatchOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        parameter_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.parameter_ = parameter_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.body_ = body_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch.getDefaultInstance()) return this;
        if (other.hasParameter()) {
          mergeParameter(other.getParameter());
        }
        if (other.hasBody()) {
          mergeBody(other.getBody());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasParameter()) {
          
          return false;
        }
        if (!hasBody()) {
          
          return false;
        }
        if (!getParameter().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.serialization.js.ast.JsAstProtoBuf.Catch parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Catch) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter parameter_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
       */
      public boolean hasParameter() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter getParameter() {
        return parameter_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
       */
      public Builder setParameter(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter value) {
        if (value == null) {
          throw new NullPointerException();
        }
        parameter_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
       */
      public Builder setParameter(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter.Builder builderForValue) {
        parameter_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
       */
      public Builder mergeParameter(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            parameter_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter.getDefaultInstance()) {
          parameter_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter.newBuilder(parameter_).mergeFrom(value).buildPartial();
        } else {
          parameter_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Parameter parameter = 1;</code>
       */
      public Builder clearParameter() {
        parameter_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Parameter.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
       */
      public boolean hasBody() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getBody() {
        return body_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
       */
      public Builder setBody(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        body_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
       */
      public Builder setBody(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        body_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
       */
      public Builder mergeBody(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            body_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance()) {
          body_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.newBuilder(body_).mergeFrom(value).buildPartial();
        } else {
          body_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Statement body = 2;</code>
       */
      public Builder clearBody() {
        body_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Catch)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Catch)
  }

  public interface EmptyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Empty)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Empty}
   */
  public static final class Empty extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Empty)
      EmptyOrBuilder {
    // Use Empty.newBuilder() to construct.
    private Empty(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Empty(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Empty getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Empty(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } 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<Empty> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Empty>() {
      public Empty parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Empty(input, extensionRegistry);
      }
    };

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

    private void initFields() {
    }
    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();
      output.writeRawBytes(unknownFields);
    }

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

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

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Empty}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Empty)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.EmptyOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty(this);
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty.getDefaultInstance()) return this;
        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.serialization.js.ast.JsAstProtoBuf.Empty parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Empty) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Empty)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Empty)
  }

  public interface SingleLineCommentOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.SingleLineComment)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required string message = 1;</code>
     */
    boolean hasMessage();
    /**
     * <code>required string message = 1;</code>
     */
    java.lang.String getMessage();
    /**
     * <code>required string message = 1;</code>
     */
    org.jetbrains.kotlin.protobuf.ByteString
        getMessageBytes();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.SingleLineComment}
   */
  public static final class SingleLineComment extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.SingleLineComment)
      SingleLineCommentOrBuilder {
    // Use SingleLineComment.newBuilder() to construct.
    private SingleLineComment(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private SingleLineComment(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public SingleLineComment getDefaultInstanceForType() {
      return defaultInstance;
    }

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

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

    private int bitField0_;
    public static final int MESSAGE_FIELD_NUMBER = 1;
    private java.lang.Object message_;
    /**
     * <code>required string message = 1;</code>
     */
    public boolean hasMessage() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string message = 1;</code>
     */
    public java.lang.String getMessage() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        org.jetbrains.kotlin.protobuf.ByteString bs = 
            (org.jetbrains.kotlin.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          message_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string message = 1;</code>
     */
    public org.jetbrains.kotlin.protobuf.ByteString
        getMessageBytes() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        org.jetbrains.kotlin.protobuf.ByteString b = 
            org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        message_ = b;
        return b;
      } else {
        return (org.jetbrains.kotlin.protobuf.ByteString) ref;
      }
    }

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

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

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

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

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

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.SingleLineComment}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.SingleLineComment)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineCommentOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

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

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.message_ = message_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SingleLineComment.getDefaultInstance()) return this;
        if (other.hasMessage()) {
          bitField0_ |= 0x00000001;
          message_ = other.message_;
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

      private java.lang.Object message_ = "";
      /**
       * <code>required string message = 1;</code>
       */
      public boolean hasMessage() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string message = 1;</code>
       */
      public java.lang.String getMessage() {
        java.lang.Object ref = message_;
        if (!(ref instanceof java.lang.String)) {
          org.jetbrains.kotlin.protobuf.ByteString bs =
              (org.jetbrains.kotlin.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            message_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string message = 1;</code>
       */
      public org.jetbrains.kotlin.protobuf.ByteString
          getMessageBytes() {
        java.lang.Object ref = message_;
        if (ref instanceof String) {
          org.jetbrains.kotlin.protobuf.ByteString b = 
              org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          message_ = b;
          return b;
        } else {
          return (org.jetbrains.kotlin.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string message = 1;</code>
       */
      public Builder setMessage(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        message_ = value;
        
        return this;
      }
      /**
       * <code>required string message = 1;</code>
       */
      public Builder clearMessage() {
        bitField0_ = (bitField0_ & ~0x00000001);
        message_ = getDefaultInstance().getMessage();
        
        return this;
      }
      /**
       * <code>required string message = 1;</code>
       */
      public Builder setMessageBytes(
          org.jetbrains.kotlin.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        message_ = value;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.SingleLineComment)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.SingleLineComment)
  }

  public interface MultiLineCommentOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.MultiLineComment)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required string message = 1;</code>
     */
    boolean hasMessage();
    /**
     * <code>required string message = 1;</code>
     */
    java.lang.String getMessage();
    /**
     * <code>required string message = 1;</code>
     */
    org.jetbrains.kotlin.protobuf.ByteString
        getMessageBytes();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.MultiLineComment}
   */
  public static final class MultiLineComment extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.MultiLineComment)
      MultiLineCommentOrBuilder {
    // Use MultiLineComment.newBuilder() to construct.
    private MultiLineComment(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private MultiLineComment(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public MultiLineComment getDefaultInstanceForType() {
      return defaultInstance;
    }

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

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

    private int bitField0_;
    public static final int MESSAGE_FIELD_NUMBER = 1;
    private java.lang.Object message_;
    /**
     * <code>required string message = 1;</code>
     */
    public boolean hasMessage() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string message = 1;</code>
     */
    public java.lang.String getMessage() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        org.jetbrains.kotlin.protobuf.ByteString bs = 
            (org.jetbrains.kotlin.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          message_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string message = 1;</code>
     */
    public org.jetbrains.kotlin.protobuf.ByteString
        getMessageBytes() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        org.jetbrains.kotlin.protobuf.ByteString b = 
            org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        message_ = b;
        return b;
      } else {
        return (org.jetbrains.kotlin.protobuf.ByteString) ref;
      }
    }

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

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

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

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

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

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.MultiLineComment}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.MultiLineComment)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineCommentOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

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

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.message_ = message_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.MultiLineComment.getDefaultInstance()) return this;
        if (other.hasMessage()) {
          bitField0_ |= 0x00000001;
          message_ = other.message_;
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

      private java.lang.Object message_ = "";
      /**
       * <code>required string message = 1;</code>
       */
      public boolean hasMessage() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string message = 1;</code>
       */
      public java.lang.String getMessage() {
        java.lang.Object ref = message_;
        if (!(ref instanceof java.lang.String)) {
          org.jetbrains.kotlin.protobuf.ByteString bs =
              (org.jetbrains.kotlin.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            message_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string message = 1;</code>
       */
      public org.jetbrains.kotlin.protobuf.ByteString
          getMessageBytes() {
        java.lang.Object ref = message_;
        if (ref instanceof String) {
          org.jetbrains.kotlin.protobuf.ByteString b = 
              org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          message_ = b;
          return b;
        } else {
          return (org.jetbrains.kotlin.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string message = 1;</code>
       */
      public Builder setMessage(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        message_ = value;
        
        return this;
      }
      /**
       * <code>required string message = 1;</code>
       */
      public Builder clearMessage() {
        bitField0_ = (bitField0_ & ~0x00000001);
        message_ = getDefaultInstance().getMessage();
        
        return this;
      }
      /**
       * <code>required string message = 1;</code>
       */
      public Builder setMessageBytes(
          org.jetbrains.kotlin.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        message_ = value;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.MultiLineComment)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.MultiLineComment)
  }

  public interface FragmentOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Fragment)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ImportedModule imported_module = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule> 
        getImportedModuleList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ImportedModule imported_module = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule getImportedModule(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ImportedModule imported_module = 1;</code>
     */
    int getImportedModuleCount();

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Import import_entry = 2;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import> 
        getImportEntryList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Import import_entry = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import getImportEntry(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Import import_entry = 2;</code>
     */
    int getImportEntryCount();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock declaration_block = 3;</code>
     */
    boolean hasDeclarationBlock();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock declaration_block = 3;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getDeclarationBlock();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock export_block = 4;</code>
     */
    boolean hasExportBlock();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock export_block = 4;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getExportBlock();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock initializer_block = 5;</code>
     */
    boolean hasInitializerBlock();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock initializer_block = 5;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getInitializerBlock();

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.NameBinding name_binding = 6;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding> 
        getNameBindingList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.NameBinding name_binding = 6;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding getNameBinding(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.NameBinding name_binding = 6;</code>
     */
    int getNameBindingCount();

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ClassModel class_model = 7;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel> 
        getClassModelList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ClassModel class_model = 7;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel getClassModel(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ClassModel class_model = 7;</code>
     */
    int getClassModelCount();

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression module_expression = 8;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression> 
        getModuleExpressionList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression module_expression = 8;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getModuleExpression(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression module_expression = 8;</code>
     */
    int getModuleExpressionCount();

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlineModule inline_module = 9;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule> 
        getInlineModuleList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlineModule inline_module = 9;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule getInlineModule(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlineModule inline_module = 9;</code>
     */
    int getInlineModuleCount();

    /**
     * <code>optional string package_fqn = 10;</code>
     */
    boolean hasPackageFqn();
    /**
     * <code>optional string package_fqn = 10;</code>
     */
    java.lang.String getPackageFqn();
    /**
     * <code>optional string package_fqn = 10;</code>
     */
    org.jetbrains.kotlin.protobuf.ByteString
        getPackageFqnBytes();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement tests_invocation = 11;</code>
     */
    boolean hasTestsInvocation();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement tests_invocation = 11;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getTestsInvocation();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement main_invocation = 12;</code>
     */
    boolean hasMainInvocation();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement main_invocation = 12;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getMainInvocation();

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations inlined_local_declarations = 13;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations> 
        getInlinedLocalDeclarationsList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations inlined_local_declarations = 13;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations getInlinedLocalDeclarations(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations inlined_local_declarations = 13;</code>
     */
    int getInlinedLocalDeclarationsCount();

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.IrClassModel ir_class_model = 14;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel> 
        getIrClassModelList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.IrClassModel ir_class_model = 14;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel getIrClassModel(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.IrClassModel ir_class_model = 14;</code>
     */
    int getIrClassModelCount();

    /**
     * <code>optional string dts = 15;</code>
     */
    boolean hasDts();
    /**
     * <code>optional string dts = 15;</code>
     */
    java.lang.String getDts();
    /**
     * <code>optional string dts = 15;</code>
     */
    org.jetbrains.kotlin.protobuf.ByteString
        getDtsBytes();

    /**
     * <code>optional int32 suite_function = 16;</code>
     */
    boolean hasSuiteFunction();
    /**
     * <code>optional int32 suite_function = 16;</code>
     */
    int getSuiteFunction();

    /**
     * <code>repeated int32 definitions = 17;</code>
     */
    java.util.List<java.lang.Integer> getDefinitionsList();
    /**
     * <code>repeated int32 definitions = 17;</code>
     */
    int getDefinitionsCount();
    /**
     * <code>repeated int32 definitions = 17;</code>
     */
    int getDefinitions(int index);

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock polyfills = 18;</code>
     */
    boolean hasPolyfills();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock polyfills = 18;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getPolyfills();

    /**
     * <code>repeated int32 optionalCrossModuleImports = 19;</code>
     */
    java.util.List<java.lang.Integer> getOptionalCrossModuleImportsList();
    /**
     * <code>repeated int32 optionalCrossModuleImports = 19;</code>
     */
    int getOptionalCrossModuleImportsCount();
    /**
     * <code>repeated int32 optionalCrossModuleImports = 19;</code>
     */
    int getOptionalCrossModuleImports(int index);
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Fragment}
   */
  public static final class Fragment extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Fragment)
      FragmentOrBuilder {
    // Use Fragment.newBuilder() to construct.
    private Fragment(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Fragment(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Fragment getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Fragment(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                importedModule_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule>();
                mutable_bitField0_ |= 0x00000001;
              }
              importedModule_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule.PARSER, extensionRegistry));
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                importEntry_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import>();
                mutable_bitField0_ |= 0x00000002;
              }
              importEntry_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import.PARSER, extensionRegistry));
              break;
            }
            case 26: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = declarationBlock_.toBuilder();
              }
              declarationBlock_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(declarationBlock_);
                declarationBlock_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 34: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = exportBlock_.toBuilder();
              }
              exportBlock_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(exportBlock_);
                exportBlock_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 42: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = initializerBlock_.toBuilder();
              }
              initializerBlock_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(initializerBlock_);
                initializerBlock_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 50: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                nameBinding_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding>();
                mutable_bitField0_ |= 0x00000020;
              }
              nameBinding_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding.PARSER, extensionRegistry));
              break;
            }
            case 58: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                classModel_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel>();
                mutable_bitField0_ |= 0x00000040;
              }
              classModel_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel.PARSER, extensionRegistry));
              break;
            }
            case 66: {
              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                moduleExpression_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression>();
                mutable_bitField0_ |= 0x00000080;
              }
              moduleExpression_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry));
              break;
            }
            case 74: {
              if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                inlineModule_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule>();
                mutable_bitField0_ |= 0x00000100;
              }
              inlineModule_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule.PARSER, extensionRegistry));
              break;
            }
            case 82: {
              org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000008;
              packageFqn_ = bs;
              break;
            }
            case 90: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                subBuilder = testsInvocation_.toBuilder();
              }
              testsInvocation_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(testsInvocation_);
                testsInvocation_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
            case 98: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder subBuilder = null;
              if (((bitField0_ & 0x00000020) == 0x00000020)) {
                subBuilder = mainInvocation_.toBuilder();
              }
              mainInvocation_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(mainInvocation_);
                mainInvocation_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000020;
              break;
            }
            case 106: {
              if (!((mutable_bitField0_ & 0x00001000) == 0x00001000)) {
                inlinedLocalDeclarations_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations>();
                mutable_bitField0_ |= 0x00001000;
              }
              inlinedLocalDeclarations_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations.PARSER, extensionRegistry));
              break;
            }
            case 114: {
              if (!((mutable_bitField0_ & 0x00002000) == 0x00002000)) {
                irClassModel_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel>();
                mutable_bitField0_ |= 0x00002000;
              }
              irClassModel_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel.PARSER, extensionRegistry));
              break;
            }
            case 122: {
              org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000040;
              dts_ = bs;
              break;
            }
            case 128: {
              bitField0_ |= 0x00000080;
              suiteFunction_ = input.readInt32();
              break;
            }
            case 136: {
              if (!((mutable_bitField0_ & 0x00010000) == 0x00010000)) {
                definitions_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00010000;
              }
              definitions_.add(input.readInt32());
              break;
            }
            case 138: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00010000) == 0x00010000) && input.getBytesUntilLimit() > 0) {
                definitions_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00010000;
              }
              while (input.getBytesUntilLimit() > 0) {
                definitions_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 146: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.Builder subBuilder = null;
              if (((bitField0_ & 0x00000100) == 0x00000100)) {
                subBuilder = polyfills_.toBuilder();
              }
              polyfills_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(polyfills_);
                polyfills_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000100;
              break;
            }
            case 152: {
              if (!((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
                optionalCrossModuleImports_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00040000;
              }
              optionalCrossModuleImports_.add(input.readInt32());
              break;
            }
            case 154: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00040000) == 0x00040000) && input.getBytesUntilLimit() > 0) {
                optionalCrossModuleImports_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00040000;
              }
              while (input.getBytesUntilLimit() > 0) {
                optionalCrossModuleImports_.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_ & 0x00000001) == 0x00000001)) {
          importedModule_ = java.util.Collections.unmodifiableList(importedModule_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          importEntry_ = java.util.Collections.unmodifiableList(importEntry_);
        }
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          nameBinding_ = java.util.Collections.unmodifiableList(nameBinding_);
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          classModel_ = java.util.Collections.unmodifiableList(classModel_);
        }
        if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
          moduleExpression_ = java.util.Collections.unmodifiableList(moduleExpression_);
        }
        if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
          inlineModule_ = java.util.Collections.unmodifiableList(inlineModule_);
        }
        if (((mutable_bitField0_ & 0x00001000) == 0x00001000)) {
          inlinedLocalDeclarations_ = java.util.Collections.unmodifiableList(inlinedLocalDeclarations_);
        }
        if (((mutable_bitField0_ & 0x00002000) == 0x00002000)) {
          irClassModel_ = java.util.Collections.unmodifiableList(irClassModel_);
        }
        if (((mutable_bitField0_ & 0x00010000) == 0x00010000)) {
          definitions_ = java.util.Collections.unmodifiableList(definitions_);
        }
        if (((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
          optionalCrossModuleImports_ = java.util.Collections.unmodifiableList(optionalCrossModuleImports_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<Fragment> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Fragment>() {
      public Fragment parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Fragment(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int IMPORTED_MODULE_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule> importedModule_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ImportedModule imported_module = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule> getImportedModuleList() {
      return importedModule_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ImportedModule imported_module = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModuleOrBuilder> 
        getImportedModuleOrBuilderList() {
      return importedModule_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ImportedModule imported_module = 1;</code>
     */
    public int getImportedModuleCount() {
      return importedModule_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ImportedModule imported_module = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule getImportedModule(int index) {
      return importedModule_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ImportedModule imported_module = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModuleOrBuilder getImportedModuleOrBuilder(
        int index) {
      return importedModule_.get(index);
    }

    public static final int IMPORT_ENTRY_FIELD_NUMBER = 2;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import> importEntry_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Import import_entry = 2;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import> getImportEntryList() {
      return importEntry_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Import import_entry = 2;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportOrBuilder> 
        getImportEntryOrBuilderList() {
      return importEntry_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Import import_entry = 2;</code>
     */
    public int getImportEntryCount() {
      return importEntry_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Import import_entry = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import getImportEntry(int index) {
      return importEntry_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Import import_entry = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportOrBuilder getImportEntryOrBuilder(
        int index) {
      return importEntry_.get(index);
    }

    public static final int DECLARATION_BLOCK_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock declarationBlock_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock declaration_block = 3;</code>
     */
    public boolean hasDeclarationBlock() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock declaration_block = 3;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getDeclarationBlock() {
      return declarationBlock_;
    }

    public static final int EXPORT_BLOCK_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock exportBlock_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock export_block = 4;</code>
     */
    public boolean hasExportBlock() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock export_block = 4;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getExportBlock() {
      return exportBlock_;
    }

    public static final int INITIALIZER_BLOCK_FIELD_NUMBER = 5;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock initializerBlock_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock initializer_block = 5;</code>
     */
    public boolean hasInitializerBlock() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock initializer_block = 5;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getInitializerBlock() {
      return initializerBlock_;
    }

    public static final int NAME_BINDING_FIELD_NUMBER = 6;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding> nameBinding_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.NameBinding name_binding = 6;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding> getNameBindingList() {
      return nameBinding_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.NameBinding name_binding = 6;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBindingOrBuilder> 
        getNameBindingOrBuilderList() {
      return nameBinding_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.NameBinding name_binding = 6;</code>
     */
    public int getNameBindingCount() {
      return nameBinding_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.NameBinding name_binding = 6;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding getNameBinding(int index) {
      return nameBinding_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.NameBinding name_binding = 6;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBindingOrBuilder getNameBindingOrBuilder(
        int index) {
      return nameBinding_.get(index);
    }

    public static final int CLASS_MODEL_FIELD_NUMBER = 7;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel> classModel_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ClassModel class_model = 7;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel> getClassModelList() {
      return classModel_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ClassModel class_model = 7;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModelOrBuilder> 
        getClassModelOrBuilderList() {
      return classModel_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ClassModel class_model = 7;</code>
     */
    public int getClassModelCount() {
      return classModel_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ClassModel class_model = 7;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel getClassModel(int index) {
      return classModel_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ClassModel class_model = 7;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModelOrBuilder getClassModelOrBuilder(
        int index) {
      return classModel_.get(index);
    }

    public static final int MODULE_EXPRESSION_FIELD_NUMBER = 8;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression> moduleExpression_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression module_expression = 8;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression> getModuleExpressionList() {
      return moduleExpression_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression module_expression = 8;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionOrBuilder> 
        getModuleExpressionOrBuilderList() {
      return moduleExpression_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression module_expression = 8;</code>
     */
    public int getModuleExpressionCount() {
      return moduleExpression_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression module_expression = 8;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getModuleExpression(int index) {
      return moduleExpression_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression module_expression = 8;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ExpressionOrBuilder getModuleExpressionOrBuilder(
        int index) {
      return moduleExpression_.get(index);
    }

    public static final int INLINE_MODULE_FIELD_NUMBER = 9;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule> inlineModule_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlineModule inline_module = 9;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule> getInlineModuleList() {
      return inlineModule_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlineModule inline_module = 9;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModuleOrBuilder> 
        getInlineModuleOrBuilderList() {
      return inlineModule_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlineModule inline_module = 9;</code>
     */
    public int getInlineModuleCount() {
      return inlineModule_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlineModule inline_module = 9;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule getInlineModule(int index) {
      return inlineModule_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlineModule inline_module = 9;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModuleOrBuilder getInlineModuleOrBuilder(
        int index) {
      return inlineModule_.get(index);
    }

    public static final int PACKAGE_FQN_FIELD_NUMBER = 10;
    private java.lang.Object packageFqn_;
    /**
     * <code>optional string package_fqn = 10;</code>
     */
    public boolean hasPackageFqn() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional string package_fqn = 10;</code>
     */
    public java.lang.String getPackageFqn() {
      java.lang.Object ref = packageFqn_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        org.jetbrains.kotlin.protobuf.ByteString bs = 
            (org.jetbrains.kotlin.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          packageFqn_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string package_fqn = 10;</code>
     */
    public org.jetbrains.kotlin.protobuf.ByteString
        getPackageFqnBytes() {
      java.lang.Object ref = packageFqn_;
      if (ref instanceof java.lang.String) {
        org.jetbrains.kotlin.protobuf.ByteString b = 
            org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        packageFqn_ = b;
        return b;
      } else {
        return (org.jetbrains.kotlin.protobuf.ByteString) ref;
      }
    }

    public static final int TESTS_INVOCATION_FIELD_NUMBER = 11;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement testsInvocation_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement tests_invocation = 11;</code>
     */
    public boolean hasTestsInvocation() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement tests_invocation = 11;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getTestsInvocation() {
      return testsInvocation_;
    }

    public static final int MAIN_INVOCATION_FIELD_NUMBER = 12;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement mainInvocation_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement main_invocation = 12;</code>
     */
    public boolean hasMainInvocation() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement main_invocation = 12;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getMainInvocation() {
      return mainInvocation_;
    }

    public static final int INLINED_LOCAL_DECLARATIONS_FIELD_NUMBER = 13;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations> inlinedLocalDeclarations_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations inlined_local_declarations = 13;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations> getInlinedLocalDeclarationsList() {
      return inlinedLocalDeclarations_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations inlined_local_declarations = 13;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarationsOrBuilder> 
        getInlinedLocalDeclarationsOrBuilderList() {
      return inlinedLocalDeclarations_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations inlined_local_declarations = 13;</code>
     */
    public int getInlinedLocalDeclarationsCount() {
      return inlinedLocalDeclarations_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations inlined_local_declarations = 13;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations getInlinedLocalDeclarations(int index) {
      return inlinedLocalDeclarations_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations inlined_local_declarations = 13;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarationsOrBuilder getInlinedLocalDeclarationsOrBuilder(
        int index) {
      return inlinedLocalDeclarations_.get(index);
    }

    public static final int IR_CLASS_MODEL_FIELD_NUMBER = 14;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel> irClassModel_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.IrClassModel ir_class_model = 14;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel> getIrClassModelList() {
      return irClassModel_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.IrClassModel ir_class_model = 14;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModelOrBuilder> 
        getIrClassModelOrBuilderList() {
      return irClassModel_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.IrClassModel ir_class_model = 14;</code>
     */
    public int getIrClassModelCount() {
      return irClassModel_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.IrClassModel ir_class_model = 14;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel getIrClassModel(int index) {
      return irClassModel_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.IrClassModel ir_class_model = 14;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModelOrBuilder getIrClassModelOrBuilder(
        int index) {
      return irClassModel_.get(index);
    }

    public static final int DTS_FIELD_NUMBER = 15;
    private java.lang.Object dts_;
    /**
     * <code>optional string dts = 15;</code>
     */
    public boolean hasDts() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional string dts = 15;</code>
     */
    public java.lang.String getDts() {
      java.lang.Object ref = dts_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        org.jetbrains.kotlin.protobuf.ByteString bs = 
            (org.jetbrains.kotlin.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          dts_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string dts = 15;</code>
     */
    public org.jetbrains.kotlin.protobuf.ByteString
        getDtsBytes() {
      java.lang.Object ref = dts_;
      if (ref instanceof java.lang.String) {
        org.jetbrains.kotlin.protobuf.ByteString b = 
            org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        dts_ = b;
        return b;
      } else {
        return (org.jetbrains.kotlin.protobuf.ByteString) ref;
      }
    }

    public static final int SUITE_FUNCTION_FIELD_NUMBER = 16;
    private int suiteFunction_;
    /**
     * <code>optional int32 suite_function = 16;</code>
     */
    public boolean hasSuiteFunction() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>optional int32 suite_function = 16;</code>
     */
    public int getSuiteFunction() {
      return suiteFunction_;
    }

    public static final int DEFINITIONS_FIELD_NUMBER = 17;
    private java.util.List<java.lang.Integer> definitions_;
    /**
     * <code>repeated int32 definitions = 17;</code>
     */
    public java.util.List<java.lang.Integer>
        getDefinitionsList() {
      return definitions_;
    }
    /**
     * <code>repeated int32 definitions = 17;</code>
     */
    public int getDefinitionsCount() {
      return definitions_.size();
    }
    /**
     * <code>repeated int32 definitions = 17;</code>
     */
    public int getDefinitions(int index) {
      return definitions_.get(index);
    }

    public static final int POLYFILLS_FIELD_NUMBER = 18;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock polyfills_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock polyfills = 18;</code>
     */
    public boolean hasPolyfills() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock polyfills = 18;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getPolyfills() {
      return polyfills_;
    }

    public static final int OPTIONALCROSSMODULEIMPORTS_FIELD_NUMBER = 19;
    private java.util.List<java.lang.Integer> optionalCrossModuleImports_;
    /**
     * <code>repeated int32 optionalCrossModuleImports = 19;</code>
     */
    public java.util.List<java.lang.Integer>
        getOptionalCrossModuleImportsList() {
      return optionalCrossModuleImports_;
    }
    /**
     * <code>repeated int32 optionalCrossModuleImports = 19;</code>
     */
    public int getOptionalCrossModuleImportsCount() {
      return optionalCrossModuleImports_.size();
    }
    /**
     * <code>repeated int32 optionalCrossModuleImports = 19;</code>
     */
    public int getOptionalCrossModuleImports(int index) {
      return optionalCrossModuleImports_.get(index);
    }

    private void initFields() {
      importedModule_ = java.util.Collections.emptyList();
      importEntry_ = java.util.Collections.emptyList();
      declarationBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
      exportBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
      initializerBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
      nameBinding_ = java.util.Collections.emptyList();
      classModel_ = java.util.Collections.emptyList();
      moduleExpression_ = java.util.Collections.emptyList();
      inlineModule_ = java.util.Collections.emptyList();
      packageFqn_ = "";
      testsInvocation_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
      mainInvocation_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
      inlinedLocalDeclarations_ = java.util.Collections.emptyList();
      irClassModel_ = java.util.Collections.emptyList();
      dts_ = "";
      suiteFunction_ = 0;
      definitions_ = java.util.Collections.emptyList();
      polyfills_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
      optionalCrossModuleImports_ = 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 < getImportedModuleCount(); i++) {
        if (!getImportedModule(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getImportEntryCount(); i++) {
        if (!getImportEntry(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasDeclarationBlock()) {
        if (!getDeclarationBlock().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasExportBlock()) {
        if (!getExportBlock().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasInitializerBlock()) {
        if (!getInitializerBlock().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getNameBindingCount(); i++) {
        if (!getNameBinding(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getClassModelCount(); i++) {
        if (!getClassModel(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getModuleExpressionCount(); i++) {
        if (!getModuleExpression(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getInlineModuleCount(); i++) {
        if (!getInlineModule(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasTestsInvocation()) {
        if (!getTestsInvocation().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasMainInvocation()) {
        if (!getMainInvocation().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getInlinedLocalDeclarationsCount(); i++) {
        if (!getInlinedLocalDeclarations(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getIrClassModelCount(); i++) {
        if (!getIrClassModel(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasPolyfills()) {
        if (!getPolyfills().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 < importedModule_.size(); i++) {
        output.writeMessage(1, importedModule_.get(i));
      }
      for (int i = 0; i < importEntry_.size(); i++) {
        output.writeMessage(2, importEntry_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(3, declarationBlock_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(4, exportBlock_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(5, initializerBlock_);
      }
      for (int i = 0; i < nameBinding_.size(); i++) {
        output.writeMessage(6, nameBinding_.get(i));
      }
      for (int i = 0; i < classModel_.size(); i++) {
        output.writeMessage(7, classModel_.get(i));
      }
      for (int i = 0; i < moduleExpression_.size(); i++) {
        output.writeMessage(8, moduleExpression_.get(i));
      }
      for (int i = 0; i < inlineModule_.size(); i++) {
        output.writeMessage(9, inlineModule_.get(i));
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(10, getPackageFqnBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(11, testsInvocation_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeMessage(12, mainInvocation_);
      }
      for (int i = 0; i < inlinedLocalDeclarations_.size(); i++) {
        output.writeMessage(13, inlinedLocalDeclarations_.get(i));
      }
      for (int i = 0; i < irClassModel_.size(); i++) {
        output.writeMessage(14, irClassModel_.get(i));
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBytes(15, getDtsBytes());
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeInt32(16, suiteFunction_);
      }
      for (int i = 0; i < definitions_.size(); i++) {
        output.writeInt32(17, definitions_.get(i));
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeMessage(18, polyfills_);
      }
      for (int i = 0; i < optionalCrossModuleImports_.size(); i++) {
        output.writeInt32(19, optionalCrossModuleImports_.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 < importedModule_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, importedModule_.get(i));
      }
      for (int i = 0; i < importEntry_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, importEntry_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, declarationBlock_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, exportBlock_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(5, initializerBlock_);
      }
      for (int i = 0; i < nameBinding_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(6, nameBinding_.get(i));
      }
      for (int i = 0; i < classModel_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(7, classModel_.get(i));
      }
      for (int i = 0; i < moduleExpression_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(8, moduleExpression_.get(i));
      }
      for (int i = 0; i < inlineModule_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(9, inlineModule_.get(i));
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBytesSize(10, getPackageFqnBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(11, testsInvocation_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(12, mainInvocation_);
      }
      for (int i = 0; i < inlinedLocalDeclarations_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(13, inlinedLocalDeclarations_.get(i));
      }
      for (int i = 0; i < irClassModel_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(14, irClassModel_.get(i));
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBytesSize(15, getDtsBytes());
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(16, suiteFunction_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < definitions_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(definitions_.get(i));
        }
        size += dataSize;
        size += 2 * getDefinitionsList().size();
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(18, polyfills_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < optionalCrossModuleImports_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(optionalCrossModuleImports_.get(i));
        }
        size += dataSize;
        size += 2 * getOptionalCrossModuleImportsList().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.serialization.js.ast.JsAstProtoBuf.Fragment parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment 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.serialization.js.ast.JsAstProtoBuf.Fragment parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment 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.serialization.js.ast.JsAstProtoBuf.Fragment parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment 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.serialization.js.ast.JsAstProtoBuf.Fragment parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment 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.serialization.js.ast.JsAstProtoBuf.Fragment parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment 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.serialization.js.ast.JsAstProtoBuf.Fragment prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Fragment}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Fragment)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.FragmentOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        importedModule_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        importEntry_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        declarationBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        exportBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        initializerBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000010);
        nameBinding_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        classModel_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        moduleExpression_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);
        inlineModule_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000100);
        packageFqn_ = "";
        bitField0_ = (bitField0_ & ~0x00000200);
        testsInvocation_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000400);
        mainInvocation_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000800);
        inlinedLocalDeclarations_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00001000);
        irClassModel_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00002000);
        dts_ = "";
        bitField0_ = (bitField0_ & ~0x00004000);
        suiteFunction_ = 0;
        bitField0_ = (bitField0_ & ~0x00008000);
        definitions_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00010000);
        polyfills_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00020000);
        optionalCrossModuleImports_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00040000);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          importedModule_ = java.util.Collections.unmodifiableList(importedModule_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.importedModule_ = importedModule_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          importEntry_ = java.util.Collections.unmodifiableList(importEntry_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.importEntry_ = importEntry_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000001;
        }
        result.declarationBlock_ = declarationBlock_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000002;
        }
        result.exportBlock_ = exportBlock_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000004;
        }
        result.initializerBlock_ = initializerBlock_;
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          nameBinding_ = java.util.Collections.unmodifiableList(nameBinding_);
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.nameBinding_ = nameBinding_;
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          classModel_ = java.util.Collections.unmodifiableList(classModel_);
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.classModel_ = classModel_;
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          moduleExpression_ = java.util.Collections.unmodifiableList(moduleExpression_);
          bitField0_ = (bitField0_ & ~0x00000080);
        }
        result.moduleExpression_ = moduleExpression_;
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          inlineModule_ = java.util.Collections.unmodifiableList(inlineModule_);
          bitField0_ = (bitField0_ & ~0x00000100);
        }
        result.inlineModule_ = inlineModule_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000008;
        }
        result.packageFqn_ = packageFqn_;
        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
          to_bitField0_ |= 0x00000010;
        }
        result.testsInvocation_ = testsInvocation_;
        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
          to_bitField0_ |= 0x00000020;
        }
        result.mainInvocation_ = mainInvocation_;
        if (((bitField0_ & 0x00001000) == 0x00001000)) {
          inlinedLocalDeclarations_ = java.util.Collections.unmodifiableList(inlinedLocalDeclarations_);
          bitField0_ = (bitField0_ & ~0x00001000);
        }
        result.inlinedLocalDeclarations_ = inlinedLocalDeclarations_;
        if (((bitField0_ & 0x00002000) == 0x00002000)) {
          irClassModel_ = java.util.Collections.unmodifiableList(irClassModel_);
          bitField0_ = (bitField0_ & ~0x00002000);
        }
        result.irClassModel_ = irClassModel_;
        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
          to_bitField0_ |= 0x00000040;
        }
        result.dts_ = dts_;
        if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
          to_bitField0_ |= 0x00000080;
        }
        result.suiteFunction_ = suiteFunction_;
        if (((bitField0_ & 0x00010000) == 0x00010000)) {
          definitions_ = java.util.Collections.unmodifiableList(definitions_);
          bitField0_ = (bitField0_ & ~0x00010000);
        }
        result.definitions_ = definitions_;
        if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
          to_bitField0_ |= 0x00000100;
        }
        result.polyfills_ = polyfills_;
        if (((bitField0_ & 0x00040000) == 0x00040000)) {
          optionalCrossModuleImports_ = java.util.Collections.unmodifiableList(optionalCrossModuleImports_);
          bitField0_ = (bitField0_ & ~0x00040000);
        }
        result.optionalCrossModuleImports_ = optionalCrossModuleImports_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment.getDefaultInstance()) return this;
        if (!other.importedModule_.isEmpty()) {
          if (importedModule_.isEmpty()) {
            importedModule_ = other.importedModule_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureImportedModuleIsMutable();
            importedModule_.addAll(other.importedModule_);
          }
          
        }
        if (!other.importEntry_.isEmpty()) {
          if (importEntry_.isEmpty()) {
            importEntry_ = other.importEntry_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureImportEntryIsMutable();
            importEntry_.addAll(other.importEntry_);
          }
          
        }
        if (other.hasDeclarationBlock()) {
          mergeDeclarationBlock(other.getDeclarationBlock());
        }
        if (other.hasExportBlock()) {
          mergeExportBlock(other.getExportBlock());
        }
        if (other.hasInitializerBlock()) {
          mergeInitializerBlock(other.getInitializerBlock());
        }
        if (!other.nameBinding_.isEmpty()) {
          if (nameBinding_.isEmpty()) {
            nameBinding_ = other.nameBinding_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureNameBindingIsMutable();
            nameBinding_.addAll(other.nameBinding_);
          }
          
        }
        if (!other.classModel_.isEmpty()) {
          if (classModel_.isEmpty()) {
            classModel_ = other.classModel_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureClassModelIsMutable();
            classModel_.addAll(other.classModel_);
          }
          
        }
        if (!other.moduleExpression_.isEmpty()) {
          if (moduleExpression_.isEmpty()) {
            moduleExpression_ = other.moduleExpression_;
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            ensureModuleExpressionIsMutable();
            moduleExpression_.addAll(other.moduleExpression_);
          }
          
        }
        if (!other.inlineModule_.isEmpty()) {
          if (inlineModule_.isEmpty()) {
            inlineModule_ = other.inlineModule_;
            bitField0_ = (bitField0_ & ~0x00000100);
          } else {
            ensureInlineModuleIsMutable();
            inlineModule_.addAll(other.inlineModule_);
          }
          
        }
        if (other.hasPackageFqn()) {
          bitField0_ |= 0x00000200;
          packageFqn_ = other.packageFqn_;
          
        }
        if (other.hasTestsInvocation()) {
          mergeTestsInvocation(other.getTestsInvocation());
        }
        if (other.hasMainInvocation()) {
          mergeMainInvocation(other.getMainInvocation());
        }
        if (!other.inlinedLocalDeclarations_.isEmpty()) {
          if (inlinedLocalDeclarations_.isEmpty()) {
            inlinedLocalDeclarations_ = other.inlinedLocalDeclarations_;
            bitField0_ = (bitField0_ & ~0x00001000);
          } else {
            ensureInlinedLocalDeclarationsIsMutable();
            inlinedLocalDeclarations_.addAll(other.inlinedLocalDeclarations_);
          }
          
        }
        if (!other.irClassModel_.isEmpty()) {
          if (irClassModel_.isEmpty()) {
            irClassModel_ = other.irClassModel_;
            bitField0_ = (bitField0_ & ~0x00002000);
          } else {
            ensureIrClassModelIsMutable();
            irClassModel_.addAll(other.irClassModel_);
          }
          
        }
        if (other.hasDts()) {
          bitField0_ |= 0x00004000;
          dts_ = other.dts_;
          
        }
        if (other.hasSuiteFunction()) {
          setSuiteFunction(other.getSuiteFunction());
        }
        if (!other.definitions_.isEmpty()) {
          if (definitions_.isEmpty()) {
            definitions_ = other.definitions_;
            bitField0_ = (bitField0_ & ~0x00010000);
          } else {
            ensureDefinitionsIsMutable();
            definitions_.addAll(other.definitions_);
          }
          
        }
        if (other.hasPolyfills()) {
          mergePolyfills(other.getPolyfills());
        }
        if (!other.optionalCrossModuleImports_.isEmpty()) {
          if (optionalCrossModuleImports_.isEmpty()) {
            optionalCrossModuleImports_ = other.optionalCrossModuleImports_;
            bitField0_ = (bitField0_ & ~0x00040000);
          } else {
            ensureOptionalCrossModuleImportsIsMutable();
            optionalCrossModuleImports_.addAll(other.optionalCrossModuleImports_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getImportedModuleCount(); i++) {
          if (!getImportedModule(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getImportEntryCount(); i++) {
          if (!getImportEntry(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasDeclarationBlock()) {
          if (!getDeclarationBlock().isInitialized()) {
            
            return false;
          }
        }
        if (hasExportBlock()) {
          if (!getExportBlock().isInitialized()) {
            
            return false;
          }
        }
        if (hasInitializerBlock()) {
          if (!getInitializerBlock().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getNameBindingCount(); i++) {
          if (!getNameBinding(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getClassModelCount(); i++) {
          if (!getClassModel(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getModuleExpressionCount(); i++) {
          if (!getModuleExpression(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getInlineModuleCount(); i++) {
          if (!getInlineModule(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasTestsInvocation()) {
          if (!getTestsInvocation().isInitialized()) {
            
            return false;
          }
        }
        if (hasMainInvocation()) {
          if (!getMainInvocation().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getInlinedLocalDeclarationsCount(); i++) {
          if (!getInlinedLocalDeclarations(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getIrClassModelCount(); i++) {
          if (!getIrClassModel(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasPolyfills()) {
          if (!getPolyfills().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.serialization.js.ast.JsAstProtoBuf.Fragment parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule> importedModule_ =
        java.util.Collections.emptyList();
      private void ensureImportedModuleIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          importedModule_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule>(importedModule_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ImportedModule imported_module = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule> getImportedModuleList() {
        return java.util.Collections.unmodifiableList(importedModule_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ImportedModule imported_module = 1;</code>
       */
      public int getImportedModuleCount() {
        return importedModule_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ImportedModule imported_module = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule getImportedModule(int index) {
        return importedModule_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ImportedModule imported_module = 1;</code>
       */
      public Builder setImportedModule(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureImportedModuleIsMutable();
        importedModule_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ImportedModule imported_module = 1;</code>
       */
      public Builder setImportedModule(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule.Builder builderForValue) {
        ensureImportedModuleIsMutable();
        importedModule_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ImportedModule imported_module = 1;</code>
       */
      public Builder addImportedModule(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureImportedModuleIsMutable();
        importedModule_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ImportedModule imported_module = 1;</code>
       */
      public Builder addImportedModule(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureImportedModuleIsMutable();
        importedModule_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ImportedModule imported_module = 1;</code>
       */
      public Builder addImportedModule(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule.Builder builderForValue) {
        ensureImportedModuleIsMutable();
        importedModule_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ImportedModule imported_module = 1;</code>
       */
      public Builder addImportedModule(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule.Builder builderForValue) {
        ensureImportedModuleIsMutable();
        importedModule_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ImportedModule imported_module = 1;</code>
       */
      public Builder addAllImportedModule(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule> values) {
        ensureImportedModuleIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, importedModule_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ImportedModule imported_module = 1;</code>
       */
      public Builder clearImportedModule() {
        importedModule_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ImportedModule imported_module = 1;</code>
       */
      public Builder removeImportedModule(int index) {
        ensureImportedModuleIsMutable();
        importedModule_.remove(index);

        return this;
      }

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import> importEntry_ =
        java.util.Collections.emptyList();
      private void ensureImportEntryIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          importEntry_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import>(importEntry_);
          bitField0_ |= 0x00000002;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Import import_entry = 2;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import> getImportEntryList() {
        return java.util.Collections.unmodifiableList(importEntry_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Import import_entry = 2;</code>
       */
      public int getImportEntryCount() {
        return importEntry_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Import import_entry = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import getImportEntry(int index) {
        return importEntry_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Import import_entry = 2;</code>
       */
      public Builder setImportEntry(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureImportEntryIsMutable();
        importEntry_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Import import_entry = 2;</code>
       */
      public Builder setImportEntry(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import.Builder builderForValue) {
        ensureImportEntryIsMutable();
        importEntry_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Import import_entry = 2;</code>
       */
      public Builder addImportEntry(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureImportEntryIsMutable();
        importEntry_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Import import_entry = 2;</code>
       */
      public Builder addImportEntry(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureImportEntryIsMutable();
        importEntry_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Import import_entry = 2;</code>
       */
      public Builder addImportEntry(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import.Builder builderForValue) {
        ensureImportEntryIsMutable();
        importEntry_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Import import_entry = 2;</code>
       */
      public Builder addImportEntry(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import.Builder builderForValue) {
        ensureImportEntryIsMutable();
        importEntry_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Import import_entry = 2;</code>
       */
      public Builder addAllImportEntry(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import> values) {
        ensureImportEntryIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, importEntry_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Import import_entry = 2;</code>
       */
      public Builder clearImportEntry() {
        importEntry_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Import import_entry = 2;</code>
       */
      public Builder removeImportEntry(int index) {
        ensureImportEntryIsMutable();
        importEntry_.remove(index);

        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock declarationBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock declaration_block = 3;</code>
       */
      public boolean hasDeclarationBlock() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock declaration_block = 3;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getDeclarationBlock() {
        return declarationBlock_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock declaration_block = 3;</code>
       */
      public Builder setDeclarationBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock value) {
        if (value == null) {
          throw new NullPointerException();
        }
        declarationBlock_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock declaration_block = 3;</code>
       */
      public Builder setDeclarationBlock(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.Builder builderForValue) {
        declarationBlock_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock declaration_block = 3;</code>
       */
      public Builder mergeDeclarationBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            declarationBlock_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance()) {
          declarationBlock_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.newBuilder(declarationBlock_).mergeFrom(value).buildPartial();
        } else {
          declarationBlock_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock declaration_block = 3;</code>
       */
      public Builder clearDeclarationBlock() {
        declarationBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock exportBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock export_block = 4;</code>
       */
      public boolean hasExportBlock() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock export_block = 4;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getExportBlock() {
        return exportBlock_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock export_block = 4;</code>
       */
      public Builder setExportBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock value) {
        if (value == null) {
          throw new NullPointerException();
        }
        exportBlock_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock export_block = 4;</code>
       */
      public Builder setExportBlock(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.Builder builderForValue) {
        exportBlock_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock export_block = 4;</code>
       */
      public Builder mergeExportBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            exportBlock_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance()) {
          exportBlock_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.newBuilder(exportBlock_).mergeFrom(value).buildPartial();
        } else {
          exportBlock_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock export_block = 4;</code>
       */
      public Builder clearExportBlock() {
        exportBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock initializerBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock initializer_block = 5;</code>
       */
      public boolean hasInitializerBlock() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock initializer_block = 5;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getInitializerBlock() {
        return initializerBlock_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock initializer_block = 5;</code>
       */
      public Builder setInitializerBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock value) {
        if (value == null) {
          throw new NullPointerException();
        }
        initializerBlock_ = value;

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock initializer_block = 5;</code>
       */
      public Builder setInitializerBlock(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.Builder builderForValue) {
        initializerBlock_ = builderForValue.build();

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock initializer_block = 5;</code>
       */
      public Builder mergeInitializerBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock value) {
        if (((bitField0_ & 0x00000010) == 0x00000010) &&
            initializerBlock_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance()) {
          initializerBlock_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.newBuilder(initializerBlock_).mergeFrom(value).buildPartial();
        } else {
          initializerBlock_ = value;
        }

        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock initializer_block = 5;</code>
       */
      public Builder clearInitializerBlock() {
        initializerBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();

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

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding> nameBinding_ =
        java.util.Collections.emptyList();
      private void ensureNameBindingIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          nameBinding_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding>(nameBinding_);
          bitField0_ |= 0x00000020;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.NameBinding name_binding = 6;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding> getNameBindingList() {
        return java.util.Collections.unmodifiableList(nameBinding_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.NameBinding name_binding = 6;</code>
       */
      public int getNameBindingCount() {
        return nameBinding_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.NameBinding name_binding = 6;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding getNameBinding(int index) {
        return nameBinding_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.NameBinding name_binding = 6;</code>
       */
      public Builder setNameBinding(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureNameBindingIsMutable();
        nameBinding_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.NameBinding name_binding = 6;</code>
       */
      public Builder setNameBinding(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding.Builder builderForValue) {
        ensureNameBindingIsMutable();
        nameBinding_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.NameBinding name_binding = 6;</code>
       */
      public Builder addNameBinding(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureNameBindingIsMutable();
        nameBinding_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.NameBinding name_binding = 6;</code>
       */
      public Builder addNameBinding(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureNameBindingIsMutable();
        nameBinding_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.NameBinding name_binding = 6;</code>
       */
      public Builder addNameBinding(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding.Builder builderForValue) {
        ensureNameBindingIsMutable();
        nameBinding_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.NameBinding name_binding = 6;</code>
       */
      public Builder addNameBinding(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding.Builder builderForValue) {
        ensureNameBindingIsMutable();
        nameBinding_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.NameBinding name_binding = 6;</code>
       */
      public Builder addAllNameBinding(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding> values) {
        ensureNameBindingIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, nameBinding_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.NameBinding name_binding = 6;</code>
       */
      public Builder clearNameBinding() {
        nameBinding_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.NameBinding name_binding = 6;</code>
       */
      public Builder removeNameBinding(int index) {
        ensureNameBindingIsMutable();
        nameBinding_.remove(index);

        return this;
      }

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel> classModel_ =
        java.util.Collections.emptyList();
      private void ensureClassModelIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          classModel_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel>(classModel_);
          bitField0_ |= 0x00000040;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ClassModel class_model = 7;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel> getClassModelList() {
        return java.util.Collections.unmodifiableList(classModel_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ClassModel class_model = 7;</code>
       */
      public int getClassModelCount() {
        return classModel_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ClassModel class_model = 7;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel getClassModel(int index) {
        return classModel_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ClassModel class_model = 7;</code>
       */
      public Builder setClassModel(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureClassModelIsMutable();
        classModel_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ClassModel class_model = 7;</code>
       */
      public Builder setClassModel(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel.Builder builderForValue) {
        ensureClassModelIsMutable();
        classModel_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ClassModel class_model = 7;</code>
       */
      public Builder addClassModel(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureClassModelIsMutable();
        classModel_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ClassModel class_model = 7;</code>
       */
      public Builder addClassModel(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureClassModelIsMutable();
        classModel_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ClassModel class_model = 7;</code>
       */
      public Builder addClassModel(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel.Builder builderForValue) {
        ensureClassModelIsMutable();
        classModel_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ClassModel class_model = 7;</code>
       */
      public Builder addClassModel(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel.Builder builderForValue) {
        ensureClassModelIsMutable();
        classModel_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ClassModel class_model = 7;</code>
       */
      public Builder addAllClassModel(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel> values) {
        ensureClassModelIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, classModel_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ClassModel class_model = 7;</code>
       */
      public Builder clearClassModel() {
        classModel_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.ClassModel class_model = 7;</code>
       */
      public Builder removeClassModel(int index) {
        ensureClassModelIsMutable();
        classModel_.remove(index);

        return this;
      }

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression> moduleExpression_ =
        java.util.Collections.emptyList();
      private void ensureModuleExpressionIsMutable() {
        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
          moduleExpression_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression>(moduleExpression_);
          bitField0_ |= 0x00000080;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression module_expression = 8;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression> getModuleExpressionList() {
        return java.util.Collections.unmodifiableList(moduleExpression_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression module_expression = 8;</code>
       */
      public int getModuleExpressionCount() {
        return moduleExpression_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression module_expression = 8;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getModuleExpression(int index) {
        return moduleExpression_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression module_expression = 8;</code>
       */
      public Builder setModuleExpression(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureModuleExpressionIsMutable();
        moduleExpression_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression module_expression = 8;</code>
       */
      public Builder setModuleExpression(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        ensureModuleExpressionIsMutable();
        moduleExpression_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression module_expression = 8;</code>
       */
      public Builder addModuleExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureModuleExpressionIsMutable();
        moduleExpression_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression module_expression = 8;</code>
       */
      public Builder addModuleExpression(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureModuleExpressionIsMutable();
        moduleExpression_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression module_expression = 8;</code>
       */
      public Builder addModuleExpression(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        ensureModuleExpressionIsMutable();
        moduleExpression_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression module_expression = 8;</code>
       */
      public Builder addModuleExpression(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        ensureModuleExpressionIsMutable();
        moduleExpression_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression module_expression = 8;</code>
       */
      public Builder addAllModuleExpression(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression> values) {
        ensureModuleExpressionIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, moduleExpression_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression module_expression = 8;</code>
       */
      public Builder clearModuleExpression() {
        moduleExpression_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression module_expression = 8;</code>
       */
      public Builder removeModuleExpression(int index) {
        ensureModuleExpressionIsMutable();
        moduleExpression_.remove(index);

        return this;
      }

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule> inlineModule_ =
        java.util.Collections.emptyList();
      private void ensureInlineModuleIsMutable() {
        if (!((bitField0_ & 0x00000100) == 0x00000100)) {
          inlineModule_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule>(inlineModule_);
          bitField0_ |= 0x00000100;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlineModule inline_module = 9;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule> getInlineModuleList() {
        return java.util.Collections.unmodifiableList(inlineModule_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlineModule inline_module = 9;</code>
       */
      public int getInlineModuleCount() {
        return inlineModule_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlineModule inline_module = 9;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule getInlineModule(int index) {
        return inlineModule_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlineModule inline_module = 9;</code>
       */
      public Builder setInlineModule(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureInlineModuleIsMutable();
        inlineModule_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlineModule inline_module = 9;</code>
       */
      public Builder setInlineModule(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule.Builder builderForValue) {
        ensureInlineModuleIsMutable();
        inlineModule_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlineModule inline_module = 9;</code>
       */
      public Builder addInlineModule(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureInlineModuleIsMutable();
        inlineModule_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlineModule inline_module = 9;</code>
       */
      public Builder addInlineModule(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureInlineModuleIsMutable();
        inlineModule_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlineModule inline_module = 9;</code>
       */
      public Builder addInlineModule(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule.Builder builderForValue) {
        ensureInlineModuleIsMutable();
        inlineModule_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlineModule inline_module = 9;</code>
       */
      public Builder addInlineModule(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule.Builder builderForValue) {
        ensureInlineModuleIsMutable();
        inlineModule_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlineModule inline_module = 9;</code>
       */
      public Builder addAllInlineModule(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule> values) {
        ensureInlineModuleIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, inlineModule_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlineModule inline_module = 9;</code>
       */
      public Builder clearInlineModule() {
        inlineModule_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000100);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlineModule inline_module = 9;</code>
       */
      public Builder removeInlineModule(int index) {
        ensureInlineModuleIsMutable();
        inlineModule_.remove(index);

        return this;
      }

      private java.lang.Object packageFqn_ = "";
      /**
       * <code>optional string package_fqn = 10;</code>
       */
      public boolean hasPackageFqn() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <code>optional string package_fqn = 10;</code>
       */
      public java.lang.String getPackageFqn() {
        java.lang.Object ref = packageFqn_;
        if (!(ref instanceof java.lang.String)) {
          org.jetbrains.kotlin.protobuf.ByteString bs =
              (org.jetbrains.kotlin.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            packageFqn_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string package_fqn = 10;</code>
       */
      public org.jetbrains.kotlin.protobuf.ByteString
          getPackageFqnBytes() {
        java.lang.Object ref = packageFqn_;
        if (ref instanceof String) {
          org.jetbrains.kotlin.protobuf.ByteString b = 
              org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          packageFqn_ = b;
          return b;
        } else {
          return (org.jetbrains.kotlin.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string package_fqn = 10;</code>
       */
      public Builder setPackageFqn(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        packageFqn_ = value;
        
        return this;
      }
      /**
       * <code>optional string package_fqn = 10;</code>
       */
      public Builder clearPackageFqn() {
        bitField0_ = (bitField0_ & ~0x00000200);
        packageFqn_ = getDefaultInstance().getPackageFqn();
        
        return this;
      }
      /**
       * <code>optional string package_fqn = 10;</code>
       */
      public Builder setPackageFqnBytes(
          org.jetbrains.kotlin.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        packageFqn_ = value;
        
        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement testsInvocation_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement tests_invocation = 11;</code>
       */
      public boolean hasTestsInvocation() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement tests_invocation = 11;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getTestsInvocation() {
        return testsInvocation_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement tests_invocation = 11;</code>
       */
      public Builder setTestsInvocation(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        testsInvocation_ = value;

        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement tests_invocation = 11;</code>
       */
      public Builder setTestsInvocation(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        testsInvocation_ = builderForValue.build();

        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement tests_invocation = 11;</code>
       */
      public Builder mergeTestsInvocation(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (((bitField0_ & 0x00000400) == 0x00000400) &&
            testsInvocation_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance()) {
          testsInvocation_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.newBuilder(testsInvocation_).mergeFrom(value).buildPartial();
        } else {
          testsInvocation_ = value;
        }

        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement tests_invocation = 11;</code>
       */
      public Builder clearTestsInvocation() {
        testsInvocation_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement mainInvocation_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement main_invocation = 12;</code>
       */
      public boolean hasMainInvocation() {
        return ((bitField0_ & 0x00000800) == 0x00000800);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement main_invocation = 12;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement getMainInvocation() {
        return mainInvocation_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement main_invocation = 12;</code>
       */
      public Builder setMainInvocation(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        mainInvocation_ = value;

        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement main_invocation = 12;</code>
       */
      public Builder setMainInvocation(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.Builder builderForValue) {
        mainInvocation_ = builderForValue.build();

        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement main_invocation = 12;</code>
       */
      public Builder mergeMainInvocation(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement value) {
        if (((bitField0_ & 0x00000800) == 0x00000800) &&
            mainInvocation_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance()) {
          mainInvocation_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.newBuilder(mainInvocation_).mergeFrom(value).buildPartial();
        } else {
          mainInvocation_ = value;
        }

        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Statement main_invocation = 12;</code>
       */
      public Builder clearMainInvocation() {
        mainInvocation_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.getDefaultInstance();

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

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations> inlinedLocalDeclarations_ =
        java.util.Collections.emptyList();
      private void ensureInlinedLocalDeclarationsIsMutable() {
        if (!((bitField0_ & 0x00001000) == 0x00001000)) {
          inlinedLocalDeclarations_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations>(inlinedLocalDeclarations_);
          bitField0_ |= 0x00001000;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations inlined_local_declarations = 13;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations> getInlinedLocalDeclarationsList() {
        return java.util.Collections.unmodifiableList(inlinedLocalDeclarations_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations inlined_local_declarations = 13;</code>
       */
      public int getInlinedLocalDeclarationsCount() {
        return inlinedLocalDeclarations_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations inlined_local_declarations = 13;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations getInlinedLocalDeclarations(int index) {
        return inlinedLocalDeclarations_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations inlined_local_declarations = 13;</code>
       */
      public Builder setInlinedLocalDeclarations(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureInlinedLocalDeclarationsIsMutable();
        inlinedLocalDeclarations_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations inlined_local_declarations = 13;</code>
       */
      public Builder setInlinedLocalDeclarations(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations.Builder builderForValue) {
        ensureInlinedLocalDeclarationsIsMutable();
        inlinedLocalDeclarations_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations inlined_local_declarations = 13;</code>
       */
      public Builder addInlinedLocalDeclarations(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureInlinedLocalDeclarationsIsMutable();
        inlinedLocalDeclarations_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations inlined_local_declarations = 13;</code>
       */
      public Builder addInlinedLocalDeclarations(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureInlinedLocalDeclarationsIsMutable();
        inlinedLocalDeclarations_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations inlined_local_declarations = 13;</code>
       */
      public Builder addInlinedLocalDeclarations(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations.Builder builderForValue) {
        ensureInlinedLocalDeclarationsIsMutable();
        inlinedLocalDeclarations_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations inlined_local_declarations = 13;</code>
       */
      public Builder addInlinedLocalDeclarations(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations.Builder builderForValue) {
        ensureInlinedLocalDeclarationsIsMutable();
        inlinedLocalDeclarations_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations inlined_local_declarations = 13;</code>
       */
      public Builder addAllInlinedLocalDeclarations(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations> values) {
        ensureInlinedLocalDeclarationsIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, inlinedLocalDeclarations_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations inlined_local_declarations = 13;</code>
       */
      public Builder clearInlinedLocalDeclarations() {
        inlinedLocalDeclarations_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00001000);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations inlined_local_declarations = 13;</code>
       */
      public Builder removeInlinedLocalDeclarations(int index) {
        ensureInlinedLocalDeclarationsIsMutable();
        inlinedLocalDeclarations_.remove(index);

        return this;
      }

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel> irClassModel_ =
        java.util.Collections.emptyList();
      private void ensureIrClassModelIsMutable() {
        if (!((bitField0_ & 0x00002000) == 0x00002000)) {
          irClassModel_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel>(irClassModel_);
          bitField0_ |= 0x00002000;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.IrClassModel ir_class_model = 14;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel> getIrClassModelList() {
        return java.util.Collections.unmodifiableList(irClassModel_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.IrClassModel ir_class_model = 14;</code>
       */
      public int getIrClassModelCount() {
        return irClassModel_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.IrClassModel ir_class_model = 14;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel getIrClassModel(int index) {
        return irClassModel_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.IrClassModel ir_class_model = 14;</code>
       */
      public Builder setIrClassModel(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureIrClassModelIsMutable();
        irClassModel_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.IrClassModel ir_class_model = 14;</code>
       */
      public Builder setIrClassModel(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel.Builder builderForValue) {
        ensureIrClassModelIsMutable();
        irClassModel_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.IrClassModel ir_class_model = 14;</code>
       */
      public Builder addIrClassModel(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureIrClassModelIsMutable();
        irClassModel_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.IrClassModel ir_class_model = 14;</code>
       */
      public Builder addIrClassModel(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureIrClassModelIsMutable();
        irClassModel_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.IrClassModel ir_class_model = 14;</code>
       */
      public Builder addIrClassModel(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel.Builder builderForValue) {
        ensureIrClassModelIsMutable();
        irClassModel_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.IrClassModel ir_class_model = 14;</code>
       */
      public Builder addIrClassModel(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel.Builder builderForValue) {
        ensureIrClassModelIsMutable();
        irClassModel_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.IrClassModel ir_class_model = 14;</code>
       */
      public Builder addAllIrClassModel(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel> values) {
        ensureIrClassModelIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, irClassModel_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.IrClassModel ir_class_model = 14;</code>
       */
      public Builder clearIrClassModel() {
        irClassModel_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00002000);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.IrClassModel ir_class_model = 14;</code>
       */
      public Builder removeIrClassModel(int index) {
        ensureIrClassModelIsMutable();
        irClassModel_.remove(index);

        return this;
      }

      private java.lang.Object dts_ = "";
      /**
       * <code>optional string dts = 15;</code>
       */
      public boolean hasDts() {
        return ((bitField0_ & 0x00004000) == 0x00004000);
      }
      /**
       * <code>optional string dts = 15;</code>
       */
      public java.lang.String getDts() {
        java.lang.Object ref = dts_;
        if (!(ref instanceof java.lang.String)) {
          org.jetbrains.kotlin.protobuf.ByteString bs =
              (org.jetbrains.kotlin.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            dts_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string dts = 15;</code>
       */
      public org.jetbrains.kotlin.protobuf.ByteString
          getDtsBytes() {
        java.lang.Object ref = dts_;
        if (ref instanceof String) {
          org.jetbrains.kotlin.protobuf.ByteString b = 
              org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          dts_ = b;
          return b;
        } else {
          return (org.jetbrains.kotlin.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string dts = 15;</code>
       */
      public Builder setDts(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00004000;
        dts_ = value;
        
        return this;
      }
      /**
       * <code>optional string dts = 15;</code>
       */
      public Builder clearDts() {
        bitField0_ = (bitField0_ & ~0x00004000);
        dts_ = getDefaultInstance().getDts();
        
        return this;
      }
      /**
       * <code>optional string dts = 15;</code>
       */
      public Builder setDtsBytes(
          org.jetbrains.kotlin.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00004000;
        dts_ = value;
        
        return this;
      }

      private int suiteFunction_ ;
      /**
       * <code>optional int32 suite_function = 16;</code>
       */
      public boolean hasSuiteFunction() {
        return ((bitField0_ & 0x00008000) == 0x00008000);
      }
      /**
       * <code>optional int32 suite_function = 16;</code>
       */
      public int getSuiteFunction() {
        return suiteFunction_;
      }
      /**
       * <code>optional int32 suite_function = 16;</code>
       */
      public Builder setSuiteFunction(int value) {
        bitField0_ |= 0x00008000;
        suiteFunction_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 suite_function = 16;</code>
       */
      public Builder clearSuiteFunction() {
        bitField0_ = (bitField0_ & ~0x00008000);
        suiteFunction_ = 0;
        
        return this;
      }

      private java.util.List<java.lang.Integer> definitions_ = java.util.Collections.emptyList();
      private void ensureDefinitionsIsMutable() {
        if (!((bitField0_ & 0x00010000) == 0x00010000)) {
          definitions_ = new java.util.ArrayList<java.lang.Integer>(definitions_);
          bitField0_ |= 0x00010000;
         }
      }
      /**
       * <code>repeated int32 definitions = 17;</code>
       */
      public java.util.List<java.lang.Integer>
          getDefinitionsList() {
        return java.util.Collections.unmodifiableList(definitions_);
      }
      /**
       * <code>repeated int32 definitions = 17;</code>
       */
      public int getDefinitionsCount() {
        return definitions_.size();
      }
      /**
       * <code>repeated int32 definitions = 17;</code>
       */
      public int getDefinitions(int index) {
        return definitions_.get(index);
      }
      /**
       * <code>repeated int32 definitions = 17;</code>
       */
      public Builder setDefinitions(
          int index, int value) {
        ensureDefinitionsIsMutable();
        definitions_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated int32 definitions = 17;</code>
       */
      public Builder addDefinitions(int value) {
        ensureDefinitionsIsMutable();
        definitions_.add(value);
        
        return this;
      }
      /**
       * <code>repeated int32 definitions = 17;</code>
       */
      public Builder addAllDefinitions(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureDefinitionsIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, definitions_);
        
        return this;
      }
      /**
       * <code>repeated int32 definitions = 17;</code>
       */
      public Builder clearDefinitions() {
        definitions_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00010000);
        
        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock polyfills_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock polyfills = 18;</code>
       */
      public boolean hasPolyfills() {
        return ((bitField0_ & 0x00020000) == 0x00020000);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock polyfills = 18;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getPolyfills() {
        return polyfills_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock polyfills = 18;</code>
       */
      public Builder setPolyfills(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock value) {
        if (value == null) {
          throw new NullPointerException();
        }
        polyfills_ = value;

        bitField0_ |= 0x00020000;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock polyfills = 18;</code>
       */
      public Builder setPolyfills(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.Builder builderForValue) {
        polyfills_ = builderForValue.build();

        bitField0_ |= 0x00020000;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock polyfills = 18;</code>
       */
      public Builder mergePolyfills(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock value) {
        if (((bitField0_ & 0x00020000) == 0x00020000) &&
            polyfills_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance()) {
          polyfills_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.newBuilder(polyfills_).mergeFrom(value).buildPartial();
        } else {
          polyfills_ = value;
        }

        bitField0_ |= 0x00020000;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock polyfills = 18;</code>
       */
      public Builder clearPolyfills() {
        polyfills_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();

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

      private java.util.List<java.lang.Integer> optionalCrossModuleImports_ = java.util.Collections.emptyList();
      private void ensureOptionalCrossModuleImportsIsMutable() {
        if (!((bitField0_ & 0x00040000) == 0x00040000)) {
          optionalCrossModuleImports_ = new java.util.ArrayList<java.lang.Integer>(optionalCrossModuleImports_);
          bitField0_ |= 0x00040000;
         }
      }
      /**
       * <code>repeated int32 optionalCrossModuleImports = 19;</code>
       */
      public java.util.List<java.lang.Integer>
          getOptionalCrossModuleImportsList() {
        return java.util.Collections.unmodifiableList(optionalCrossModuleImports_);
      }
      /**
       * <code>repeated int32 optionalCrossModuleImports = 19;</code>
       */
      public int getOptionalCrossModuleImportsCount() {
        return optionalCrossModuleImports_.size();
      }
      /**
       * <code>repeated int32 optionalCrossModuleImports = 19;</code>
       */
      public int getOptionalCrossModuleImports(int index) {
        return optionalCrossModuleImports_.get(index);
      }
      /**
       * <code>repeated int32 optionalCrossModuleImports = 19;</code>
       */
      public Builder setOptionalCrossModuleImports(
          int index, int value) {
        ensureOptionalCrossModuleImportsIsMutable();
        optionalCrossModuleImports_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated int32 optionalCrossModuleImports = 19;</code>
       */
      public Builder addOptionalCrossModuleImports(int value) {
        ensureOptionalCrossModuleImportsIsMutable();
        optionalCrossModuleImports_.add(value);
        
        return this;
      }
      /**
       * <code>repeated int32 optionalCrossModuleImports = 19;</code>
       */
      public Builder addAllOptionalCrossModuleImports(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureOptionalCrossModuleImportsIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, optionalCrossModuleImports_);
        
        return this;
      }
      /**
       * <code>repeated int32 optionalCrossModuleImports = 19;</code>
       */
      public Builder clearOptionalCrossModuleImports() {
        optionalCrossModuleImports_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00040000);
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Fragment)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Fragment)
  }

  public interface InlinedLocalDeclarationsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required int32 tag = 1;</code>
     */
    boolean hasTag();
    /**
     * <code>required int32 tag = 1;</code>
     */
    int getTag();

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock block = 2;</code>
     */
    boolean hasBlock();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock block = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getBlock();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations}
   */
  public static final class InlinedLocalDeclarations extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations)
      InlinedLocalDeclarationsOrBuilder {
    // Use InlinedLocalDeclarations.newBuilder() to construct.
    private InlinedLocalDeclarations(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private InlinedLocalDeclarations(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public InlinedLocalDeclarations getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private InlinedLocalDeclarations(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              tag_ = input.readInt32();
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = block_.toBuilder();
              }
              block_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(block_);
                block_ = 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<InlinedLocalDeclarations> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<InlinedLocalDeclarations>() {
      public InlinedLocalDeclarations parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new InlinedLocalDeclarations(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int TAG_FIELD_NUMBER = 1;
    private int tag_;
    /**
     * <code>required int32 tag = 1;</code>
     */
    public boolean hasTag() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 tag = 1;</code>
     */
    public int getTag() {
      return tag_;
    }

    public static final int BLOCK_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock block_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock block = 2;</code>
     */
    public boolean hasBlock() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock block = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getBlock() {
      return block_;
    }

    private void initFields() {
      tag_ = 0;
      block_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTag()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasBlock()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getBlock().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, tag_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, block_);
      }
      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, tag_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, block_);
      }
      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.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations 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.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations 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.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations 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.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations 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.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations 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.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarationsOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        tag_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        block_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.tag_ = tag_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.block_ = block_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations.getDefaultInstance()) return this;
        if (other.hasTag()) {
          setTag(other.getTag());
        }
        if (other.hasBlock()) {
          mergeBlock(other.getBlock());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTag()) {
          
          return false;
        }
        if (!hasBlock()) {
          
          return false;
        }
        if (!getBlock().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.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlinedLocalDeclarations) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int tag_ ;
      /**
       * <code>required int32 tag = 1;</code>
       */
      public boolean hasTag() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 tag = 1;</code>
       */
      public int getTag() {
        return tag_;
      }
      /**
       * <code>required int32 tag = 1;</code>
       */
      public Builder setTag(int value) {
        bitField0_ |= 0x00000001;
        tag_ = value;
        
        return this;
      }
      /**
       * <code>required int32 tag = 1;</code>
       */
      public Builder clearTag() {
        bitField0_ = (bitField0_ & ~0x00000001);
        tag_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock block_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock block = 2;</code>
       */
      public boolean hasBlock() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock block = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getBlock() {
        return block_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock block = 2;</code>
       */
      public Builder setBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock value) {
        if (value == null) {
          throw new NullPointerException();
        }
        block_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock block = 2;</code>
       */
      public Builder setBlock(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.Builder builderForValue) {
        block_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock block = 2;</code>
       */
      public Builder mergeBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            block_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance()) {
          block_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.newBuilder(block_).mergeFrom(value).buildPartial();
        } else {
          block_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock block = 2;</code>
       */
      public Builder clearBlock() {
        block_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.InlinedLocalDeclarations)
  }

  public interface ImportedModuleOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.ImportedModule)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required int32 external_name_id = 1;</code>
     */
    boolean hasExternalNameId();
    /**
     * <code>required int32 external_name_id = 1;</code>
     */
    int getExternalNameId();

    /**
     * <code>required int32 internal_name_id = 2;</code>
     */
    boolean hasInternalNameId();
    /**
     * <code>required int32 internal_name_id = 2;</code>
     */
    int getInternalNameId();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression plain_reference = 3;</code>
     */
    boolean hasPlainReference();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression plain_reference = 3;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getPlainReference();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.ImportedModule}
   */
  public static final class ImportedModule extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.ImportedModule)
      ImportedModuleOrBuilder {
    // Use ImportedModule.newBuilder() to construct.
    private ImportedModule(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ImportedModule(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public ImportedModule getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private ImportedModule(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              externalNameId_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              internalNameId_ = input.readInt32();
              break;
            }
            case 26: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = plainReference_.toBuilder();
              }
              plainReference_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(plainReference_);
                plainReference_ = 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<ImportedModule> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<ImportedModule>() {
      public ImportedModule parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new ImportedModule(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int EXTERNAL_NAME_ID_FIELD_NUMBER = 1;
    private int externalNameId_;
    /**
     * <code>required int32 external_name_id = 1;</code>
     */
    public boolean hasExternalNameId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 external_name_id = 1;</code>
     */
    public int getExternalNameId() {
      return externalNameId_;
    }

    public static final int INTERNAL_NAME_ID_FIELD_NUMBER = 2;
    private int internalNameId_;
    /**
     * <code>required int32 internal_name_id = 2;</code>
     */
    public boolean hasInternalNameId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 internal_name_id = 2;</code>
     */
    public int getInternalNameId() {
      return internalNameId_;
    }

    public static final int PLAIN_REFERENCE_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression plainReference_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression plain_reference = 3;</code>
     */
    public boolean hasPlainReference() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression plain_reference = 3;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getPlainReference() {
      return plainReference_;
    }

    private void initFields() {
      externalNameId_ = 0;
      internalNameId_ = 0;
      plainReference_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasExternalNameId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasInternalNameId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasPlainReference()) {
        if (!getPlainReference().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, externalNameId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, internalNameId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, plainReference_);
      }
      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, externalNameId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(2, internalNameId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, plainReference_);
      }
      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.serialization.js.ast.JsAstProtoBuf.ImportedModule parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule 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.serialization.js.ast.JsAstProtoBuf.ImportedModule parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule 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.serialization.js.ast.JsAstProtoBuf.ImportedModule parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule 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.serialization.js.ast.JsAstProtoBuf.ImportedModule parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule 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.serialization.js.ast.JsAstProtoBuf.ImportedModule parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule 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.serialization.js.ast.JsAstProtoBuf.ImportedModule prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.ImportedModule}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.ImportedModule)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModuleOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        externalNameId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        internalNameId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        plainReference_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.externalNameId_ = externalNameId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.internalNameId_ = internalNameId_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.plainReference_ = plainReference_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule.getDefaultInstance()) return this;
        if (other.hasExternalNameId()) {
          setExternalNameId(other.getExternalNameId());
        }
        if (other.hasInternalNameId()) {
          setInternalNameId(other.getInternalNameId());
        }
        if (other.hasPlainReference()) {
          mergePlainReference(other.getPlainReference());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasExternalNameId()) {
          
          return false;
        }
        if (!hasInternalNameId()) {
          
          return false;
        }
        if (hasPlainReference()) {
          if (!getPlainReference().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.serialization.js.ast.JsAstProtoBuf.ImportedModule parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportedModule) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int externalNameId_ ;
      /**
       * <code>required int32 external_name_id = 1;</code>
       */
      public boolean hasExternalNameId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 external_name_id = 1;</code>
       */
      public int getExternalNameId() {
        return externalNameId_;
      }
      /**
       * <code>required int32 external_name_id = 1;</code>
       */
      public Builder setExternalNameId(int value) {
        bitField0_ |= 0x00000001;
        externalNameId_ = value;
        
        return this;
      }
      /**
       * <code>required int32 external_name_id = 1;</code>
       */
      public Builder clearExternalNameId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        externalNameId_ = 0;
        
        return this;
      }

      private int internalNameId_ ;
      /**
       * <code>required int32 internal_name_id = 2;</code>
       */
      public boolean hasInternalNameId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 internal_name_id = 2;</code>
       */
      public int getInternalNameId() {
        return internalNameId_;
      }
      /**
       * <code>required int32 internal_name_id = 2;</code>
       */
      public Builder setInternalNameId(int value) {
        bitField0_ |= 0x00000002;
        internalNameId_ = value;
        
        return this;
      }
      /**
       * <code>required int32 internal_name_id = 2;</code>
       */
      public Builder clearInternalNameId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        internalNameId_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression plainReference_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression plain_reference = 3;</code>
       */
      public boolean hasPlainReference() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression plain_reference = 3;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getPlainReference() {
        return plainReference_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression plain_reference = 3;</code>
       */
      public Builder setPlainReference(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        plainReference_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression plain_reference = 3;</code>
       */
      public Builder setPlainReference(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        plainReference_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression plain_reference = 3;</code>
       */
      public Builder mergePlainReference(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            plainReference_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          plainReference_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(plainReference_).mergeFrom(value).buildPartial();
        } else {
          plainReference_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression plain_reference = 3;</code>
       */
      public Builder clearPlainReference() {
        plainReference_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.ImportedModule)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.ImportedModule)
  }

  public interface ImportOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Import)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required int32 signature_id = 1;</code>
     */
    boolean hasSignatureId();
    /**
     * <code>required int32 signature_id = 1;</code>
     */
    int getSignatureId();

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
     */
    boolean hasExpression();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getExpression();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Import}
   */
  public static final class Import extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Import)
      ImportOrBuilder {
    // Use Import.newBuilder() to construct.
    private Import(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Import(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Import getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Import(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              signatureId_ = input.readInt32();
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = expression_.toBuilder();
              }
              expression_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(expression_);
                expression_ = 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<Import> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Import>() {
      public Import parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Import(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int SIGNATURE_ID_FIELD_NUMBER = 1;
    private int signatureId_;
    /**
     * <code>required int32 signature_id = 1;</code>
     */
    public boolean hasSignatureId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 signature_id = 1;</code>
     */
    public int getSignatureId() {
      return signatureId_;
    }

    public static final int EXPRESSION_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression expression_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
     */
    public boolean hasExpression() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getExpression() {
      return expression_;
    }

    private void initFields() {
      signatureId_ = 0;
      expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasSignatureId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasExpression()) {
        memoizedIsInitialized = 0;
        return false;
      }
      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.writeInt32(1, signatureId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, 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
          .computeInt32Size(1, signatureId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, 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.serialization.js.ast.JsAstProtoBuf.Import parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import 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.serialization.js.ast.JsAstProtoBuf.Import parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import 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.serialization.js.ast.JsAstProtoBuf.Import parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import 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.serialization.js.ast.JsAstProtoBuf.Import parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import 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.serialization.js.ast.JsAstProtoBuf.Import parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import 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.serialization.js.ast.JsAstProtoBuf.Import prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Import}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Import)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ImportOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        signatureId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.signatureId_ = signatureId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.expression_ = expression_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import.getDefaultInstance()) return this;
        if (other.hasSignatureId()) {
          setSignatureId(other.getSignatureId());
        }
        if (other.hasExpression()) {
          mergeExpression(other.getExpression());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSignatureId()) {
          
          return false;
        }
        if (!hasExpression()) {
          
          return false;
        }
        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.serialization.js.ast.JsAstProtoBuf.Import parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Import) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int signatureId_ ;
      /**
       * <code>required int32 signature_id = 1;</code>
       */
      public boolean hasSignatureId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 signature_id = 1;</code>
       */
      public int getSignatureId() {
        return signatureId_;
      }
      /**
       * <code>required int32 signature_id = 1;</code>
       */
      public Builder setSignatureId(int value) {
        bitField0_ |= 0x00000001;
        signatureId_ = value;
        
        return this;
      }
      /**
       * <code>required int32 signature_id = 1;</code>
       */
      public Builder clearSignatureId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        signatureId_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
       */
      public boolean hasExpression() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getExpression() {
        return expression_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
       */
      public Builder setExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        expression_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
       */
      public Builder setExpression(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.Builder builderForValue) {
        expression_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
       */
      public Builder mergeExpression(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            expression_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance()) {
          expression_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.newBuilder(expression_).mergeFrom(value).buildPartial();
        } else {
          expression_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Expression expression = 2;</code>
       */
      public Builder clearExpression() {
        expression_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Import)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Import)
  }

  public interface NameBindingOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.NameBinding)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required int32 signature_id = 1;</code>
     */
    boolean hasSignatureId();
    /**
     * <code>required int32 signature_id = 1;</code>
     */
    int getSignatureId();

    /**
     * <code>required int32 nameId = 2;</code>
     */
    boolean hasNameId();
    /**
     * <code>required int32 nameId = 2;</code>
     */
    int getNameId();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.NameBinding}
   */
  public static final class NameBinding extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.NameBinding)
      NameBindingOrBuilder {
    // Use NameBinding.newBuilder() to construct.
    private NameBinding(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private NameBinding(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public NameBinding getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private NameBinding(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              signatureId_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              nameId_ = 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<NameBinding> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<NameBinding>() {
      public NameBinding parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new NameBinding(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int SIGNATURE_ID_FIELD_NUMBER = 1;
    private int signatureId_;
    /**
     * <code>required int32 signature_id = 1;</code>
     */
    public boolean hasSignatureId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 signature_id = 1;</code>
     */
    public int getSignatureId() {
      return signatureId_;
    }

    public static final int NAMEID_FIELD_NUMBER = 2;
    private int nameId_;
    /**
     * <code>required int32 nameId = 2;</code>
     */
    public boolean hasNameId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 nameId = 2;</code>
     */
    public int getNameId() {
      return nameId_;
    }

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

      if (!hasSignatureId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasNameId()) {
        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, signatureId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, nameId_);
      }
      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, signatureId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(2, nameId_);
      }
      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.serialization.js.ast.JsAstProtoBuf.NameBinding parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding 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.serialization.js.ast.JsAstProtoBuf.NameBinding parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding 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.serialization.js.ast.JsAstProtoBuf.NameBinding parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding 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.serialization.js.ast.JsAstProtoBuf.NameBinding parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding 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.serialization.js.ast.JsAstProtoBuf.NameBinding parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding 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.serialization.js.ast.JsAstProtoBuf.NameBinding prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.NameBinding}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.NameBinding)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBindingOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

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

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.signatureId_ = signatureId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.nameId_ = nameId_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding.getDefaultInstance()) return this;
        if (other.hasSignatureId()) {
          setSignatureId(other.getSignatureId());
        }
        if (other.hasNameId()) {
          setNameId(other.getNameId());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSignatureId()) {
          
          return false;
        }
        if (!hasNameId()) {
          
          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.serialization.js.ast.JsAstProtoBuf.NameBinding parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameBinding) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int signatureId_ ;
      /**
       * <code>required int32 signature_id = 1;</code>
       */
      public boolean hasSignatureId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 signature_id = 1;</code>
       */
      public int getSignatureId() {
        return signatureId_;
      }
      /**
       * <code>required int32 signature_id = 1;</code>
       */
      public Builder setSignatureId(int value) {
        bitField0_ |= 0x00000001;
        signatureId_ = value;
        
        return this;
      }
      /**
       * <code>required int32 signature_id = 1;</code>
       */
      public Builder clearSignatureId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        signatureId_ = 0;
        
        return this;
      }

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.NameBinding)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.NameBinding)
  }

  public interface ClassModelOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.ClassModel)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

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

    /**
     * <code>optional int32 super_name_id = 2;</code>
     */
    boolean hasSuperNameId();
    /**
     * <code>optional int32 super_name_id = 2;</code>
     */
    int getSuperNameId();

    /**
     * <code>repeated int32 interface_name_id = 4;</code>
     */
    java.util.List<java.lang.Integer> getInterfaceNameIdList();
    /**
     * <code>repeated int32 interface_name_id = 4;</code>
     */
    int getInterfaceNameIdCount();
    /**
     * <code>repeated int32 interface_name_id = 4;</code>
     */
    int getInterfaceNameId(int index);

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock post_declaration_block = 3;</code>
     */
    boolean hasPostDeclarationBlock();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock post_declaration_block = 3;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getPostDeclarationBlock();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.ClassModel}
   */
  public static final class ClassModel extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.ClassModel)
      ClassModelOrBuilder {
    // Use ClassModel.newBuilder() to construct.
    private ClassModel(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ClassModel(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public ClassModel getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private ClassModel(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              nameId_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              superNameId_ = input.readInt32();
              break;
            }
            case 26: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = postDeclarationBlock_.toBuilder();
              }
              postDeclarationBlock_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(postDeclarationBlock_);
                postDeclarationBlock_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 32: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                interfaceNameId_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              interfaceNameId_.add(input.readInt32());
              break;
            }
            case 34: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                interfaceNameId_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              while (input.getBytesUntilLimit() > 0) {
                interfaceNameId_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
          }
        }
      } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          interfaceNameId_ = java.util.Collections.unmodifiableList(interfaceNameId_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<ClassModel> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<ClassModel>() {
      public ClassModel parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new ClassModel(input, extensionRegistry);
      }
    };

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

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

    public static final int SUPER_NAME_ID_FIELD_NUMBER = 2;
    private int superNameId_;
    /**
     * <code>optional int32 super_name_id = 2;</code>
     */
    public boolean hasSuperNameId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int32 super_name_id = 2;</code>
     */
    public int getSuperNameId() {
      return superNameId_;
    }

    public static final int INTERFACE_NAME_ID_FIELD_NUMBER = 4;
    private java.util.List<java.lang.Integer> interfaceNameId_;
    /**
     * <code>repeated int32 interface_name_id = 4;</code>
     */
    public java.util.List<java.lang.Integer>
        getInterfaceNameIdList() {
      return interfaceNameId_;
    }
    /**
     * <code>repeated int32 interface_name_id = 4;</code>
     */
    public int getInterfaceNameIdCount() {
      return interfaceNameId_.size();
    }
    /**
     * <code>repeated int32 interface_name_id = 4;</code>
     */
    public int getInterfaceNameId(int index) {
      return interfaceNameId_.get(index);
    }

    public static final int POST_DECLARATION_BLOCK_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock postDeclarationBlock_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock post_declaration_block = 3;</code>
     */
    public boolean hasPostDeclarationBlock() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock post_declaration_block = 3;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getPostDeclarationBlock() {
      return postDeclarationBlock_;
    }

    private void initFields() {
      nameId_ = 0;
      superNameId_ = 0;
      interfaceNameId_ = java.util.Collections.emptyList();
      postDeclarationBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

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

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, nameId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(2, superNameId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, postDeclarationBlock_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < interfaceNameId_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(interfaceNameId_.get(i));
        }
        size += dataSize;
        size += 1 * getInterfaceNameIdList().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.serialization.js.ast.JsAstProtoBuf.ClassModel parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel 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.serialization.js.ast.JsAstProtoBuf.ClassModel parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel 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.serialization.js.ast.JsAstProtoBuf.ClassModel parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel 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.serialization.js.ast.JsAstProtoBuf.ClassModel parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel 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.serialization.js.ast.JsAstProtoBuf.ClassModel parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel 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.serialization.js.ast.JsAstProtoBuf.ClassModel prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.ClassModel}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.ClassModel)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModelOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        nameId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        superNameId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        interfaceNameId_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        postDeclarationBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.nameId_ = nameId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.superNameId_ = superNameId_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          interfaceNameId_ = java.util.Collections.unmodifiableList(interfaceNameId_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.interfaceNameId_ = interfaceNameId_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        result.postDeclarationBlock_ = postDeclarationBlock_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel.getDefaultInstance()) return this;
        if (other.hasNameId()) {
          setNameId(other.getNameId());
        }
        if (other.hasSuperNameId()) {
          setSuperNameId(other.getSuperNameId());
        }
        if (!other.interfaceNameId_.isEmpty()) {
          if (interfaceNameId_.isEmpty()) {
            interfaceNameId_ = other.interfaceNameId_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureInterfaceNameIdIsMutable();
            interfaceNameId_.addAll(other.interfaceNameId_);
          }
          
        }
        if (other.hasPostDeclarationBlock()) {
          mergePostDeclarationBlock(other.getPostDeclarationBlock());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasNameId()) {
          
          return false;
        }
        if (hasPostDeclarationBlock()) {
          if (!getPostDeclarationBlock().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.serialization.js.ast.JsAstProtoBuf.ClassModel parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ClassModel) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

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

      private int superNameId_ ;
      /**
       * <code>optional int32 super_name_id = 2;</code>
       */
      public boolean hasSuperNameId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int32 super_name_id = 2;</code>
       */
      public int getSuperNameId() {
        return superNameId_;
      }
      /**
       * <code>optional int32 super_name_id = 2;</code>
       */
      public Builder setSuperNameId(int value) {
        bitField0_ |= 0x00000002;
        superNameId_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 super_name_id = 2;</code>
       */
      public Builder clearSuperNameId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        superNameId_ = 0;
        
        return this;
      }

      private java.util.List<java.lang.Integer> interfaceNameId_ = java.util.Collections.emptyList();
      private void ensureInterfaceNameIdIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          interfaceNameId_ = new java.util.ArrayList<java.lang.Integer>(interfaceNameId_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated int32 interface_name_id = 4;</code>
       */
      public java.util.List<java.lang.Integer>
          getInterfaceNameIdList() {
        return java.util.Collections.unmodifiableList(interfaceNameId_);
      }
      /**
       * <code>repeated int32 interface_name_id = 4;</code>
       */
      public int getInterfaceNameIdCount() {
        return interfaceNameId_.size();
      }
      /**
       * <code>repeated int32 interface_name_id = 4;</code>
       */
      public int getInterfaceNameId(int index) {
        return interfaceNameId_.get(index);
      }
      /**
       * <code>repeated int32 interface_name_id = 4;</code>
       */
      public Builder setInterfaceNameId(
          int index, int value) {
        ensureInterfaceNameIdIsMutable();
        interfaceNameId_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated int32 interface_name_id = 4;</code>
       */
      public Builder addInterfaceNameId(int value) {
        ensureInterfaceNameIdIsMutable();
        interfaceNameId_.add(value);
        
        return this;
      }
      /**
       * <code>repeated int32 interface_name_id = 4;</code>
       */
      public Builder addAllInterfaceNameId(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureInterfaceNameIdIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, interfaceNameId_);
        
        return this;
      }
      /**
       * <code>repeated int32 interface_name_id = 4;</code>
       */
      public Builder clearInterfaceNameId() {
        interfaceNameId_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        
        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock postDeclarationBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock post_declaration_block = 3;</code>
       */
      public boolean hasPostDeclarationBlock() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock post_declaration_block = 3;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getPostDeclarationBlock() {
        return postDeclarationBlock_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock post_declaration_block = 3;</code>
       */
      public Builder setPostDeclarationBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock value) {
        if (value == null) {
          throw new NullPointerException();
        }
        postDeclarationBlock_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock post_declaration_block = 3;</code>
       */
      public Builder setPostDeclarationBlock(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.Builder builderForValue) {
        postDeclarationBlock_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock post_declaration_block = 3;</code>
       */
      public Builder mergePostDeclarationBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            postDeclarationBlock_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance()) {
          postDeclarationBlock_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.newBuilder(postDeclarationBlock_).mergeFrom(value).buildPartial();
        } else {
          postDeclarationBlock_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock post_declaration_block = 3;</code>
       */
      public Builder clearPostDeclarationBlock() {
        postDeclarationBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.ClassModel)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.ClassModel)
  }

  public interface IrClassModelOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.IrClassModel)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

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

    /**
     * <code>repeated int32 super_classes = 2;</code>
     */
    java.util.List<java.lang.Integer> getSuperClassesList();
    /**
     * <code>repeated int32 super_classes = 2;</code>
     */
    int getSuperClassesCount();
    /**
     * <code>repeated int32 super_classes = 2;</code>
     */
    int getSuperClasses(int index);

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock pre_declaration_block = 3;</code>
     */
    boolean hasPreDeclarationBlock();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock pre_declaration_block = 3;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getPreDeclarationBlock();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock post_declaration_block = 4;</code>
     */
    boolean hasPostDeclarationBlock();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock post_declaration_block = 4;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getPostDeclarationBlock();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.IrClassModel}
   */
  public static final class IrClassModel extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.IrClassModel)
      IrClassModelOrBuilder {
    // Use IrClassModel.newBuilder() to construct.
    private IrClassModel(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IrClassModel(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public IrClassModel getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private IrClassModel(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              nameId_ = input.readInt32();
              break;
            }
            case 16: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                superClasses_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000002;
              }
              superClasses_.add(input.readInt32());
              break;
            }
            case 18: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                superClasses_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000002;
              }
              while (input.getBytesUntilLimit() > 0) {
                superClasses_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 26: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = preDeclarationBlock_.toBuilder();
              }
              preDeclarationBlock_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(preDeclarationBlock_);
                preDeclarationBlock_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 34: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = postDeclarationBlock_.toBuilder();
              }
              postDeclarationBlock_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(postDeclarationBlock_);
                postDeclarationBlock_ = 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_ & 0x00000002) == 0x00000002)) {
          superClasses_ = java.util.Collections.unmodifiableList(superClasses_);
        }
        try {
          unknownFieldsCodedOutput.flush();
        } catch (java.io.IOException e) {
        // Should not happen
        } finally {
          unknownFields = unknownFieldsOutput.toByteString();
        }
        makeExtensionsImmutable();
      }
    }
    public static org.jetbrains.kotlin.protobuf.Parser<IrClassModel> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<IrClassModel>() {
      public IrClassModel parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new IrClassModel(input, extensionRegistry);
      }
    };

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

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

    public static final int SUPER_CLASSES_FIELD_NUMBER = 2;
    private java.util.List<java.lang.Integer> superClasses_;
    /**
     * <code>repeated int32 super_classes = 2;</code>
     */
    public java.util.List<java.lang.Integer>
        getSuperClassesList() {
      return superClasses_;
    }
    /**
     * <code>repeated int32 super_classes = 2;</code>
     */
    public int getSuperClassesCount() {
      return superClasses_.size();
    }
    /**
     * <code>repeated int32 super_classes = 2;</code>
     */
    public int getSuperClasses(int index) {
      return superClasses_.get(index);
    }

    public static final int PRE_DECLARATION_BLOCK_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock preDeclarationBlock_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock pre_declaration_block = 3;</code>
     */
    public boolean hasPreDeclarationBlock() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock pre_declaration_block = 3;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getPreDeclarationBlock() {
      return preDeclarationBlock_;
    }

    public static final int POST_DECLARATION_BLOCK_FIELD_NUMBER = 4;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock postDeclarationBlock_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock post_declaration_block = 4;</code>
     */
    public boolean hasPostDeclarationBlock() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock post_declaration_block = 4;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getPostDeclarationBlock() {
      return postDeclarationBlock_;
    }

    private void initFields() {
      nameId_ = 0;
      superClasses_ = java.util.Collections.emptyList();
      preDeclarationBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
      postDeclarationBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasNameId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasPreDeclarationBlock()) {
        if (!getPreDeclarationBlock().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasPostDeclarationBlock()) {
        if (!getPostDeclarationBlock().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(1, nameId_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < superClasses_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(superClasses_.get(i));
        }
        size += dataSize;
        size += 1 * getSuperClassesList().size();
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, preDeclarationBlock_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(4, postDeclarationBlock_);
      }
      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.serialization.js.ast.JsAstProtoBuf.IrClassModel parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel 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.serialization.js.ast.JsAstProtoBuf.IrClassModel parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel 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.serialization.js.ast.JsAstProtoBuf.IrClassModel parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel 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.serialization.js.ast.JsAstProtoBuf.IrClassModel parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel 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.serialization.js.ast.JsAstProtoBuf.IrClassModel parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel 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.serialization.js.ast.JsAstProtoBuf.IrClassModel prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.IrClassModel}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.IrClassModel)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModelOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        nameId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        superClasses_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        preDeclarationBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        postDeclarationBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.nameId_ = nameId_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          superClasses_ = java.util.Collections.unmodifiableList(superClasses_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.superClasses_ = superClasses_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        result.preDeclarationBlock_ = preDeclarationBlock_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        result.postDeclarationBlock_ = postDeclarationBlock_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel.getDefaultInstance()) return this;
        if (other.hasNameId()) {
          setNameId(other.getNameId());
        }
        if (!other.superClasses_.isEmpty()) {
          if (superClasses_.isEmpty()) {
            superClasses_ = other.superClasses_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureSuperClassesIsMutable();
            superClasses_.addAll(other.superClasses_);
          }
          
        }
        if (other.hasPreDeclarationBlock()) {
          mergePreDeclarationBlock(other.getPreDeclarationBlock());
        }
        if (other.hasPostDeclarationBlock()) {
          mergePostDeclarationBlock(other.getPostDeclarationBlock());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasNameId()) {
          
          return false;
        }
        if (hasPreDeclarationBlock()) {
          if (!getPreDeclarationBlock().isInitialized()) {
            
            return false;
          }
        }
        if (hasPostDeclarationBlock()) {
          if (!getPostDeclarationBlock().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.serialization.js.ast.JsAstProtoBuf.IrClassModel parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.IrClassModel) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

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

      private java.util.List<java.lang.Integer> superClasses_ = java.util.Collections.emptyList();
      private void ensureSuperClassesIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          superClasses_ = new java.util.ArrayList<java.lang.Integer>(superClasses_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated int32 super_classes = 2;</code>
       */
      public java.util.List<java.lang.Integer>
          getSuperClassesList() {
        return java.util.Collections.unmodifiableList(superClasses_);
      }
      /**
       * <code>repeated int32 super_classes = 2;</code>
       */
      public int getSuperClassesCount() {
        return superClasses_.size();
      }
      /**
       * <code>repeated int32 super_classes = 2;</code>
       */
      public int getSuperClasses(int index) {
        return superClasses_.get(index);
      }
      /**
       * <code>repeated int32 super_classes = 2;</code>
       */
      public Builder setSuperClasses(
          int index, int value) {
        ensureSuperClassesIsMutable();
        superClasses_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated int32 super_classes = 2;</code>
       */
      public Builder addSuperClasses(int value) {
        ensureSuperClassesIsMutable();
        superClasses_.add(value);
        
        return this;
      }
      /**
       * <code>repeated int32 super_classes = 2;</code>
       */
      public Builder addAllSuperClasses(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureSuperClassesIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, superClasses_);
        
        return this;
      }
      /**
       * <code>repeated int32 super_classes = 2;</code>
       */
      public Builder clearSuperClasses() {
        superClasses_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        
        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock preDeclarationBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock pre_declaration_block = 3;</code>
       */
      public boolean hasPreDeclarationBlock() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock pre_declaration_block = 3;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getPreDeclarationBlock() {
        return preDeclarationBlock_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock pre_declaration_block = 3;</code>
       */
      public Builder setPreDeclarationBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock value) {
        if (value == null) {
          throw new NullPointerException();
        }
        preDeclarationBlock_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock pre_declaration_block = 3;</code>
       */
      public Builder setPreDeclarationBlock(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.Builder builderForValue) {
        preDeclarationBlock_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock pre_declaration_block = 3;</code>
       */
      public Builder mergePreDeclarationBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            preDeclarationBlock_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance()) {
          preDeclarationBlock_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.newBuilder(preDeclarationBlock_).mergeFrom(value).buildPartial();
        } else {
          preDeclarationBlock_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock pre_declaration_block = 3;</code>
       */
      public Builder clearPreDeclarationBlock() {
        preDeclarationBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock postDeclarationBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock post_declaration_block = 4;</code>
       */
      public boolean hasPostDeclarationBlock() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock post_declaration_block = 4;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock getPostDeclarationBlock() {
        return postDeclarationBlock_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock post_declaration_block = 4;</code>
       */
      public Builder setPostDeclarationBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock value) {
        if (value == null) {
          throw new NullPointerException();
        }
        postDeclarationBlock_ = value;

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock post_declaration_block = 4;</code>
       */
      public Builder setPostDeclarationBlock(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.Builder builderForValue) {
        postDeclarationBlock_ = builderForValue.build();

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock post_declaration_block = 4;</code>
       */
      public Builder mergePostDeclarationBlock(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock value) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            postDeclarationBlock_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance()) {
          postDeclarationBlock_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.newBuilder(postDeclarationBlock_).mergeFrom(value).buildPartial();
        } else {
          postDeclarationBlock_ = value;
        }

        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.CompositeBlock post_declaration_block = 4;</code>
       */
      public Builder clearPostDeclarationBlock() {
        postDeclarationBlock_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.CompositeBlock.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.IrClassModel)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.IrClassModel)
  }

  public interface InlineModuleOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.InlineModule)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required int32 signature_id = 1;</code>
     */
    boolean hasSignatureId();
    /**
     * <code>required int32 signature_id = 1;</code>
     */
    int getSignatureId();

    /**
     * <code>required int32 expression_id = 2;</code>
     */
    boolean hasExpressionId();
    /**
     * <code>required int32 expression_id = 2;</code>
     */
    int getExpressionId();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.InlineModule}
   */
  public static final class InlineModule extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.InlineModule)
      InlineModuleOrBuilder {
    // Use InlineModule.newBuilder() to construct.
    private InlineModule(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private InlineModule(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public InlineModule getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private InlineModule(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              signatureId_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              expressionId_ = 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<InlineModule> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<InlineModule>() {
      public InlineModule parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new InlineModule(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int SIGNATURE_ID_FIELD_NUMBER = 1;
    private int signatureId_;
    /**
     * <code>required int32 signature_id = 1;</code>
     */
    public boolean hasSignatureId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 signature_id = 1;</code>
     */
    public int getSignatureId() {
      return signatureId_;
    }

    public static final int EXPRESSION_ID_FIELD_NUMBER = 2;
    private int expressionId_;
    /**
     * <code>required int32 expression_id = 2;</code>
     */
    public boolean hasExpressionId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 expression_id = 2;</code>
     */
    public int getExpressionId() {
      return expressionId_;
    }

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

      if (!hasSignatureId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasExpressionId()) {
        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, signatureId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, expressionId_);
      }
      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, signatureId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(2, expressionId_);
      }
      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.serialization.js.ast.JsAstProtoBuf.InlineModule parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule 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.serialization.js.ast.JsAstProtoBuf.InlineModule parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule 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.serialization.js.ast.JsAstProtoBuf.InlineModule parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule 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.serialization.js.ast.JsAstProtoBuf.InlineModule parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule 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.serialization.js.ast.JsAstProtoBuf.InlineModule parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule 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.serialization.js.ast.JsAstProtoBuf.InlineModule prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.InlineModule}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.InlineModule)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModuleOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

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

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.signatureId_ = signatureId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.expressionId_ = expressionId_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule.getDefaultInstance()) return this;
        if (other.hasSignatureId()) {
          setSignatureId(other.getSignatureId());
        }
        if (other.hasExpressionId()) {
          setExpressionId(other.getExpressionId());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSignatureId()) {
          
          return false;
        }
        if (!hasExpressionId()) {
          
          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.serialization.js.ast.JsAstProtoBuf.InlineModule parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineModule) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int signatureId_ ;
      /**
       * <code>required int32 signature_id = 1;</code>
       */
      public boolean hasSignatureId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 signature_id = 1;</code>
       */
      public int getSignatureId() {
        return signatureId_;
      }
      /**
       * <code>required int32 signature_id = 1;</code>
       */
      public Builder setSignatureId(int value) {
        bitField0_ |= 0x00000001;
        signatureId_ = value;
        
        return this;
      }
      /**
       * <code>required int32 signature_id = 1;</code>
       */
      public Builder clearSignatureId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        signatureId_ = 0;
        
        return this;
      }

      private int expressionId_ ;
      /**
       * <code>required int32 expression_id = 2;</code>
       */
      public boolean hasExpressionId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 expression_id = 2;</code>
       */
      public int getExpressionId() {
        return expressionId_;
      }
      /**
       * <code>required int32 expression_id = 2;</code>
       */
      public Builder setExpressionId(int value) {
        bitField0_ |= 0x00000002;
        expressionId_ = value;
        
        return this;
      }
      /**
       * <code>required int32 expression_id = 2;</code>
       */
      public Builder clearExpressionId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        expressionId_ = 0;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.InlineModule)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.InlineModule)
  }

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

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

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

    public StringTable getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private StringTable(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                entry_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              entry_.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)) {
          entry_ = entry_.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 ENTRY_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.protobuf.LazyStringList entry_;
    /**
     * <code>repeated string entry = 1;</code>
     */
    public org.jetbrains.kotlin.protobuf.ProtocolStringList
        getEntryList() {
      return entry_;
    }
    /**
     * <code>repeated string entry = 1;</code>
     */
    public int getEntryCount() {
      return entry_.size();
    }
    /**
     * <code>repeated string entry = 1;</code>
     */
    public java.lang.String getEntry(int index) {
      return entry_.get(index);
    }
    /**
     * <code>repeated string entry = 1;</code>
     */
    public org.jetbrains.kotlin.protobuf.ByteString
        getEntryBytes(int index) {
      return entry_.getByteString(index);
    }

    private void initFields() {
      entry_ = 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 < entry_.size(); i++) {
        output.writeBytes(1, entry_.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 < entry_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(entry_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getEntryList().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.serialization.js.ast.JsAstProtoBuf.StringTable parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.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.serialization.js.ast.JsAstProtoBuf.StringTable parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.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.serialization.js.ast.JsAstProtoBuf.StringTable parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.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.serialization.js.ast.JsAstProtoBuf.StringTable parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.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.serialization.js.ast.JsAstProtoBuf.StringTable parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.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.serialization.js.ast.JsAstProtoBuf.StringTable prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

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

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

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

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable.getDefaultInstance();
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          entry_ = entry_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.entry_ = entry_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable.getDefaultInstance()) return this;
        if (!other.entry_.isEmpty()) {
          if (entry_.isEmpty()) {
            entry_ = other.entry_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureEntryIsMutable();
            entry_.addAll(other.entry_);
          }
          
        }
        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.serialization.js.ast.JsAstProtoBuf.StringTable parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.protobuf.LazyStringList entry_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
      private void ensureEntryIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          entry_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(entry_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string entry = 1;</code>
       */
      public org.jetbrains.kotlin.protobuf.ProtocolStringList
          getEntryList() {
        return entry_.getUnmodifiableView();
      }
      /**
       * <code>repeated string entry = 1;</code>
       */
      public int getEntryCount() {
        return entry_.size();
      }
      /**
       * <code>repeated string entry = 1;</code>
       */
      public java.lang.String getEntry(int index) {
        return entry_.get(index);
      }
      /**
       * <code>repeated string entry = 1;</code>
       */
      public org.jetbrains.kotlin.protobuf.ByteString
          getEntryBytes(int index) {
        return entry_.getByteString(index);
      }
      /**
       * <code>repeated string entry = 1;</code>
       */
      public Builder setEntry(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureEntryIsMutable();
        entry_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated string entry = 1;</code>
       */
      public Builder addEntry(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureEntryIsMutable();
        entry_.add(value);
        
        return this;
      }
      /**
       * <code>repeated string entry = 1;</code>
       */
      public Builder addAllEntry(
          java.lang.Iterable<java.lang.String> values) {
        ensureEntryIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, entry_);
        
        return this;
      }
      /**
       * <code>repeated string entry = 1;</code>
       */
      public Builder clearEntry() {
        entry_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        
        return this;
      }
      /**
       * <code>repeated string entry = 1;</code>
       */
      public Builder addEntryBytes(
          org.jetbrains.kotlin.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureEntryIsMutable();
        entry_.add(value);
        
        return this;
      }

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

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

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

  public interface NameTableOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.NameTable)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Name entry = 1;</code>
     */
    java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name> 
        getEntryList();
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Name entry = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name getEntry(int index);
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Name entry = 1;</code>
     */
    int getEntryCount();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.NameTable}
   */
  public static final class NameTable extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.NameTable)
      NameTableOrBuilder {
    // Use NameTable.newBuilder() to construct.
    private NameTable(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private NameTable(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public NameTable getDefaultInstanceForType() {
      return defaultInstance;
    }

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

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

    public static final int ENTRY_FIELD_NUMBER = 1;
    private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name> entry_;
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Name entry = 1;</code>
     */
    public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name> getEntryList() {
      return entry_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Name entry = 1;</code>
     */
    public java.util.List<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameOrBuilder> 
        getEntryOrBuilderList() {
      return entry_;
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Name entry = 1;</code>
     */
    public int getEntryCount() {
      return entry_.size();
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Name entry = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name getEntry(int index) {
      return entry_.get(index);
    }
    /**
     * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Name entry = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameOrBuilder getEntryOrBuilder(
        int index) {
      return entry_.get(index);
    }

    private void initFields() {
      entry_ = 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 < getEntryCount(); i++) {
        if (!getEntry(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 < entry_.size(); i++) {
        output.writeMessage(1, entry_.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 < entry_.size(); i++) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(1, entry_.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.serialization.js.ast.JsAstProtoBuf.NameTable parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable 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.serialization.js.ast.JsAstProtoBuf.NameTable parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable 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.serialization.js.ast.JsAstProtoBuf.NameTable parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable 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.serialization.js.ast.JsAstProtoBuf.NameTable parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable 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.serialization.js.ast.JsAstProtoBuf.NameTable parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable 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.serialization.js.ast.JsAstProtoBuf.NameTable prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.NameTable}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.NameTable)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTableOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

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

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          entry_ = java.util.Collections.unmodifiableList(entry_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.entry_ = entry_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable.getDefaultInstance()) return this;
        if (!other.entry_.isEmpty()) {
          if (entry_.isEmpty()) {
            entry_ = other.entry_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureEntryIsMutable();
            entry_.addAll(other.entry_);
          }
          
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getEntryCount(); i++) {
          if (!getEntry(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.serialization.js.ast.JsAstProtoBuf.NameTable parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name> entry_ =
        java.util.Collections.emptyList();
      private void ensureEntryIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          entry_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name>(entry_);
          bitField0_ |= 0x00000001;
         }
      }

      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Name entry = 1;</code>
       */
      public java.util.List<org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name> getEntryList() {
        return java.util.Collections.unmodifiableList(entry_);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Name entry = 1;</code>
       */
      public int getEntryCount() {
        return entry_.size();
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Name entry = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name getEntry(int index) {
        return entry_.get(index);
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Name entry = 1;</code>
       */
      public Builder setEntry(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureEntryIsMutable();
        entry_.set(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Name entry = 1;</code>
       */
      public Builder setEntry(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name.Builder builderForValue) {
        ensureEntryIsMutable();
        entry_.set(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Name entry = 1;</code>
       */
      public Builder addEntry(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureEntryIsMutable();
        entry_.add(value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Name entry = 1;</code>
       */
      public Builder addEntry(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureEntryIsMutable();
        entry_.add(index, value);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Name entry = 1;</code>
       */
      public Builder addEntry(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name.Builder builderForValue) {
        ensureEntryIsMutable();
        entry_.add(builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Name entry = 1;</code>
       */
      public Builder addEntry(
          int index, org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name.Builder builderForValue) {
        ensureEntryIsMutable();
        entry_.add(index, builderForValue.build());

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Name entry = 1;</code>
       */
      public Builder addAllEntry(
          java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name> values) {
        ensureEntryIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, entry_);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Name entry = 1;</code>
       */
      public Builder clearEntry() {
        entry_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);

        return this;
      }
      /**
       * <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Name entry = 1;</code>
       */
      public Builder removeEntry(int index) {
        ensureEntryIsMutable();
        entry_.remove(index);

        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.NameTable)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.NameTable)
  }

  public interface NameOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Name)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required bool temporary = 1;</code>
     */
    boolean hasTemporary();
    /**
     * <code>required bool temporary = 1;</code>
     */
    boolean getTemporary();

    /**
     * <code>optional int32 identifier = 2;</code>
     */
    boolean hasIdentifier();
    /**
     * <code>optional int32 identifier = 2;</code>
     */
    int getIdentifier();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.LocalAlias local_name_id = 3;</code>
     */
    boolean hasLocalNameId();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.LocalAlias local_name_id = 3;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias getLocalNameId();

    /**
     * <code>optional bool imported = 4 [default = false];</code>
     */
    boolean hasImported();
    /**
     * <code>optional bool imported = 4 [default = false];</code>
     */
    boolean getImported();

    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SpecialFunction special_function = 5;</code>
     */
    boolean hasSpecialFunction();
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SpecialFunction special_function = 5;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SpecialFunction getSpecialFunction();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Name}
   */
  public static final class Name extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Name)
      NameOrBuilder {
    // Use Name.newBuilder() to construct.
    private Name(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Name(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Name getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Name(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              temporary_ = input.readBool();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              identifier_ = input.readInt32();
              break;
            }
            case 26: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = localNameId_.toBuilder();
              }
              localNameId_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(localNameId_);
                localNameId_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              imported_ = input.readBool();
              break;
            }
            case 40: {
              int rawValue = input.readEnum();
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SpecialFunction value = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SpecialFunction.valueOf(rawValue);
              if (value == null) {
                unknownFieldsCodedOutput.writeRawVarint32(tag);
                unknownFieldsCodedOutput.writeRawVarint32(rawValue);
              } else {
                bitField0_ |= 0x00000010;
                specialFunction_ = 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<Name> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Name>() {
      public Name parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Name(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int TEMPORARY_FIELD_NUMBER = 1;
    private boolean temporary_;
    /**
     * <code>required bool temporary = 1;</code>
     */
    public boolean hasTemporary() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required bool temporary = 1;</code>
     */
    public boolean getTemporary() {
      return temporary_;
    }

    public static final int IDENTIFIER_FIELD_NUMBER = 2;
    private int identifier_;
    /**
     * <code>optional int32 identifier = 2;</code>
     */
    public boolean hasIdentifier() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int32 identifier = 2;</code>
     */
    public int getIdentifier() {
      return identifier_;
    }

    public static final int LOCAL_NAME_ID_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias localNameId_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.LocalAlias local_name_id = 3;</code>
     */
    public boolean hasLocalNameId() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.LocalAlias local_name_id = 3;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias getLocalNameId() {
      return localNameId_;
    }

    public static final int IMPORTED_FIELD_NUMBER = 4;
    private boolean imported_;
    /**
     * <code>optional bool imported = 4 [default = false];</code>
     */
    public boolean hasImported() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional bool imported = 4 [default = false];</code>
     */
    public boolean getImported() {
      return imported_;
    }

    public static final int SPECIAL_FUNCTION_FIELD_NUMBER = 5;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SpecialFunction specialFunction_;
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SpecialFunction special_function = 5;</code>
     */
    public boolean hasSpecialFunction() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SpecialFunction special_function = 5;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SpecialFunction getSpecialFunction() {
      return specialFunction_;
    }

    private void initFields() {
      temporary_ = false;
      identifier_ = 0;
      localNameId_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias.getDefaultInstance();
      imported_ = false;
      specialFunction_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SpecialFunction.DEFINE_INLINE_FUNCTION;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTemporary()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasLocalNameId()) {
        if (!getLocalNameId().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.writeBool(1, temporary_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, identifier_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, localNameId_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBool(4, imported_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeEnum(5, specialFunction_.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
          .computeBoolSize(1, temporary_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(2, identifier_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, localNameId_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeBoolSize(4, imported_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeEnumSize(5, specialFunction_.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.serialization.js.ast.JsAstProtoBuf.Name parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name 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.serialization.js.ast.JsAstProtoBuf.Name parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name 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.serialization.js.ast.JsAstProtoBuf.Name parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name 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.serialization.js.ast.JsAstProtoBuf.Name parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name 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.serialization.js.ast.JsAstProtoBuf.Name parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name 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.serialization.js.ast.JsAstProtoBuf.Name prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Name}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Name)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        temporary_ = false;
        bitField0_ = (bitField0_ & ~0x00000001);
        identifier_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        localNameId_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        imported_ = false;
        bitField0_ = (bitField0_ & ~0x00000008);
        specialFunction_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SpecialFunction.DEFINE_INLINE_FUNCTION;
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.temporary_ = temporary_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.identifier_ = identifier_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.localNameId_ = localNameId_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.imported_ = imported_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.specialFunction_ = specialFunction_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name.getDefaultInstance()) return this;
        if (other.hasTemporary()) {
          setTemporary(other.getTemporary());
        }
        if (other.hasIdentifier()) {
          setIdentifier(other.getIdentifier());
        }
        if (other.hasLocalNameId()) {
          mergeLocalNameId(other.getLocalNameId());
        }
        if (other.hasImported()) {
          setImported(other.getImported());
        }
        if (other.hasSpecialFunction()) {
          setSpecialFunction(other.getSpecialFunction());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTemporary()) {
          
          return false;
        }
        if (hasLocalNameId()) {
          if (!getLocalNameId().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.serialization.js.ast.JsAstProtoBuf.Name parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Name) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private boolean temporary_ ;
      /**
       * <code>required bool temporary = 1;</code>
       */
      public boolean hasTemporary() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required bool temporary = 1;</code>
       */
      public boolean getTemporary() {
        return temporary_;
      }
      /**
       * <code>required bool temporary = 1;</code>
       */
      public Builder setTemporary(boolean value) {
        bitField0_ |= 0x00000001;
        temporary_ = value;
        
        return this;
      }
      /**
       * <code>required bool temporary = 1;</code>
       */
      public Builder clearTemporary() {
        bitField0_ = (bitField0_ & ~0x00000001);
        temporary_ = false;
        
        return this;
      }

      private int identifier_ ;
      /**
       * <code>optional int32 identifier = 2;</code>
       */
      public boolean hasIdentifier() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int32 identifier = 2;</code>
       */
      public int getIdentifier() {
        return identifier_;
      }
      /**
       * <code>optional int32 identifier = 2;</code>
       */
      public Builder setIdentifier(int value) {
        bitField0_ |= 0x00000002;
        identifier_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 identifier = 2;</code>
       */
      public Builder clearIdentifier() {
        bitField0_ = (bitField0_ & ~0x00000002);
        identifier_ = 0;
        
        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias localNameId_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias.getDefaultInstance();
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.LocalAlias local_name_id = 3;</code>
       */
      public boolean hasLocalNameId() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.LocalAlias local_name_id = 3;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias getLocalNameId() {
        return localNameId_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.LocalAlias local_name_id = 3;</code>
       */
      public Builder setLocalNameId(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias value) {
        if (value == null) {
          throw new NullPointerException();
        }
        localNameId_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.LocalAlias local_name_id = 3;</code>
       */
      public Builder setLocalNameId(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias.Builder builderForValue) {
        localNameId_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.LocalAlias local_name_id = 3;</code>
       */
      public Builder mergeLocalNameId(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            localNameId_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias.getDefaultInstance()) {
          localNameId_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias.newBuilder(localNameId_).mergeFrom(value).buildPartial();
        } else {
          localNameId_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.LocalAlias local_name_id = 3;</code>
       */
      public Builder clearLocalNameId() {
        localNameId_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias.getDefaultInstance();

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

      private boolean imported_ ;
      /**
       * <code>optional bool imported = 4 [default = false];</code>
       */
      public boolean hasImported() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional bool imported = 4 [default = false];</code>
       */
      public boolean getImported() {
        return imported_;
      }
      /**
       * <code>optional bool imported = 4 [default = false];</code>
       */
      public Builder setImported(boolean value) {
        bitField0_ |= 0x00000008;
        imported_ = value;
        
        return this;
      }
      /**
       * <code>optional bool imported = 4 [default = false];</code>
       */
      public Builder clearImported() {
        bitField0_ = (bitField0_ & ~0x00000008);
        imported_ = false;
        
        return this;
      }

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SpecialFunction specialFunction_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SpecialFunction.DEFINE_INLINE_FUNCTION;
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SpecialFunction special_function = 5;</code>
       */
      public boolean hasSpecialFunction() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SpecialFunction special_function = 5;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SpecialFunction getSpecialFunction() {
        return specialFunction_;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SpecialFunction special_function = 5;</code>
       */
      public Builder setSpecialFunction(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SpecialFunction value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000010;
        specialFunction_ = value;
        
        return this;
      }
      /**
       * <code>optional .org.jetbrains.kotlin.serialization.js.ast.SpecialFunction special_function = 5;</code>
       */
      public Builder clearSpecialFunction() {
        bitField0_ = (bitField0_ & ~0x00000010);
        specialFunction_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SpecialFunction.DEFINE_INLINE_FUNCTION;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Name)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Name)
  }

  public interface LocalAliasOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.LocalAlias)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required int32 local_name_id = 1;</code>
     */
    boolean hasLocalNameId();
    /**
     * <code>required int32 local_name_id = 1;</code>
     */
    int getLocalNameId();

    /**
     * <code>optional int32 tag = 2;</code>
     */
    boolean hasTag();
    /**
     * <code>optional int32 tag = 2;</code>
     */
    int getTag();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.LocalAlias}
   */
  public static final class LocalAlias extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.LocalAlias)
      LocalAliasOrBuilder {
    // Use LocalAlias.newBuilder() to construct.
    private LocalAlias(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private LocalAlias(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public LocalAlias getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private LocalAlias(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              localNameId_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              tag_ = 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<LocalAlias> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<LocalAlias>() {
      public LocalAlias parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new LocalAlias(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int LOCAL_NAME_ID_FIELD_NUMBER = 1;
    private int localNameId_;
    /**
     * <code>required int32 local_name_id = 1;</code>
     */
    public boolean hasLocalNameId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 local_name_id = 1;</code>
     */
    public int getLocalNameId() {
      return localNameId_;
    }

    public static final int TAG_FIELD_NUMBER = 2;
    private int tag_;
    /**
     * <code>optional int32 tag = 2;</code>
     */
    public boolean hasTag() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int32 tag = 2;</code>
     */
    public int getTag() {
      return tag_;
    }

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

      if (!hasLocalNameId()) {
        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, localNameId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, tag_);
      }
      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, localNameId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeInt32Size(2, tag_);
      }
      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.serialization.js.ast.JsAstProtoBuf.LocalAlias parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias 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.serialization.js.ast.JsAstProtoBuf.LocalAlias parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias 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.serialization.js.ast.JsAstProtoBuf.LocalAlias parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias 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.serialization.js.ast.JsAstProtoBuf.LocalAlias parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias 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.serialization.js.ast.JsAstProtoBuf.LocalAlias parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias 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.serialization.js.ast.JsAstProtoBuf.LocalAlias prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.LocalAlias}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.LocalAlias)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAliasOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

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

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.localNameId_ = localNameId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.tag_ = tag_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.LocalAlias.getDefaultInstance()) return this;
        if (other.hasLocalNameId()) {
          setLocalNameId(other.getLocalNameId());
        }
        if (other.hasTag()) {
          setTag(other.getTag());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

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

      private int localNameId_ ;
      /**
       * <code>required int32 local_name_id = 1;</code>
       */
      public boolean hasLocalNameId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 local_name_id = 1;</code>
       */
      public int getLocalNameId() {
        return localNameId_;
      }
      /**
       * <code>required int32 local_name_id = 1;</code>
       */
      public Builder setLocalNameId(int value) {
        bitField0_ |= 0x00000001;
        localNameId_ = value;
        
        return this;
      }
      /**
       * <code>required int32 local_name_id = 1;</code>
       */
      public Builder clearLocalNameId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        localNameId_ = 0;
        
        return this;
      }

      private int tag_ ;
      /**
       * <code>optional int32 tag = 2;</code>
       */
      public boolean hasTag() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int32 tag = 2;</code>
       */
      public int getTag() {
        return tag_;
      }
      /**
       * <code>optional int32 tag = 2;</code>
       */
      public Builder setTag(int value) {
        bitField0_ |= 0x00000002;
        tag_ = value;
        
        return this;
      }
      /**
       * <code>optional int32 tag = 2;</code>
       */
      public Builder clearTag() {
        bitField0_ = (bitField0_ & ~0x00000002);
        tag_ = 0;
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.LocalAlias)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.LocalAlias)
  }

  public interface ChunkOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Chunk)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.StringTable string_table = 1;</code>
     */
    boolean hasStringTable();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.StringTable string_table = 1;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable getStringTable();

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.NameTable name_table = 2;</code>
     */
    boolean hasNameTable();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.NameTable name_table = 2;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable getNameTable();

    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Fragment fragment = 3;</code>
     */
    boolean hasFragment();
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Fragment fragment = 3;</code>
     */
    org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment getFragment();
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Chunk}
   */
  public static final class Chunk extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.Chunk)
      ChunkOrBuilder {
    // Use Chunk.newBuilder() to construct.
    private Chunk(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Chunk(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public Chunk getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
    private Chunk(
        org.jetbrains.kotlin.protobuf.CodedInputStream input,
        org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
          org.jetbrains.kotlin.protobuf.ByteString.newOutput();
      org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
          org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
              unknownFieldsOutput, 1);
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFieldsCodedOutput,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = stringTable_.toBuilder();
              }
              stringTable_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(stringTable_);
                stringTable_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = nameTable_.toBuilder();
              }
              nameTable_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(nameTable_);
                nameTable_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = fragment_.toBuilder();
              }
              fragment_ = input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(fragment_);
                fragment_ = 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<Chunk> PARSER =
        new org.jetbrains.kotlin.protobuf.AbstractParser<Chunk>() {
      public Chunk parsePartialFrom(
          org.jetbrains.kotlin.protobuf.CodedInputStream input,
          org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
          throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
        return new Chunk(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int STRING_TABLE_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable stringTable_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.StringTable string_table = 1;</code>
     */
    public boolean hasStringTable() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.StringTable string_table = 1;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable getStringTable() {
      return stringTable_;
    }

    public static final int NAME_TABLE_FIELD_NUMBER = 2;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable nameTable_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.NameTable name_table = 2;</code>
     */
    public boolean hasNameTable() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.NameTable name_table = 2;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable getNameTable() {
      return nameTable_;
    }

    public static final int FRAGMENT_FIELD_NUMBER = 3;
    private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment fragment_;
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Fragment fragment = 3;</code>
     */
    public boolean hasFragment() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .org.jetbrains.kotlin.serialization.js.ast.Fragment fragment = 3;</code>
     */
    public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment getFragment() {
      return fragment_;
    }

    private void initFields() {
      stringTable_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable.getDefaultInstance();
      nameTable_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable.getDefaultInstance();
      fragment_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasStringTable()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasNameTable()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasFragment()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getNameTable().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getFragment().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, stringTable_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, nameTable_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, fragment_);
      }
      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, stringTable_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(2, nameTable_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += org.jetbrains.kotlin.protobuf.CodedOutputStream
          .computeMessageSize(3, fragment_);
      }
      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.serialization.js.ast.JsAstProtoBuf.Chunk parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Chunk 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.serialization.js.ast.JsAstProtoBuf.Chunk parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Chunk 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.serialization.js.ast.JsAstProtoBuf.Chunk parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Chunk 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.serialization.js.ast.JsAstProtoBuf.Chunk parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Chunk 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.serialization.js.ast.JsAstProtoBuf.Chunk parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Chunk 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.serialization.js.ast.JsAstProtoBuf.Chunk prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Chunk}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Chunk, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.Chunk)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.ChunkOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Chunk.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        stringTable_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        nameTable_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000002);
        fragment_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment.getDefaultInstance();
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Chunk getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Chunk.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Chunk build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Chunk result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Chunk buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Chunk result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Chunk(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.stringTable_ = stringTable_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.nameTable_ = nameTable_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.fragment_ = fragment_;
        result.bitField0_ = to_bitField0_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Chunk other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Chunk.getDefaultInstance()) return this;
        if (other.hasStringTable()) {
          mergeStringTable(other.getStringTable());
        }
        if (other.hasNameTable()) {
          mergeNameTable(other.getNameTable());
        }
        if (other.hasFragment()) {
          mergeFragment(other.getFragment());
        }
        setUnknownFields(
            getUnknownFields().concat(other.unknownFields));
        return this;
      }

      public final boolean isInitialized() {
        if (!hasStringTable()) {
          
          return false;
        }
        if (!hasNameTable()) {
          
          return false;
        }
        if (!hasFragment()) {
          
          return false;
        }
        if (!getNameTable().isInitialized()) {
          
          return false;
        }
        if (!getFragment().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.serialization.js.ast.JsAstProtoBuf.Chunk parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Chunk) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable stringTable_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.StringTable string_table = 1;</code>
       */
      public boolean hasStringTable() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.StringTable string_table = 1;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable getStringTable() {
        return stringTable_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.StringTable string_table = 1;</code>
       */
      public Builder setStringTable(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        stringTable_ = value;

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.StringTable string_table = 1;</code>
       */
      public Builder setStringTable(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable.Builder builderForValue) {
        stringTable_ = builderForValue.build();

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.StringTable string_table = 1;</code>
       */
      public Builder mergeStringTable(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable value) {
        if (((bitField0_ & 0x00000001) == 0x00000001) &&
            stringTable_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable.getDefaultInstance()) {
          stringTable_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable.newBuilder(stringTable_).mergeFrom(value).buildPartial();
        } else {
          stringTable_ = value;
        }

        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.StringTable string_table = 1;</code>
       */
      public Builder clearStringTable() {
        stringTable_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.StringTable.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable nameTable_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.NameTable name_table = 2;</code>
       */
      public boolean hasNameTable() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.NameTable name_table = 2;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable getNameTable() {
        return nameTable_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.NameTable name_table = 2;</code>
       */
      public Builder setNameTable(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable value) {
        if (value == null) {
          throw new NullPointerException();
        }
        nameTable_ = value;

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.NameTable name_table = 2;</code>
       */
      public Builder setNameTable(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable.Builder builderForValue) {
        nameTable_ = builderForValue.build();

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.NameTable name_table = 2;</code>
       */
      public Builder mergeNameTable(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable value) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            nameTable_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable.getDefaultInstance()) {
          nameTable_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable.newBuilder(nameTable_).mergeFrom(value).buildPartial();
        } else {
          nameTable_ = value;
        }

        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.NameTable name_table = 2;</code>
       */
      public Builder clearNameTable() {
        nameTable_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.NameTable.getDefaultInstance();

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

      private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment fragment_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment.getDefaultInstance();
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Fragment fragment = 3;</code>
       */
      public boolean hasFragment() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Fragment fragment = 3;</code>
       */
      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment getFragment() {
        return fragment_;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Fragment fragment = 3;</code>
       */
      public Builder setFragment(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment value) {
        if (value == null) {
          throw new NullPointerException();
        }
        fragment_ = value;

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Fragment fragment = 3;</code>
       */
      public Builder setFragment(
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment.Builder builderForValue) {
        fragment_ = builderForValue.build();

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Fragment fragment = 3;</code>
       */
      public Builder mergeFragment(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment value) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            fragment_ != org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment.getDefaultInstance()) {
          fragment_ =
            org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment.newBuilder(fragment_).mergeFrom(value).buildPartial();
        } else {
          fragment_ = value;
        }

        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .org.jetbrains.kotlin.serialization.js.ast.Fragment fragment = 3;</code>
       */
      public Builder clearFragment() {
        fragment_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Fragment.getDefaultInstance();

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

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Chunk)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.Chunk)
  }

  public interface InlineDataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.InlineData)
      org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated string inline_function_tags = 1;</code>
     */
    org.jetbrains.kotlin.protobuf.ProtocolStringList
        getInlineFunctionTagsList();
    /**
     * <code>repeated string inline_function_tags = 1;</code>
     */
    int getInlineFunctionTagsCount();
    /**
     * <code>repeated string inline_function_tags = 1;</code>
     */
    java.lang.String getInlineFunctionTags(int index);
    /**
     * <code>repeated string inline_function_tags = 1;</code>
     */
    org.jetbrains.kotlin.protobuf.ByteString
        getInlineFunctionTagsBytes(int index);
  }
  /**
   * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.InlineData}
   */
  public static final class InlineData extends
      org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
      // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.ast.InlineData)
      InlineDataOrBuilder {
    // Use InlineData.newBuilder() to construct.
    private InlineData(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private InlineData(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}

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

    public InlineData getDefaultInstanceForType() {
      return defaultInstance;
    }

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

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

    public static final int INLINE_FUNCTION_TAGS_FIELD_NUMBER = 1;
    private org.jetbrains.kotlin.protobuf.LazyStringList inlineFunctionTags_;
    /**
     * <code>repeated string inline_function_tags = 1;</code>
     */
    public org.jetbrains.kotlin.protobuf.ProtocolStringList
        getInlineFunctionTagsList() {
      return inlineFunctionTags_;
    }
    /**
     * <code>repeated string inline_function_tags = 1;</code>
     */
    public int getInlineFunctionTagsCount() {
      return inlineFunctionTags_.size();
    }
    /**
     * <code>repeated string inline_function_tags = 1;</code>
     */
    public java.lang.String getInlineFunctionTags(int index) {
      return inlineFunctionTags_.get(index);
    }
    /**
     * <code>repeated string inline_function_tags = 1;</code>
     */
    public org.jetbrains.kotlin.protobuf.ByteString
        getInlineFunctionTagsBytes(int index) {
      return inlineFunctionTags_.getByteString(index);
    }

    private void initFields() {
      inlineFunctionTags_ = 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 < inlineFunctionTags_.size(); i++) {
        output.writeBytes(1, inlineFunctionTags_.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 < inlineFunctionTags_.size(); i++) {
          dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(inlineFunctionTags_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getInlineFunctionTagsList().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.serialization.js.ast.JsAstProtoBuf.InlineData parseFrom(
        org.jetbrains.kotlin.protobuf.ByteString data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineData 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.serialization.js.ast.JsAstProtoBuf.InlineData parseFrom(byte[] data)
        throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineData 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.serialization.js.ast.JsAstProtoBuf.InlineData parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineData 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.serialization.js.ast.JsAstProtoBuf.InlineData parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineData 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.serialization.js.ast.JsAstProtoBuf.InlineData parseFrom(
        org.jetbrains.kotlin.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineData 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.serialization.js.ast.JsAstProtoBuf.InlineData prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    /**
     * Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.InlineData}
     */
    public static final class Builder extends
        org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
          org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineData, Builder>
        implements
        // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.ast.InlineData)
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineDataOrBuilder {
      // Construct using org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineData.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

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

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

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineData getDefaultInstanceForType() {
        return org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineData.getDefaultInstance();
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineData build() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineData buildPartial() {
        org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineData result = new org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineData(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          inlineFunctionTags_ = inlineFunctionTags_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.inlineFunctionTags_ = inlineFunctionTags_;
        return result;
      }

      public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineData other) {
        if (other == org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineData.getDefaultInstance()) return this;
        if (!other.inlineFunctionTags_.isEmpty()) {
          if (inlineFunctionTags_.isEmpty()) {
            inlineFunctionTags_ = other.inlineFunctionTags_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureInlineFunctionTagsIsMutable();
            inlineFunctionTags_.addAll(other.inlineFunctionTags_);
          }
          
        }
        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.serialization.js.ast.JsAstProtoBuf.InlineData parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineData) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private org.jetbrains.kotlin.protobuf.LazyStringList inlineFunctionTags_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
      private void ensureInlineFunctionTagsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          inlineFunctionTags_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(inlineFunctionTags_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string inline_function_tags = 1;</code>
       */
      public org.jetbrains.kotlin.protobuf.ProtocolStringList
          getInlineFunctionTagsList() {
        return inlineFunctionTags_.getUnmodifiableView();
      }
      /**
       * <code>repeated string inline_function_tags = 1;</code>
       */
      public int getInlineFunctionTagsCount() {
        return inlineFunctionTags_.size();
      }
      /**
       * <code>repeated string inline_function_tags = 1;</code>
       */
      public java.lang.String getInlineFunctionTags(int index) {
        return inlineFunctionTags_.get(index);
      }
      /**
       * <code>repeated string inline_function_tags = 1;</code>
       */
      public org.jetbrains.kotlin.protobuf.ByteString
          getInlineFunctionTagsBytes(int index) {
        return inlineFunctionTags_.getByteString(index);
      }
      /**
       * <code>repeated string inline_function_tags = 1;</code>
       */
      public Builder setInlineFunctionTags(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureInlineFunctionTagsIsMutable();
        inlineFunctionTags_.set(index, value);
        
        return this;
      }
      /**
       * <code>repeated string inline_function_tags = 1;</code>
       */
      public Builder addInlineFunctionTags(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureInlineFunctionTagsIsMutable();
        inlineFunctionTags_.add(value);
        
        return this;
      }
      /**
       * <code>repeated string inline_function_tags = 1;</code>
       */
      public Builder addAllInlineFunctionTags(
          java.lang.Iterable<java.lang.String> values) {
        ensureInlineFunctionTagsIsMutable();
        org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
            values, inlineFunctionTags_);
        
        return this;
      }
      /**
       * <code>repeated string inline_function_tags = 1;</code>
       */
      public Builder clearInlineFunctionTags() {
        inlineFunctionTags_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        
        return this;
      }
      /**
       * <code>repeated string inline_function_tags = 1;</code>
       */
      public Builder addInlineFunctionTagsBytes(
          org.jetbrains.kotlin.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureInlineFunctionTagsIsMutable();
        inlineFunctionTags_.add(value);
        
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.InlineData)
    }

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

    // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.ast.InlineData)
  }


  static {
  }

  // @@protoc_insertion_point(outer_class_scope)
}