// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: stmt.piqi.proto

public final class StmtPiqi {
  private StmtPiqi() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  public enum cast_type
      implements com.google.protobuf.ProtocolMessageEnum {
    cast_unsigned(0, 1),
    cast_signed(1, 2),
    cast_high(2, 3),
    cast_low(3, 4),
    ;
    
    public static final int cast_unsigned_VALUE = 1;
    public static final int cast_signed_VALUE = 2;
    public static final int cast_high_VALUE = 3;
    public static final int cast_low_VALUE = 4;
    
    
    public final int getNumber() { return value; }
    
    public static cast_type valueOf(int value) {
      switch (value) {
        case 1: return cast_unsigned;
        case 2: return cast_signed;
        case 3: return cast_high;
        case 4: return cast_low;
        default: return null;
      }
    }
    
    public static com.google.protobuf.Internal.EnumLiteMap<cast_type>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static com.google.protobuf.Internal.EnumLiteMap<cast_type>
        internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<cast_type>() {
            public cast_type findValueByNumber(int number) {
              return cast_type.valueOf(number);
            }
          };
    
    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(index);
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return StmtPiqi.getDescriptor().getEnumTypes().get(0);
    }
    
    private static final cast_type[] VALUES = {
      cast_unsigned, cast_signed, cast_high, cast_low, 
    };
    
    public static cast_type valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      return VALUES[desc.getIndex()];
    }
    
    private final int index;
    private final int value;
    
    private cast_type(int index, int value) {
      this.index = index;
      this.value = value;
    }
    
    // @@protoc_insertion_point(enum_scope:cast_type)
  }
  
  public enum binop_type
      implements com.google.protobuf.ProtocolMessageEnum {
    plus(0, 1),
    minus(1, 2),
    times(2, 3),
    divide(3, 4),
    sdivide(4, 5),
    modbop(5, 6),
    smod(6, 7),
    lshift(7, 8),
    rshift(8, 9),
    arshift(9, 10),
    andbop(10, 11),
    orbop(11, 12),
    xor(12, 13),
    eq(13, 14),
    neq(14, 15),
    lt(15, 16),
    le(16, 17),
    slt(17, 18),
    sle(18, 19),
    ;
    
    public static final int plus_VALUE = 1;
    public static final int minus_VALUE = 2;
    public static final int times_VALUE = 3;
    public static final int divide_VALUE = 4;
    public static final int sdivide_VALUE = 5;
    public static final int modbop_VALUE = 6;
    public static final int smod_VALUE = 7;
    public static final int lshift_VALUE = 8;
    public static final int rshift_VALUE = 9;
    public static final int arshift_VALUE = 10;
    public static final int andbop_VALUE = 11;
    public static final int orbop_VALUE = 12;
    public static final int xor_VALUE = 13;
    public static final int eq_VALUE = 14;
    public static final int neq_VALUE = 15;
    public static final int lt_VALUE = 16;
    public static final int le_VALUE = 17;
    public static final int slt_VALUE = 18;
    public static final int sle_VALUE = 19;
    
    
    public final int getNumber() { return value; }
    
    public static binop_type valueOf(int value) {
      switch (value) {
        case 1: return plus;
        case 2: return minus;
        case 3: return times;
        case 4: return divide;
        case 5: return sdivide;
        case 6: return modbop;
        case 7: return smod;
        case 8: return lshift;
        case 9: return rshift;
        case 10: return arshift;
        case 11: return andbop;
        case 12: return orbop;
        case 13: return xor;
        case 14: return eq;
        case 15: return neq;
        case 16: return lt;
        case 17: return le;
        case 18: return slt;
        case 19: return sle;
        default: return null;
      }
    }
    
    public static com.google.protobuf.Internal.EnumLiteMap<binop_type>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static com.google.protobuf.Internal.EnumLiteMap<binop_type>
        internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<binop_type>() {
            public binop_type findValueByNumber(int number) {
              return binop_type.valueOf(number);
            }
          };
    
    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(index);
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return StmtPiqi.getDescriptor().getEnumTypes().get(1);
    }
    
    private static final binop_type[] VALUES = {
      plus, minus, times, divide, sdivide, modbop, smod, lshift, rshift, arshift, andbop, orbop, xor, eq, neq, lt, le, slt, sle, 
    };
    
    public static binop_type valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      return VALUES[desc.getIndex()];
    }
    
    private final int index;
    private final int value;
    
    private binop_type(int index, int value) {
      this.index = index;
      this.value = value;
    }
    
    // @@protoc_insertion_point(enum_scope:binop_type)
  }
  
  public enum unop_type
      implements com.google.protobuf.ProtocolMessageEnum {
    uneg(0, 1),
    unot(1, 2),
    ;
    
    public static final int uneg_VALUE = 1;
    public static final int unot_VALUE = 2;
    
    
    public final int getNumber() { return value; }
    
    public static unop_type valueOf(int value) {
      switch (value) {
        case 1: return uneg;
        case 2: return unot;
        default: return null;
      }
    }
    
    public static com.google.protobuf.Internal.EnumLiteMap<unop_type>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static com.google.protobuf.Internal.EnumLiteMap<unop_type>
        internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<unop_type>() {
            public unop_type findValueByNumber(int number) {
              return unop_type.valueOf(number);
            }
          };
    
    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(index);
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return StmtPiqi.getDescriptor().getEnumTypes().get(2);
    }
    
    private static final unop_type[] VALUES = {
      uneg, unot, 
    };
    
    public static unop_type valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      return VALUES[desc.getIndex()];
    }
    
    private final int index;
    private final int value;
    
    private unop_type(int index, int value) {
      this.index = index;
      this.value = value;
    }
    
    // @@protoc_insertion_point(enum_scope:unop_type)
  }
  
  public interface programOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // repeated .stmt elem = 1;
    java.util.List<StmtPiqi.stmt> 
        getElemList();
    StmtPiqi.stmt getElem(int index);
    int getElemCount();
    java.util.List<? extends StmtPiqi.stmtOrBuilder> 
        getElemOrBuilderList();
    StmtPiqi.stmtOrBuilder getElemOrBuilder(
        int index);
  }
  public static final class program extends
      com.google.protobuf.GeneratedMessage
      implements programOrBuilder {
    // Use program.newBuilder() to construct.
    private program(Builder builder) {
      super(builder);
    }
    private program(boolean noInit) {}
    
    private static final program defaultInstance;
    public static program getDefaultInstance() {
      return defaultInstance;
    }
    
    public program getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_program_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_program_fieldAccessorTable;
    }
    
    // repeated .stmt elem = 1;
    public static final int ELEM_FIELD_NUMBER = 1;
    private java.util.List<StmtPiqi.stmt> elem_;
    public java.util.List<StmtPiqi.stmt> getElemList() {
      return elem_;
    }
    public java.util.List<? extends StmtPiqi.stmtOrBuilder> 
        getElemOrBuilderList() {
      return elem_;
    }
    public int getElemCount() {
      return elem_.size();
    }
    public StmtPiqi.stmt getElem(int index) {
      return elem_.get(index);
    }
    public StmtPiqi.stmtOrBuilder getElemOrBuilder(
        int index) {
      return elem_.get(index);
    }
    
    private void initFields() {
      elem_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      for (int i = 0; i < getElemCount(); i++) {
        if (!getElem(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < elem_.size(); i++) {
        output.writeMessage(1, elem_.get(i));
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      for (int i = 0; i < elem_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, elem_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.program parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.program parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.program parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.program parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.program parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.program parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.program parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.program parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.program parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.program parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.program prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.programOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_program_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_program_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.program.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getElemFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (elemBuilder_ == null) {
          elem_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          elemBuilder_.clear();
        }
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.program.getDescriptor();
      }
      
      public StmtPiqi.program getDefaultInstanceForType() {
        return StmtPiqi.program.getDefaultInstance();
      }
      
      public StmtPiqi.program build() {
        StmtPiqi.program result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.program buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.program result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.program buildPartial() {
        StmtPiqi.program result = new StmtPiqi.program(this);
        int from_bitField0_ = bitField0_;
        if (elemBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            elem_ = java.util.Collections.unmodifiableList(elem_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.elem_ = elem_;
        } else {
          result.elem_ = elemBuilder_.build();
        }
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.program) {
          return mergeFrom((StmtPiqi.program)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.program other) {
        if (other == StmtPiqi.program.getDefaultInstance()) return this;
        if (elemBuilder_ == null) {
          if (!other.elem_.isEmpty()) {
            if (elem_.isEmpty()) {
              elem_ = other.elem_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureElemIsMutable();
              elem_.addAll(other.elem_);
            }
            onChanged();
          }
        } else {
          if (!other.elem_.isEmpty()) {
            if (elemBuilder_.isEmpty()) {
              elemBuilder_.dispose();
              elemBuilder_ = null;
              elem_ = other.elem_;
              bitField0_ = (bitField0_ & ~0x00000001);
              elemBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getElemFieldBuilder() : null;
            } else {
              elemBuilder_.addAllMessages(other.elem_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        for (int i = 0; i < getElemCount(); i++) {
          if (!getElem(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.stmt.Builder subBuilder = StmtPiqi.stmt.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addElem(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // repeated .stmt elem = 1;
      private java.util.List<StmtPiqi.stmt> elem_ =
        java.util.Collections.emptyList();
      private void ensureElemIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          elem_ = new java.util.ArrayList<StmtPiqi.stmt>(elem_);
          bitField0_ |= 0x00000001;
         }
      }
      
      private com.google.protobuf.RepeatedFieldBuilder<
          StmtPiqi.stmt, StmtPiqi.stmt.Builder, StmtPiqi.stmtOrBuilder> elemBuilder_;
      
      public java.util.List<StmtPiqi.stmt> getElemList() {
        if (elemBuilder_ == null) {
          return java.util.Collections.unmodifiableList(elem_);
        } else {
          return elemBuilder_.getMessageList();
        }
      }
      public int getElemCount() {
        if (elemBuilder_ == null) {
          return elem_.size();
        } else {
          return elemBuilder_.getCount();
        }
      }
      public StmtPiqi.stmt getElem(int index) {
        if (elemBuilder_ == null) {
          return elem_.get(index);
        } else {
          return elemBuilder_.getMessage(index);
        }
      }
      public Builder setElem(
          int index, StmtPiqi.stmt value) {
        if (elemBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureElemIsMutable();
          elem_.set(index, value);
          onChanged();
        } else {
          elemBuilder_.setMessage(index, value);
        }
        return this;
      }
      public Builder setElem(
          int index, StmtPiqi.stmt.Builder builderForValue) {
        if (elemBuilder_ == null) {
          ensureElemIsMutable();
          elem_.set(index, builderForValue.build());
          onChanged();
        } else {
          elemBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addElem(StmtPiqi.stmt value) {
        if (elemBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureElemIsMutable();
          elem_.add(value);
          onChanged();
        } else {
          elemBuilder_.addMessage(value);
        }
        return this;
      }
      public Builder addElem(
          int index, StmtPiqi.stmt value) {
        if (elemBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureElemIsMutable();
          elem_.add(index, value);
          onChanged();
        } else {
          elemBuilder_.addMessage(index, value);
        }
        return this;
      }
      public Builder addElem(
          StmtPiqi.stmt.Builder builderForValue) {
        if (elemBuilder_ == null) {
          ensureElemIsMutable();
          elem_.add(builderForValue.build());
          onChanged();
        } else {
          elemBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      public Builder addElem(
          int index, StmtPiqi.stmt.Builder builderForValue) {
        if (elemBuilder_ == null) {
          ensureElemIsMutable();
          elem_.add(index, builderForValue.build());
          onChanged();
        } else {
          elemBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addAllElem(
          java.lang.Iterable<? extends StmtPiqi.stmt> values) {
        if (elemBuilder_ == null) {
          ensureElemIsMutable();
          super.addAll(values, elem_);
          onChanged();
        } else {
          elemBuilder_.addAllMessages(values);
        }
        return this;
      }
      public Builder clearElem() {
        if (elemBuilder_ == null) {
          elem_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          elemBuilder_.clear();
        }
        return this;
      }
      public Builder removeElem(int index) {
        if (elemBuilder_ == null) {
          ensureElemIsMutable();
          elem_.remove(index);
          onChanged();
        } else {
          elemBuilder_.remove(index);
        }
        return this;
      }
      public StmtPiqi.stmt.Builder getElemBuilder(
          int index) {
        return getElemFieldBuilder().getBuilder(index);
      }
      public StmtPiqi.stmtOrBuilder getElemOrBuilder(
          int index) {
        if (elemBuilder_ == null) {
          return elem_.get(index);  } else {
          return elemBuilder_.getMessageOrBuilder(index);
        }
      }
      public java.util.List<? extends StmtPiqi.stmtOrBuilder> 
           getElemOrBuilderList() {
        if (elemBuilder_ != null) {
          return elemBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(elem_);
        }
      }
      public StmtPiqi.stmt.Builder addElemBuilder() {
        return getElemFieldBuilder().addBuilder(
            StmtPiqi.stmt.getDefaultInstance());
      }
      public StmtPiqi.stmt.Builder addElemBuilder(
          int index) {
        return getElemFieldBuilder().addBuilder(
            index, StmtPiqi.stmt.getDefaultInstance());
      }
      public java.util.List<StmtPiqi.stmt.Builder> 
           getElemBuilderList() {
        return getElemFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          StmtPiqi.stmt, StmtPiqi.stmt.Builder, StmtPiqi.stmtOrBuilder> 
          getElemFieldBuilder() {
        if (elemBuilder_ == null) {
          elemBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              StmtPiqi.stmt, StmtPiqi.stmt.Builder, StmtPiqi.stmtOrBuilder>(
                  elem_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          elem_ = null;
        }
        return elemBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:program)
    }
    
    static {
      defaultInstance = new program(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:program)
  }
  
  public interface stmtOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // optional .move move = 1;
    boolean hasMove();
    StmtPiqi.move getMove();
    StmtPiqi.moveOrBuilder getMoveOrBuilder();
    
    // optional .jmp jmp = 2;
    boolean hasJmp();
    StmtPiqi.jmp getJmp();
    StmtPiqi.jmpOrBuilder getJmpOrBuilder();
    
    // optional .cjmp cjmp = 3;
    boolean hasCjmp();
    StmtPiqi.cjmp getCjmp();
    StmtPiqi.cjmpOrBuilder getCjmpOrBuilder();
    
    // optional .label_stmt label_stmt = 4;
    boolean hasLabelStmt();
    StmtPiqi.label_stmt getLabelStmt();
    StmtPiqi.label_stmtOrBuilder getLabelStmtOrBuilder();
    
    // optional .halt halt = 5;
    boolean hasHalt();
    StmtPiqi.halt getHalt();
    StmtPiqi.haltOrBuilder getHaltOrBuilder();
    
    // optional .assert_stmt assert_stmt = 6;
    boolean hasAssertStmt();
    StmtPiqi.assert_stmt getAssertStmt();
    StmtPiqi.assert_stmtOrBuilder getAssertStmtOrBuilder();
    
    // optional .assume assume = 7;
    boolean hasAssume();
    StmtPiqi.assume getAssume();
    StmtPiqi.assumeOrBuilder getAssumeOrBuilder();
    
    // optional .comment comment = 8;
    boolean hasComment();
    StmtPiqi.comment getComment();
    StmtPiqi.commentOrBuilder getCommentOrBuilder();
    
    // optional .special special = 9;
    boolean hasSpecial();
    StmtPiqi.special getSpecial();
    StmtPiqi.specialOrBuilder getSpecialOrBuilder();
  }
  public static final class stmt extends
      com.google.protobuf.GeneratedMessage
      implements stmtOrBuilder {
    // Use stmt.newBuilder() to construct.
    private stmt(Builder builder) {
      super(builder);
    }
    private stmt(boolean noInit) {}
    
    private static final stmt defaultInstance;
    public static stmt getDefaultInstance() {
      return defaultInstance;
    }
    
    public stmt getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_stmt_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_stmt_fieldAccessorTable;
    }
    
    private int bitField0_;
    // optional .move move = 1;
    public static final int MOVE_FIELD_NUMBER = 1;
    private StmtPiqi.move move_;
    public boolean hasMove() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.move getMove() {
      return move_;
    }
    public StmtPiqi.moveOrBuilder getMoveOrBuilder() {
      return move_;
    }
    
    // optional .jmp jmp = 2;
    public static final int JMP_FIELD_NUMBER = 2;
    private StmtPiqi.jmp jmp_;
    public boolean hasJmp() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.jmp getJmp() {
      return jmp_;
    }
    public StmtPiqi.jmpOrBuilder getJmpOrBuilder() {
      return jmp_;
    }
    
    // optional .cjmp cjmp = 3;
    public static final int CJMP_FIELD_NUMBER = 3;
    private StmtPiqi.cjmp cjmp_;
    public boolean hasCjmp() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public StmtPiqi.cjmp getCjmp() {
      return cjmp_;
    }
    public StmtPiqi.cjmpOrBuilder getCjmpOrBuilder() {
      return cjmp_;
    }
    
    // optional .label_stmt label_stmt = 4;
    public static final int LABEL_STMT_FIELD_NUMBER = 4;
    private StmtPiqi.label_stmt labelStmt_;
    public boolean hasLabelStmt() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    public StmtPiqi.label_stmt getLabelStmt() {
      return labelStmt_;
    }
    public StmtPiqi.label_stmtOrBuilder getLabelStmtOrBuilder() {
      return labelStmt_;
    }
    
    // optional .halt halt = 5;
    public static final int HALT_FIELD_NUMBER = 5;
    private StmtPiqi.halt halt_;
    public boolean hasHalt() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    public StmtPiqi.halt getHalt() {
      return halt_;
    }
    public StmtPiqi.haltOrBuilder getHaltOrBuilder() {
      return halt_;
    }
    
    // optional .assert_stmt assert_stmt = 6;
    public static final int ASSERT_STMT_FIELD_NUMBER = 6;
    private StmtPiqi.assert_stmt assertStmt_;
    public boolean hasAssertStmt() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    public StmtPiqi.assert_stmt getAssertStmt() {
      return assertStmt_;
    }
    public StmtPiqi.assert_stmtOrBuilder getAssertStmtOrBuilder() {
      return assertStmt_;
    }
    
    // optional .assume assume = 7;
    public static final int ASSUME_FIELD_NUMBER = 7;
    private StmtPiqi.assume assume_;
    public boolean hasAssume() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    public StmtPiqi.assume getAssume() {
      return assume_;
    }
    public StmtPiqi.assumeOrBuilder getAssumeOrBuilder() {
      return assume_;
    }
    
    // optional .comment comment = 8;
    public static final int COMMENT_FIELD_NUMBER = 8;
    private StmtPiqi.comment comment_;
    public boolean hasComment() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    public StmtPiqi.comment getComment() {
      return comment_;
    }
    public StmtPiqi.commentOrBuilder getCommentOrBuilder() {
      return comment_;
    }
    
    // optional .special special = 9;
    public static final int SPECIAL_FIELD_NUMBER = 9;
    private StmtPiqi.special special_;
    public boolean hasSpecial() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    public StmtPiqi.special getSpecial() {
      return special_;
    }
    public StmtPiqi.specialOrBuilder getSpecialOrBuilder() {
      return special_;
    }
    
    private void initFields() {
      move_ = StmtPiqi.move.getDefaultInstance();
      jmp_ = StmtPiqi.jmp.getDefaultInstance();
      cjmp_ = StmtPiqi.cjmp.getDefaultInstance();
      labelStmt_ = StmtPiqi.label_stmt.getDefaultInstance();
      halt_ = StmtPiqi.halt.getDefaultInstance();
      assertStmt_ = StmtPiqi.assert_stmt.getDefaultInstance();
      assume_ = StmtPiqi.assume.getDefaultInstance();
      comment_ = StmtPiqi.comment.getDefaultInstance();
      special_ = StmtPiqi.special.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (hasMove()) {
        if (!getMove().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasJmp()) {
        if (!getJmp().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasCjmp()) {
        if (!getCjmp().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasLabelStmt()) {
        if (!getLabelStmt().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasHalt()) {
        if (!getHalt().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasAssertStmt()) {
        if (!getAssertStmt().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasAssume()) {
        if (!getAssume().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasComment()) {
        if (!getComment().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSpecial()) {
        if (!getSpecial().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, move_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, jmp_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, cjmp_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, labelStmt_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(5, halt_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeMessage(6, assertStmt_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeMessage(7, assume_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeMessage(8, comment_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeMessage(9, special_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, move_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, jmp_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, cjmp_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, labelStmt_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, halt_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, assertStmt_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, assume_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, comment_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, special_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.stmt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.stmt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.stmt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.stmt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.stmt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.stmt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.stmt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.stmt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.stmt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.stmt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.stmt prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.stmtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_stmt_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_stmt_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.stmt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getMoveFieldBuilder();
          getJmpFieldBuilder();
          getCjmpFieldBuilder();
          getLabelStmtFieldBuilder();
          getHaltFieldBuilder();
          getAssertStmtFieldBuilder();
          getAssumeFieldBuilder();
          getCommentFieldBuilder();
          getSpecialFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (moveBuilder_ == null) {
          move_ = StmtPiqi.move.getDefaultInstance();
        } else {
          moveBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (jmpBuilder_ == null) {
          jmp_ = StmtPiqi.jmp.getDefaultInstance();
        } else {
          jmpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (cjmpBuilder_ == null) {
          cjmp_ = StmtPiqi.cjmp.getDefaultInstance();
        } else {
          cjmpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (labelStmtBuilder_ == null) {
          labelStmt_ = StmtPiqi.label_stmt.getDefaultInstance();
        } else {
          labelStmtBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        if (haltBuilder_ == null) {
          halt_ = StmtPiqi.halt.getDefaultInstance();
        } else {
          haltBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        if (assertStmtBuilder_ == null) {
          assertStmt_ = StmtPiqi.assert_stmt.getDefaultInstance();
        } else {
          assertStmtBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        if (assumeBuilder_ == null) {
          assume_ = StmtPiqi.assume.getDefaultInstance();
        } else {
          assumeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        if (commentBuilder_ == null) {
          comment_ = StmtPiqi.comment.getDefaultInstance();
        } else {
          commentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        if (specialBuilder_ == null) {
          special_ = StmtPiqi.special.getDefaultInstance();
        } else {
          specialBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.stmt.getDescriptor();
      }
      
      public StmtPiqi.stmt getDefaultInstanceForType() {
        return StmtPiqi.stmt.getDefaultInstance();
      }
      
      public StmtPiqi.stmt build() {
        StmtPiqi.stmt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.stmt buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.stmt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.stmt buildPartial() {
        StmtPiqi.stmt result = new StmtPiqi.stmt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (moveBuilder_ == null) {
          result.move_ = move_;
        } else {
          result.move_ = moveBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (jmpBuilder_ == null) {
          result.jmp_ = jmp_;
        } else {
          result.jmp_ = jmpBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (cjmpBuilder_ == null) {
          result.cjmp_ = cjmp_;
        } else {
          result.cjmp_ = cjmpBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        if (labelStmtBuilder_ == null) {
          result.labelStmt_ = labelStmt_;
        } else {
          result.labelStmt_ = labelStmtBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        if (haltBuilder_ == null) {
          result.halt_ = halt_;
        } else {
          result.halt_ = haltBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        if (assertStmtBuilder_ == null) {
          result.assertStmt_ = assertStmt_;
        } else {
          result.assertStmt_ = assertStmtBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        if (assumeBuilder_ == null) {
          result.assume_ = assume_;
        } else {
          result.assume_ = assumeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        if (commentBuilder_ == null) {
          result.comment_ = comment_;
        } else {
          result.comment_ = commentBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000100;
        }
        if (specialBuilder_ == null) {
          result.special_ = special_;
        } else {
          result.special_ = specialBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.stmt) {
          return mergeFrom((StmtPiqi.stmt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.stmt other) {
        if (other == StmtPiqi.stmt.getDefaultInstance()) return this;
        if (other.hasMove()) {
          mergeMove(other.getMove());
        }
        if (other.hasJmp()) {
          mergeJmp(other.getJmp());
        }
        if (other.hasCjmp()) {
          mergeCjmp(other.getCjmp());
        }
        if (other.hasLabelStmt()) {
          mergeLabelStmt(other.getLabelStmt());
        }
        if (other.hasHalt()) {
          mergeHalt(other.getHalt());
        }
        if (other.hasAssertStmt()) {
          mergeAssertStmt(other.getAssertStmt());
        }
        if (other.hasAssume()) {
          mergeAssume(other.getAssume());
        }
        if (other.hasComment()) {
          mergeComment(other.getComment());
        }
        if (other.hasSpecial()) {
          mergeSpecial(other.getSpecial());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (hasMove()) {
          if (!getMove().isInitialized()) {
            
            return false;
          }
        }
        if (hasJmp()) {
          if (!getJmp().isInitialized()) {
            
            return false;
          }
        }
        if (hasCjmp()) {
          if (!getCjmp().isInitialized()) {
            
            return false;
          }
        }
        if (hasLabelStmt()) {
          if (!getLabelStmt().isInitialized()) {
            
            return false;
          }
        }
        if (hasHalt()) {
          if (!getHalt().isInitialized()) {
            
            return false;
          }
        }
        if (hasAssertStmt()) {
          if (!getAssertStmt().isInitialized()) {
            
            return false;
          }
        }
        if (hasAssume()) {
          if (!getAssume().isInitialized()) {
            
            return false;
          }
        }
        if (hasComment()) {
          if (!getComment().isInitialized()) {
            
            return false;
          }
        }
        if (hasSpecial()) {
          if (!getSpecial().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.move.Builder subBuilder = StmtPiqi.move.newBuilder();
              if (hasMove()) {
                subBuilder.mergeFrom(getMove());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setMove(subBuilder.buildPartial());
              break;
            }
            case 18: {
              StmtPiqi.jmp.Builder subBuilder = StmtPiqi.jmp.newBuilder();
              if (hasJmp()) {
                subBuilder.mergeFrom(getJmp());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setJmp(subBuilder.buildPartial());
              break;
            }
            case 26: {
              StmtPiqi.cjmp.Builder subBuilder = StmtPiqi.cjmp.newBuilder();
              if (hasCjmp()) {
                subBuilder.mergeFrom(getCjmp());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setCjmp(subBuilder.buildPartial());
              break;
            }
            case 34: {
              StmtPiqi.label_stmt.Builder subBuilder = StmtPiqi.label_stmt.newBuilder();
              if (hasLabelStmt()) {
                subBuilder.mergeFrom(getLabelStmt());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setLabelStmt(subBuilder.buildPartial());
              break;
            }
            case 42: {
              StmtPiqi.halt.Builder subBuilder = StmtPiqi.halt.newBuilder();
              if (hasHalt()) {
                subBuilder.mergeFrom(getHalt());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setHalt(subBuilder.buildPartial());
              break;
            }
            case 50: {
              StmtPiqi.assert_stmt.Builder subBuilder = StmtPiqi.assert_stmt.newBuilder();
              if (hasAssertStmt()) {
                subBuilder.mergeFrom(getAssertStmt());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setAssertStmt(subBuilder.buildPartial());
              break;
            }
            case 58: {
              StmtPiqi.assume.Builder subBuilder = StmtPiqi.assume.newBuilder();
              if (hasAssume()) {
                subBuilder.mergeFrom(getAssume());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setAssume(subBuilder.buildPartial());
              break;
            }
            case 66: {
              StmtPiqi.comment.Builder subBuilder = StmtPiqi.comment.newBuilder();
              if (hasComment()) {
                subBuilder.mergeFrom(getComment());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setComment(subBuilder.buildPartial());
              break;
            }
            case 74: {
              StmtPiqi.special.Builder subBuilder = StmtPiqi.special.newBuilder();
              if (hasSpecial()) {
                subBuilder.mergeFrom(getSpecial());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setSpecial(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // optional .move move = 1;
      private StmtPiqi.move move_ = StmtPiqi.move.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.move, StmtPiqi.move.Builder, StmtPiqi.moveOrBuilder> moveBuilder_;
      public boolean hasMove() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.move getMove() {
        if (moveBuilder_ == null) {
          return move_;
        } else {
          return moveBuilder_.getMessage();
        }
      }
      public Builder setMove(StmtPiqi.move value) {
        if (moveBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          move_ = value;
          onChanged();
        } else {
          moveBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setMove(
          StmtPiqi.move.Builder builderForValue) {
        if (moveBuilder_ == null) {
          move_ = builderForValue.build();
          onChanged();
        } else {
          moveBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeMove(StmtPiqi.move value) {
        if (moveBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              move_ != StmtPiqi.move.getDefaultInstance()) {
            move_ =
              StmtPiqi.move.newBuilder(move_).mergeFrom(value).buildPartial();
          } else {
            move_ = value;
          }
          onChanged();
        } else {
          moveBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearMove() {
        if (moveBuilder_ == null) {
          move_ = StmtPiqi.move.getDefaultInstance();
          onChanged();
        } else {
          moveBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public StmtPiqi.move.Builder getMoveBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getMoveFieldBuilder().getBuilder();
      }
      public StmtPiqi.moveOrBuilder getMoveOrBuilder() {
        if (moveBuilder_ != null) {
          return moveBuilder_.getMessageOrBuilder();
        } else {
          return move_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.move, StmtPiqi.move.Builder, StmtPiqi.moveOrBuilder> 
          getMoveFieldBuilder() {
        if (moveBuilder_ == null) {
          moveBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.move, StmtPiqi.move.Builder, StmtPiqi.moveOrBuilder>(
                  move_,
                  getParentForChildren(),
                  isClean());
          move_ = null;
        }
        return moveBuilder_;
      }
      
      // optional .jmp jmp = 2;
      private StmtPiqi.jmp jmp_ = StmtPiqi.jmp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.jmp, StmtPiqi.jmp.Builder, StmtPiqi.jmpOrBuilder> jmpBuilder_;
      public boolean hasJmp() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.jmp getJmp() {
        if (jmpBuilder_ == null) {
          return jmp_;
        } else {
          return jmpBuilder_.getMessage();
        }
      }
      public Builder setJmp(StmtPiqi.jmp value) {
        if (jmpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          jmp_ = value;
          onChanged();
        } else {
          jmpBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setJmp(
          StmtPiqi.jmp.Builder builderForValue) {
        if (jmpBuilder_ == null) {
          jmp_ = builderForValue.build();
          onChanged();
        } else {
          jmpBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeJmp(StmtPiqi.jmp value) {
        if (jmpBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              jmp_ != StmtPiqi.jmp.getDefaultInstance()) {
            jmp_ =
              StmtPiqi.jmp.newBuilder(jmp_).mergeFrom(value).buildPartial();
          } else {
            jmp_ = value;
          }
          onChanged();
        } else {
          jmpBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearJmp() {
        if (jmpBuilder_ == null) {
          jmp_ = StmtPiqi.jmp.getDefaultInstance();
          onChanged();
        } else {
          jmpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.jmp.Builder getJmpBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getJmpFieldBuilder().getBuilder();
      }
      public StmtPiqi.jmpOrBuilder getJmpOrBuilder() {
        if (jmpBuilder_ != null) {
          return jmpBuilder_.getMessageOrBuilder();
        } else {
          return jmp_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.jmp, StmtPiqi.jmp.Builder, StmtPiqi.jmpOrBuilder> 
          getJmpFieldBuilder() {
        if (jmpBuilder_ == null) {
          jmpBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.jmp, StmtPiqi.jmp.Builder, StmtPiqi.jmpOrBuilder>(
                  jmp_,
                  getParentForChildren(),
                  isClean());
          jmp_ = null;
        }
        return jmpBuilder_;
      }
      
      // optional .cjmp cjmp = 3;
      private StmtPiqi.cjmp cjmp_ = StmtPiqi.cjmp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.cjmp, StmtPiqi.cjmp.Builder, StmtPiqi.cjmpOrBuilder> cjmpBuilder_;
      public boolean hasCjmp() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public StmtPiqi.cjmp getCjmp() {
        if (cjmpBuilder_ == null) {
          return cjmp_;
        } else {
          return cjmpBuilder_.getMessage();
        }
      }
      public Builder setCjmp(StmtPiqi.cjmp value) {
        if (cjmpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          cjmp_ = value;
          onChanged();
        } else {
          cjmpBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder setCjmp(
          StmtPiqi.cjmp.Builder builderForValue) {
        if (cjmpBuilder_ == null) {
          cjmp_ = builderForValue.build();
          onChanged();
        } else {
          cjmpBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder mergeCjmp(StmtPiqi.cjmp value) {
        if (cjmpBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              cjmp_ != StmtPiqi.cjmp.getDefaultInstance()) {
            cjmp_ =
              StmtPiqi.cjmp.newBuilder(cjmp_).mergeFrom(value).buildPartial();
          } else {
            cjmp_ = value;
          }
          onChanged();
        } else {
          cjmpBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder clearCjmp() {
        if (cjmpBuilder_ == null) {
          cjmp_ = StmtPiqi.cjmp.getDefaultInstance();
          onChanged();
        } else {
          cjmpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      public StmtPiqi.cjmp.Builder getCjmpBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getCjmpFieldBuilder().getBuilder();
      }
      public StmtPiqi.cjmpOrBuilder getCjmpOrBuilder() {
        if (cjmpBuilder_ != null) {
          return cjmpBuilder_.getMessageOrBuilder();
        } else {
          return cjmp_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.cjmp, StmtPiqi.cjmp.Builder, StmtPiqi.cjmpOrBuilder> 
          getCjmpFieldBuilder() {
        if (cjmpBuilder_ == null) {
          cjmpBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.cjmp, StmtPiqi.cjmp.Builder, StmtPiqi.cjmpOrBuilder>(
                  cjmp_,
                  getParentForChildren(),
                  isClean());
          cjmp_ = null;
        }
        return cjmpBuilder_;
      }
      
      // optional .label_stmt label_stmt = 4;
      private StmtPiqi.label_stmt labelStmt_ = StmtPiqi.label_stmt.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.label_stmt, StmtPiqi.label_stmt.Builder, StmtPiqi.label_stmtOrBuilder> labelStmtBuilder_;
      public boolean hasLabelStmt() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public StmtPiqi.label_stmt getLabelStmt() {
        if (labelStmtBuilder_ == null) {
          return labelStmt_;
        } else {
          return labelStmtBuilder_.getMessage();
        }
      }
      public Builder setLabelStmt(StmtPiqi.label_stmt value) {
        if (labelStmtBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          labelStmt_ = value;
          onChanged();
        } else {
          labelStmtBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder setLabelStmt(
          StmtPiqi.label_stmt.Builder builderForValue) {
        if (labelStmtBuilder_ == null) {
          labelStmt_ = builderForValue.build();
          onChanged();
        } else {
          labelStmtBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder mergeLabelStmt(StmtPiqi.label_stmt value) {
        if (labelStmtBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008) &&
              labelStmt_ != StmtPiqi.label_stmt.getDefaultInstance()) {
            labelStmt_ =
              StmtPiqi.label_stmt.newBuilder(labelStmt_).mergeFrom(value).buildPartial();
          } else {
            labelStmt_ = value;
          }
          onChanged();
        } else {
          labelStmtBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder clearLabelStmt() {
        if (labelStmtBuilder_ == null) {
          labelStmt_ = StmtPiqi.label_stmt.getDefaultInstance();
          onChanged();
        } else {
          labelStmtBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      public StmtPiqi.label_stmt.Builder getLabelStmtBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getLabelStmtFieldBuilder().getBuilder();
      }
      public StmtPiqi.label_stmtOrBuilder getLabelStmtOrBuilder() {
        if (labelStmtBuilder_ != null) {
          return labelStmtBuilder_.getMessageOrBuilder();
        } else {
          return labelStmt_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.label_stmt, StmtPiqi.label_stmt.Builder, StmtPiqi.label_stmtOrBuilder> 
          getLabelStmtFieldBuilder() {
        if (labelStmtBuilder_ == null) {
          labelStmtBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.label_stmt, StmtPiqi.label_stmt.Builder, StmtPiqi.label_stmtOrBuilder>(
                  labelStmt_,
                  getParentForChildren(),
                  isClean());
          labelStmt_ = null;
        }
        return labelStmtBuilder_;
      }
      
      // optional .halt halt = 5;
      private StmtPiqi.halt halt_ = StmtPiqi.halt.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.halt, StmtPiqi.halt.Builder, StmtPiqi.haltOrBuilder> haltBuilder_;
      public boolean hasHalt() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public StmtPiqi.halt getHalt() {
        if (haltBuilder_ == null) {
          return halt_;
        } else {
          return haltBuilder_.getMessage();
        }
      }
      public Builder setHalt(StmtPiqi.halt value) {
        if (haltBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          halt_ = value;
          onChanged();
        } else {
          haltBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      public Builder setHalt(
          StmtPiqi.halt.Builder builderForValue) {
        if (haltBuilder_ == null) {
          halt_ = builderForValue.build();
          onChanged();
        } else {
          haltBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      public Builder mergeHalt(StmtPiqi.halt value) {
        if (haltBuilder_ == null) {
          if (((bitField0_ & 0x00000010) == 0x00000010) &&
              halt_ != StmtPiqi.halt.getDefaultInstance()) {
            halt_ =
              StmtPiqi.halt.newBuilder(halt_).mergeFrom(value).buildPartial();
          } else {
            halt_ = value;
          }
          onChanged();
        } else {
          haltBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      public Builder clearHalt() {
        if (haltBuilder_ == null) {
          halt_ = StmtPiqi.halt.getDefaultInstance();
          onChanged();
        } else {
          haltBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      public StmtPiqi.halt.Builder getHaltBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getHaltFieldBuilder().getBuilder();
      }
      public StmtPiqi.haltOrBuilder getHaltOrBuilder() {
        if (haltBuilder_ != null) {
          return haltBuilder_.getMessageOrBuilder();
        } else {
          return halt_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.halt, StmtPiqi.halt.Builder, StmtPiqi.haltOrBuilder> 
          getHaltFieldBuilder() {
        if (haltBuilder_ == null) {
          haltBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.halt, StmtPiqi.halt.Builder, StmtPiqi.haltOrBuilder>(
                  halt_,
                  getParentForChildren(),
                  isClean());
          halt_ = null;
        }
        return haltBuilder_;
      }
      
      // optional .assert_stmt assert_stmt = 6;
      private StmtPiqi.assert_stmt assertStmt_ = StmtPiqi.assert_stmt.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.assert_stmt, StmtPiqi.assert_stmt.Builder, StmtPiqi.assert_stmtOrBuilder> assertStmtBuilder_;
      public boolean hasAssertStmt() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      public StmtPiqi.assert_stmt getAssertStmt() {
        if (assertStmtBuilder_ == null) {
          return assertStmt_;
        } else {
          return assertStmtBuilder_.getMessage();
        }
      }
      public Builder setAssertStmt(StmtPiqi.assert_stmt value) {
        if (assertStmtBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          assertStmt_ = value;
          onChanged();
        } else {
          assertStmtBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      public Builder setAssertStmt(
          StmtPiqi.assert_stmt.Builder builderForValue) {
        if (assertStmtBuilder_ == null) {
          assertStmt_ = builderForValue.build();
          onChanged();
        } else {
          assertStmtBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      public Builder mergeAssertStmt(StmtPiqi.assert_stmt value) {
        if (assertStmtBuilder_ == null) {
          if (((bitField0_ & 0x00000020) == 0x00000020) &&
              assertStmt_ != StmtPiqi.assert_stmt.getDefaultInstance()) {
            assertStmt_ =
              StmtPiqi.assert_stmt.newBuilder(assertStmt_).mergeFrom(value).buildPartial();
          } else {
            assertStmt_ = value;
          }
          onChanged();
        } else {
          assertStmtBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      public Builder clearAssertStmt() {
        if (assertStmtBuilder_ == null) {
          assertStmt_ = StmtPiqi.assert_stmt.getDefaultInstance();
          onChanged();
        } else {
          assertStmtBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }
      public StmtPiqi.assert_stmt.Builder getAssertStmtBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getAssertStmtFieldBuilder().getBuilder();
      }
      public StmtPiqi.assert_stmtOrBuilder getAssertStmtOrBuilder() {
        if (assertStmtBuilder_ != null) {
          return assertStmtBuilder_.getMessageOrBuilder();
        } else {
          return assertStmt_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.assert_stmt, StmtPiqi.assert_stmt.Builder, StmtPiqi.assert_stmtOrBuilder> 
          getAssertStmtFieldBuilder() {
        if (assertStmtBuilder_ == null) {
          assertStmtBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.assert_stmt, StmtPiqi.assert_stmt.Builder, StmtPiqi.assert_stmtOrBuilder>(
                  assertStmt_,
                  getParentForChildren(),
                  isClean());
          assertStmt_ = null;
        }
        return assertStmtBuilder_;
      }
      
      // optional .assume assume = 7;
      private StmtPiqi.assume assume_ = StmtPiqi.assume.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.assume, StmtPiqi.assume.Builder, StmtPiqi.assumeOrBuilder> assumeBuilder_;
      public boolean hasAssume() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      public StmtPiqi.assume getAssume() {
        if (assumeBuilder_ == null) {
          return assume_;
        } else {
          return assumeBuilder_.getMessage();
        }
      }
      public Builder setAssume(StmtPiqi.assume value) {
        if (assumeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          assume_ = value;
          onChanged();
        } else {
          assumeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      public Builder setAssume(
          StmtPiqi.assume.Builder builderForValue) {
        if (assumeBuilder_ == null) {
          assume_ = builderForValue.build();
          onChanged();
        } else {
          assumeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      public Builder mergeAssume(StmtPiqi.assume value) {
        if (assumeBuilder_ == null) {
          if (((bitField0_ & 0x00000040) == 0x00000040) &&
              assume_ != StmtPiqi.assume.getDefaultInstance()) {
            assume_ =
              StmtPiqi.assume.newBuilder(assume_).mergeFrom(value).buildPartial();
          } else {
            assume_ = value;
          }
          onChanged();
        } else {
          assumeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      public Builder clearAssume() {
        if (assumeBuilder_ == null) {
          assume_ = StmtPiqi.assume.getDefaultInstance();
          onChanged();
        } else {
          assumeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }
      public StmtPiqi.assume.Builder getAssumeBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getAssumeFieldBuilder().getBuilder();
      }
      public StmtPiqi.assumeOrBuilder getAssumeOrBuilder() {
        if (assumeBuilder_ != null) {
          return assumeBuilder_.getMessageOrBuilder();
        } else {
          return assume_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.assume, StmtPiqi.assume.Builder, StmtPiqi.assumeOrBuilder> 
          getAssumeFieldBuilder() {
        if (assumeBuilder_ == null) {
          assumeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.assume, StmtPiqi.assume.Builder, StmtPiqi.assumeOrBuilder>(
                  assume_,
                  getParentForChildren(),
                  isClean());
          assume_ = null;
        }
        return assumeBuilder_;
      }
      
      // optional .comment comment = 8;
      private StmtPiqi.comment comment_ = StmtPiqi.comment.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.comment, StmtPiqi.comment.Builder, StmtPiqi.commentOrBuilder> commentBuilder_;
      public boolean hasComment() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      public StmtPiqi.comment getComment() {
        if (commentBuilder_ == null) {
          return comment_;
        } else {
          return commentBuilder_.getMessage();
        }
      }
      public Builder setComment(StmtPiqi.comment value) {
        if (commentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          comment_ = value;
          onChanged();
        } else {
          commentBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      public Builder setComment(
          StmtPiqi.comment.Builder builderForValue) {
        if (commentBuilder_ == null) {
          comment_ = builderForValue.build();
          onChanged();
        } else {
          commentBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      public Builder mergeComment(StmtPiqi.comment value) {
        if (commentBuilder_ == null) {
          if (((bitField0_ & 0x00000080) == 0x00000080) &&
              comment_ != StmtPiqi.comment.getDefaultInstance()) {
            comment_ =
              StmtPiqi.comment.newBuilder(comment_).mergeFrom(value).buildPartial();
          } else {
            comment_ = value;
          }
          onChanged();
        } else {
          commentBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      public Builder clearComment() {
        if (commentBuilder_ == null) {
          comment_ = StmtPiqi.comment.getDefaultInstance();
          onChanged();
        } else {
          commentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }
      public StmtPiqi.comment.Builder getCommentBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getCommentFieldBuilder().getBuilder();
      }
      public StmtPiqi.commentOrBuilder getCommentOrBuilder() {
        if (commentBuilder_ != null) {
          return commentBuilder_.getMessageOrBuilder();
        } else {
          return comment_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.comment, StmtPiqi.comment.Builder, StmtPiqi.commentOrBuilder> 
          getCommentFieldBuilder() {
        if (commentBuilder_ == null) {
          commentBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.comment, StmtPiqi.comment.Builder, StmtPiqi.commentOrBuilder>(
                  comment_,
                  getParentForChildren(),
                  isClean());
          comment_ = null;
        }
        return commentBuilder_;
      }
      
      // optional .special special = 9;
      private StmtPiqi.special special_ = StmtPiqi.special.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.special, StmtPiqi.special.Builder, StmtPiqi.specialOrBuilder> specialBuilder_;
      public boolean hasSpecial() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      public StmtPiqi.special getSpecial() {
        if (specialBuilder_ == null) {
          return special_;
        } else {
          return specialBuilder_.getMessage();
        }
      }
      public Builder setSpecial(StmtPiqi.special value) {
        if (specialBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          special_ = value;
          onChanged();
        } else {
          specialBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      public Builder setSpecial(
          StmtPiqi.special.Builder builderForValue) {
        if (specialBuilder_ == null) {
          special_ = builderForValue.build();
          onChanged();
        } else {
          specialBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      public Builder mergeSpecial(StmtPiqi.special value) {
        if (specialBuilder_ == null) {
          if (((bitField0_ & 0x00000100) == 0x00000100) &&
              special_ != StmtPiqi.special.getDefaultInstance()) {
            special_ =
              StmtPiqi.special.newBuilder(special_).mergeFrom(value).buildPartial();
          } else {
            special_ = value;
          }
          onChanged();
        } else {
          specialBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      public Builder clearSpecial() {
        if (specialBuilder_ == null) {
          special_ = StmtPiqi.special.getDefaultInstance();
          onChanged();
        } else {
          specialBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        return this;
      }
      public StmtPiqi.special.Builder getSpecialBuilder() {
        bitField0_ |= 0x00000100;
        onChanged();
        return getSpecialFieldBuilder().getBuilder();
      }
      public StmtPiqi.specialOrBuilder getSpecialOrBuilder() {
        if (specialBuilder_ != null) {
          return specialBuilder_.getMessageOrBuilder();
        } else {
          return special_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.special, StmtPiqi.special.Builder, StmtPiqi.specialOrBuilder> 
          getSpecialFieldBuilder() {
        if (specialBuilder_ == null) {
          specialBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.special, StmtPiqi.special.Builder, StmtPiqi.specialOrBuilder>(
                  special_,
                  getParentForChildren(),
                  isClean());
          special_ = null;
        }
        return specialBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:stmt)
    }
    
    static {
      defaultInstance = new stmt(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:stmt)
  }
  
  public interface moveOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .var var = 1;
    boolean hasVar();
    StmtPiqi.var getVar();
    StmtPiqi.varOrBuilder getVarOrBuilder();
    
    // required .exp exp = 2;
    boolean hasExp();
    StmtPiqi.exp getExp();
    StmtPiqi.expOrBuilder getExpOrBuilder();
    
    // required .attributes attributes = 3;
    boolean hasAttributes();
    StmtPiqi.attributes getAttributes();
    StmtPiqi.attributesOrBuilder getAttributesOrBuilder();
  }
  public static final class move extends
      com.google.protobuf.GeneratedMessage
      implements moveOrBuilder {
    // Use move.newBuilder() to construct.
    private move(Builder builder) {
      super(builder);
    }
    private move(boolean noInit) {}
    
    private static final move defaultInstance;
    public static move getDefaultInstance() {
      return defaultInstance;
    }
    
    public move getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_move_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_move_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required .var var = 1;
    public static final int VAR_FIELD_NUMBER = 1;
    private StmtPiqi.var var_;
    public boolean hasVar() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.var getVar() {
      return var_;
    }
    public StmtPiqi.varOrBuilder getVarOrBuilder() {
      return var_;
    }
    
    // required .exp exp = 2;
    public static final int EXP_FIELD_NUMBER = 2;
    private StmtPiqi.exp exp_;
    public boolean hasExp() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.exp getExp() {
      return exp_;
    }
    public StmtPiqi.expOrBuilder getExpOrBuilder() {
      return exp_;
    }
    
    // required .attributes attributes = 3;
    public static final int ATTRIBUTES_FIELD_NUMBER = 3;
    private StmtPiqi.attributes attributes_;
    public boolean hasAttributes() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public StmtPiqi.attributes getAttributes() {
      return attributes_;
    }
    public StmtPiqi.attributesOrBuilder getAttributesOrBuilder() {
      return attributes_;
    }
    
    private void initFields() {
      var_ = StmtPiqi.var.getDefaultInstance();
      exp_ = StmtPiqi.exp.getDefaultInstance();
      attributes_ = StmtPiqi.attributes.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasVar()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasExp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAttributes()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getVar().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getExp().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getAttributes().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, var_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, exp_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, attributes_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, var_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, exp_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, attributes_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.move parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.move parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.move parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.move parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.move parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.move parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.move parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.move parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.move parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.move parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.move prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.moveOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_move_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_move_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.move.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getVarFieldBuilder();
          getExpFieldBuilder();
          getAttributesFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (varBuilder_ == null) {
          var_ = StmtPiqi.var.getDefaultInstance();
        } else {
          varBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (expBuilder_ == null) {
          exp_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          expBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (attributesBuilder_ == null) {
          attributes_ = StmtPiqi.attributes.getDefaultInstance();
        } else {
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.move.getDescriptor();
      }
      
      public StmtPiqi.move getDefaultInstanceForType() {
        return StmtPiqi.move.getDefaultInstance();
      }
      
      public StmtPiqi.move build() {
        StmtPiqi.move result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.move buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.move result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.move buildPartial() {
        StmtPiqi.move result = new StmtPiqi.move(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (varBuilder_ == null) {
          result.var_ = var_;
        } else {
          result.var_ = varBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (expBuilder_ == null) {
          result.exp_ = exp_;
        } else {
          result.exp_ = expBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (attributesBuilder_ == null) {
          result.attributes_ = attributes_;
        } else {
          result.attributes_ = attributesBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.move) {
          return mergeFrom((StmtPiqi.move)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.move other) {
        if (other == StmtPiqi.move.getDefaultInstance()) return this;
        if (other.hasVar()) {
          mergeVar(other.getVar());
        }
        if (other.hasExp()) {
          mergeExp(other.getExp());
        }
        if (other.hasAttributes()) {
          mergeAttributes(other.getAttributes());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasVar()) {
          
          return false;
        }
        if (!hasExp()) {
          
          return false;
        }
        if (!hasAttributes()) {
          
          return false;
        }
        if (!getVar().isInitialized()) {
          
          return false;
        }
        if (!getExp().isInitialized()) {
          
          return false;
        }
        if (!getAttributes().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.var.Builder subBuilder = StmtPiqi.var.newBuilder();
              if (hasVar()) {
                subBuilder.mergeFrom(getVar());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setVar(subBuilder.buildPartial());
              break;
            }
            case 18: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasExp()) {
                subBuilder.mergeFrom(getExp());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setExp(subBuilder.buildPartial());
              break;
            }
            case 26: {
              StmtPiqi.attributes.Builder subBuilder = StmtPiqi.attributes.newBuilder();
              if (hasAttributes()) {
                subBuilder.mergeFrom(getAttributes());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setAttributes(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .var var = 1;
      private StmtPiqi.var var_ = StmtPiqi.var.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.var, StmtPiqi.var.Builder, StmtPiqi.varOrBuilder> varBuilder_;
      public boolean hasVar() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.var getVar() {
        if (varBuilder_ == null) {
          return var_;
        } else {
          return varBuilder_.getMessage();
        }
      }
      public Builder setVar(StmtPiqi.var value) {
        if (varBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          var_ = value;
          onChanged();
        } else {
          varBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setVar(
          StmtPiqi.var.Builder builderForValue) {
        if (varBuilder_ == null) {
          var_ = builderForValue.build();
          onChanged();
        } else {
          varBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeVar(StmtPiqi.var value) {
        if (varBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              var_ != StmtPiqi.var.getDefaultInstance()) {
            var_ =
              StmtPiqi.var.newBuilder(var_).mergeFrom(value).buildPartial();
          } else {
            var_ = value;
          }
          onChanged();
        } else {
          varBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearVar() {
        if (varBuilder_ == null) {
          var_ = StmtPiqi.var.getDefaultInstance();
          onChanged();
        } else {
          varBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public StmtPiqi.var.Builder getVarBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getVarFieldBuilder().getBuilder();
      }
      public StmtPiqi.varOrBuilder getVarOrBuilder() {
        if (varBuilder_ != null) {
          return varBuilder_.getMessageOrBuilder();
        } else {
          return var_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.var, StmtPiqi.var.Builder, StmtPiqi.varOrBuilder> 
          getVarFieldBuilder() {
        if (varBuilder_ == null) {
          varBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.var, StmtPiqi.var.Builder, StmtPiqi.varOrBuilder>(
                  var_,
                  getParentForChildren(),
                  isClean());
          var_ = null;
        }
        return varBuilder_;
      }
      
      // required .exp exp = 2;
      private StmtPiqi.exp exp_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> expBuilder_;
      public boolean hasExp() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.exp getExp() {
        if (expBuilder_ == null) {
          return exp_;
        } else {
          return expBuilder_.getMessage();
        }
      }
      public Builder setExp(StmtPiqi.exp value) {
        if (expBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          exp_ = value;
          onChanged();
        } else {
          expBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setExp(
          StmtPiqi.exp.Builder builderForValue) {
        if (expBuilder_ == null) {
          exp_ = builderForValue.build();
          onChanged();
        } else {
          expBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeExp(StmtPiqi.exp value) {
        if (expBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              exp_ != StmtPiqi.exp.getDefaultInstance()) {
            exp_ =
              StmtPiqi.exp.newBuilder(exp_).mergeFrom(value).buildPartial();
          } else {
            exp_ = value;
          }
          onChanged();
        } else {
          expBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearExp() {
        if (expBuilder_ == null) {
          exp_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          expBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.exp.Builder getExpBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getExpFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getExpOrBuilder() {
        if (expBuilder_ != null) {
          return expBuilder_.getMessageOrBuilder();
        } else {
          return exp_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getExpFieldBuilder() {
        if (expBuilder_ == null) {
          expBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  exp_,
                  getParentForChildren(),
                  isClean());
          exp_ = null;
        }
        return expBuilder_;
      }
      
      // required .attributes attributes = 3;
      private StmtPiqi.attributes attributes_ = StmtPiqi.attributes.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder> attributesBuilder_;
      public boolean hasAttributes() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public StmtPiqi.attributes getAttributes() {
        if (attributesBuilder_ == null) {
          return attributes_;
        } else {
          return attributesBuilder_.getMessage();
        }
      }
      public Builder setAttributes(StmtPiqi.attributes value) {
        if (attributesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          attributes_ = value;
          onChanged();
        } else {
          attributesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder setAttributes(
          StmtPiqi.attributes.Builder builderForValue) {
        if (attributesBuilder_ == null) {
          attributes_ = builderForValue.build();
          onChanged();
        } else {
          attributesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder mergeAttributes(StmtPiqi.attributes value) {
        if (attributesBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              attributes_ != StmtPiqi.attributes.getDefaultInstance()) {
            attributes_ =
              StmtPiqi.attributes.newBuilder(attributes_).mergeFrom(value).buildPartial();
          } else {
            attributes_ = value;
          }
          onChanged();
        } else {
          attributesBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder clearAttributes() {
        if (attributesBuilder_ == null) {
          attributes_ = StmtPiqi.attributes.getDefaultInstance();
          onChanged();
        } else {
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      public StmtPiqi.attributes.Builder getAttributesBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getAttributesFieldBuilder().getBuilder();
      }
      public StmtPiqi.attributesOrBuilder getAttributesOrBuilder() {
        if (attributesBuilder_ != null) {
          return attributesBuilder_.getMessageOrBuilder();
        } else {
          return attributes_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder> 
          getAttributesFieldBuilder() {
        if (attributesBuilder_ == null) {
          attributesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder>(
                  attributes_,
                  getParentForChildren(),
                  isClean());
          attributes_ = null;
        }
        return attributesBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:move)
    }
    
    static {
      defaultInstance = new move(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:move)
  }
  
  public interface jmpOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .exp exp = 1;
    boolean hasExp();
    StmtPiqi.exp getExp();
    StmtPiqi.expOrBuilder getExpOrBuilder();
    
    // required .attributes attributes = 2;
    boolean hasAttributes();
    StmtPiqi.attributes getAttributes();
    StmtPiqi.attributesOrBuilder getAttributesOrBuilder();
  }
  public static final class jmp extends
      com.google.protobuf.GeneratedMessage
      implements jmpOrBuilder {
    // Use jmp.newBuilder() to construct.
    private jmp(Builder builder) {
      super(builder);
    }
    private jmp(boolean noInit) {}
    
    private static final jmp defaultInstance;
    public static jmp getDefaultInstance() {
      return defaultInstance;
    }
    
    public jmp getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_jmp_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_jmp_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required .exp exp = 1;
    public static final int EXP_FIELD_NUMBER = 1;
    private StmtPiqi.exp exp_;
    public boolean hasExp() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.exp getExp() {
      return exp_;
    }
    public StmtPiqi.expOrBuilder getExpOrBuilder() {
      return exp_;
    }
    
    // required .attributes attributes = 2;
    public static final int ATTRIBUTES_FIELD_NUMBER = 2;
    private StmtPiqi.attributes attributes_;
    public boolean hasAttributes() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.attributes getAttributes() {
      return attributes_;
    }
    public StmtPiqi.attributesOrBuilder getAttributesOrBuilder() {
      return attributes_;
    }
    
    private void initFields() {
      exp_ = StmtPiqi.exp.getDefaultInstance();
      attributes_ = StmtPiqi.attributes.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasExp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAttributes()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getExp().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getAttributes().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, exp_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, attributes_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, exp_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, attributes_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.jmp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.jmp parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.jmp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.jmp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.jmp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.jmp parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.jmp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.jmp parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.jmp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.jmp parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.jmp prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.jmpOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_jmp_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_jmp_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.jmp.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getExpFieldBuilder();
          getAttributesFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (expBuilder_ == null) {
          exp_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          expBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (attributesBuilder_ == null) {
          attributes_ = StmtPiqi.attributes.getDefaultInstance();
        } else {
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.jmp.getDescriptor();
      }
      
      public StmtPiqi.jmp getDefaultInstanceForType() {
        return StmtPiqi.jmp.getDefaultInstance();
      }
      
      public StmtPiqi.jmp build() {
        StmtPiqi.jmp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.jmp buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.jmp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.jmp buildPartial() {
        StmtPiqi.jmp result = new StmtPiqi.jmp(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (expBuilder_ == null) {
          result.exp_ = exp_;
        } else {
          result.exp_ = expBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (attributesBuilder_ == null) {
          result.attributes_ = attributes_;
        } else {
          result.attributes_ = attributesBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.jmp) {
          return mergeFrom((StmtPiqi.jmp)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.jmp other) {
        if (other == StmtPiqi.jmp.getDefaultInstance()) return this;
        if (other.hasExp()) {
          mergeExp(other.getExp());
        }
        if (other.hasAttributes()) {
          mergeAttributes(other.getAttributes());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasExp()) {
          
          return false;
        }
        if (!hasAttributes()) {
          
          return false;
        }
        if (!getExp().isInitialized()) {
          
          return false;
        }
        if (!getAttributes().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasExp()) {
                subBuilder.mergeFrom(getExp());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setExp(subBuilder.buildPartial());
              break;
            }
            case 18: {
              StmtPiqi.attributes.Builder subBuilder = StmtPiqi.attributes.newBuilder();
              if (hasAttributes()) {
                subBuilder.mergeFrom(getAttributes());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setAttributes(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .exp exp = 1;
      private StmtPiqi.exp exp_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> expBuilder_;
      public boolean hasExp() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.exp getExp() {
        if (expBuilder_ == null) {
          return exp_;
        } else {
          return expBuilder_.getMessage();
        }
      }
      public Builder setExp(StmtPiqi.exp value) {
        if (expBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          exp_ = value;
          onChanged();
        } else {
          expBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setExp(
          StmtPiqi.exp.Builder builderForValue) {
        if (expBuilder_ == null) {
          exp_ = builderForValue.build();
          onChanged();
        } else {
          expBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeExp(StmtPiqi.exp value) {
        if (expBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              exp_ != StmtPiqi.exp.getDefaultInstance()) {
            exp_ =
              StmtPiqi.exp.newBuilder(exp_).mergeFrom(value).buildPartial();
          } else {
            exp_ = value;
          }
          onChanged();
        } else {
          expBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearExp() {
        if (expBuilder_ == null) {
          exp_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          expBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public StmtPiqi.exp.Builder getExpBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getExpFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getExpOrBuilder() {
        if (expBuilder_ != null) {
          return expBuilder_.getMessageOrBuilder();
        } else {
          return exp_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getExpFieldBuilder() {
        if (expBuilder_ == null) {
          expBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  exp_,
                  getParentForChildren(),
                  isClean());
          exp_ = null;
        }
        return expBuilder_;
      }
      
      // required .attributes attributes = 2;
      private StmtPiqi.attributes attributes_ = StmtPiqi.attributes.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder> attributesBuilder_;
      public boolean hasAttributes() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.attributes getAttributes() {
        if (attributesBuilder_ == null) {
          return attributes_;
        } else {
          return attributesBuilder_.getMessage();
        }
      }
      public Builder setAttributes(StmtPiqi.attributes value) {
        if (attributesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          attributes_ = value;
          onChanged();
        } else {
          attributesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setAttributes(
          StmtPiqi.attributes.Builder builderForValue) {
        if (attributesBuilder_ == null) {
          attributes_ = builderForValue.build();
          onChanged();
        } else {
          attributesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeAttributes(StmtPiqi.attributes value) {
        if (attributesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              attributes_ != StmtPiqi.attributes.getDefaultInstance()) {
            attributes_ =
              StmtPiqi.attributes.newBuilder(attributes_).mergeFrom(value).buildPartial();
          } else {
            attributes_ = value;
          }
          onChanged();
        } else {
          attributesBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearAttributes() {
        if (attributesBuilder_ == null) {
          attributes_ = StmtPiqi.attributes.getDefaultInstance();
          onChanged();
        } else {
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.attributes.Builder getAttributesBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getAttributesFieldBuilder().getBuilder();
      }
      public StmtPiqi.attributesOrBuilder getAttributesOrBuilder() {
        if (attributesBuilder_ != null) {
          return attributesBuilder_.getMessageOrBuilder();
        } else {
          return attributes_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder> 
          getAttributesFieldBuilder() {
        if (attributesBuilder_ == null) {
          attributesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder>(
                  attributes_,
                  getParentForChildren(),
                  isClean());
          attributes_ = null;
        }
        return attributesBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:jmp)
    }
    
    static {
      defaultInstance = new jmp(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:jmp)
  }
  
  public interface cjmpOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .exp cond = 1;
    boolean hasCond();
    StmtPiqi.exp getCond();
    StmtPiqi.expOrBuilder getCondOrBuilder();
    
    // required .exp iftrue = 2;
    boolean hasIftrue();
    StmtPiqi.exp getIftrue();
    StmtPiqi.expOrBuilder getIftrueOrBuilder();
    
    // required .exp iffalse = 3;
    boolean hasIffalse();
    StmtPiqi.exp getIffalse();
    StmtPiqi.expOrBuilder getIffalseOrBuilder();
    
    // required .attributes attributes = 4;
    boolean hasAttributes();
    StmtPiqi.attributes getAttributes();
    StmtPiqi.attributesOrBuilder getAttributesOrBuilder();
  }
  public static final class cjmp extends
      com.google.protobuf.GeneratedMessage
      implements cjmpOrBuilder {
    // Use cjmp.newBuilder() to construct.
    private cjmp(Builder builder) {
      super(builder);
    }
    private cjmp(boolean noInit) {}
    
    private static final cjmp defaultInstance;
    public static cjmp getDefaultInstance() {
      return defaultInstance;
    }
    
    public cjmp getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_cjmp_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_cjmp_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required .exp cond = 1;
    public static final int COND_FIELD_NUMBER = 1;
    private StmtPiqi.exp cond_;
    public boolean hasCond() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.exp getCond() {
      return cond_;
    }
    public StmtPiqi.expOrBuilder getCondOrBuilder() {
      return cond_;
    }
    
    // required .exp iftrue = 2;
    public static final int IFTRUE_FIELD_NUMBER = 2;
    private StmtPiqi.exp iftrue_;
    public boolean hasIftrue() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.exp getIftrue() {
      return iftrue_;
    }
    public StmtPiqi.expOrBuilder getIftrueOrBuilder() {
      return iftrue_;
    }
    
    // required .exp iffalse = 3;
    public static final int IFFALSE_FIELD_NUMBER = 3;
    private StmtPiqi.exp iffalse_;
    public boolean hasIffalse() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public StmtPiqi.exp getIffalse() {
      return iffalse_;
    }
    public StmtPiqi.expOrBuilder getIffalseOrBuilder() {
      return iffalse_;
    }
    
    // required .attributes attributes = 4;
    public static final int ATTRIBUTES_FIELD_NUMBER = 4;
    private StmtPiqi.attributes attributes_;
    public boolean hasAttributes() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    public StmtPiqi.attributes getAttributes() {
      return attributes_;
    }
    public StmtPiqi.attributesOrBuilder getAttributesOrBuilder() {
      return attributes_;
    }
    
    private void initFields() {
      cond_ = StmtPiqi.exp.getDefaultInstance();
      iftrue_ = StmtPiqi.exp.getDefaultInstance();
      iffalse_ = StmtPiqi.exp.getDefaultInstance();
      attributes_ = StmtPiqi.attributes.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasCond()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIftrue()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIffalse()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAttributes()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getCond().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getIftrue().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getIffalse().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getAttributes().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, cond_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, iftrue_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, iffalse_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, attributes_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, cond_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, iftrue_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, iffalse_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, attributes_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.cjmp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.cjmp parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.cjmp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.cjmp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.cjmp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.cjmp parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.cjmp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.cjmp parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.cjmp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.cjmp parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.cjmp prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.cjmpOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_cjmp_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_cjmp_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.cjmp.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getCondFieldBuilder();
          getIftrueFieldBuilder();
          getIffalseFieldBuilder();
          getAttributesFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (condBuilder_ == null) {
          cond_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          condBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (iftrueBuilder_ == null) {
          iftrue_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          iftrueBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (iffalseBuilder_ == null) {
          iffalse_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          iffalseBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (attributesBuilder_ == null) {
          attributes_ = StmtPiqi.attributes.getDefaultInstance();
        } else {
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.cjmp.getDescriptor();
      }
      
      public StmtPiqi.cjmp getDefaultInstanceForType() {
        return StmtPiqi.cjmp.getDefaultInstance();
      }
      
      public StmtPiqi.cjmp build() {
        StmtPiqi.cjmp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.cjmp buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.cjmp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.cjmp buildPartial() {
        StmtPiqi.cjmp result = new StmtPiqi.cjmp(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (condBuilder_ == null) {
          result.cond_ = cond_;
        } else {
          result.cond_ = condBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (iftrueBuilder_ == null) {
          result.iftrue_ = iftrue_;
        } else {
          result.iftrue_ = iftrueBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (iffalseBuilder_ == null) {
          result.iffalse_ = iffalse_;
        } else {
          result.iffalse_ = iffalseBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        if (attributesBuilder_ == null) {
          result.attributes_ = attributes_;
        } else {
          result.attributes_ = attributesBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.cjmp) {
          return mergeFrom((StmtPiqi.cjmp)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.cjmp other) {
        if (other == StmtPiqi.cjmp.getDefaultInstance()) return this;
        if (other.hasCond()) {
          mergeCond(other.getCond());
        }
        if (other.hasIftrue()) {
          mergeIftrue(other.getIftrue());
        }
        if (other.hasIffalse()) {
          mergeIffalse(other.getIffalse());
        }
        if (other.hasAttributes()) {
          mergeAttributes(other.getAttributes());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasCond()) {
          
          return false;
        }
        if (!hasIftrue()) {
          
          return false;
        }
        if (!hasIffalse()) {
          
          return false;
        }
        if (!hasAttributes()) {
          
          return false;
        }
        if (!getCond().isInitialized()) {
          
          return false;
        }
        if (!getIftrue().isInitialized()) {
          
          return false;
        }
        if (!getIffalse().isInitialized()) {
          
          return false;
        }
        if (!getAttributes().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasCond()) {
                subBuilder.mergeFrom(getCond());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setCond(subBuilder.buildPartial());
              break;
            }
            case 18: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasIftrue()) {
                subBuilder.mergeFrom(getIftrue());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setIftrue(subBuilder.buildPartial());
              break;
            }
            case 26: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasIffalse()) {
                subBuilder.mergeFrom(getIffalse());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setIffalse(subBuilder.buildPartial());
              break;
            }
            case 34: {
              StmtPiqi.attributes.Builder subBuilder = StmtPiqi.attributes.newBuilder();
              if (hasAttributes()) {
                subBuilder.mergeFrom(getAttributes());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setAttributes(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .exp cond = 1;
      private StmtPiqi.exp cond_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> condBuilder_;
      public boolean hasCond() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.exp getCond() {
        if (condBuilder_ == null) {
          return cond_;
        } else {
          return condBuilder_.getMessage();
        }
      }
      public Builder setCond(StmtPiqi.exp value) {
        if (condBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          cond_ = value;
          onChanged();
        } else {
          condBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setCond(
          StmtPiqi.exp.Builder builderForValue) {
        if (condBuilder_ == null) {
          cond_ = builderForValue.build();
          onChanged();
        } else {
          condBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeCond(StmtPiqi.exp value) {
        if (condBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              cond_ != StmtPiqi.exp.getDefaultInstance()) {
            cond_ =
              StmtPiqi.exp.newBuilder(cond_).mergeFrom(value).buildPartial();
          } else {
            cond_ = value;
          }
          onChanged();
        } else {
          condBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearCond() {
        if (condBuilder_ == null) {
          cond_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          condBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public StmtPiqi.exp.Builder getCondBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getCondFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getCondOrBuilder() {
        if (condBuilder_ != null) {
          return condBuilder_.getMessageOrBuilder();
        } else {
          return cond_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getCondFieldBuilder() {
        if (condBuilder_ == null) {
          condBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  cond_,
                  getParentForChildren(),
                  isClean());
          cond_ = null;
        }
        return condBuilder_;
      }
      
      // required .exp iftrue = 2;
      private StmtPiqi.exp iftrue_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> iftrueBuilder_;
      public boolean hasIftrue() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.exp getIftrue() {
        if (iftrueBuilder_ == null) {
          return iftrue_;
        } else {
          return iftrueBuilder_.getMessage();
        }
      }
      public Builder setIftrue(StmtPiqi.exp value) {
        if (iftrueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          iftrue_ = value;
          onChanged();
        } else {
          iftrueBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setIftrue(
          StmtPiqi.exp.Builder builderForValue) {
        if (iftrueBuilder_ == null) {
          iftrue_ = builderForValue.build();
          onChanged();
        } else {
          iftrueBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeIftrue(StmtPiqi.exp value) {
        if (iftrueBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              iftrue_ != StmtPiqi.exp.getDefaultInstance()) {
            iftrue_ =
              StmtPiqi.exp.newBuilder(iftrue_).mergeFrom(value).buildPartial();
          } else {
            iftrue_ = value;
          }
          onChanged();
        } else {
          iftrueBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearIftrue() {
        if (iftrueBuilder_ == null) {
          iftrue_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          iftrueBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.exp.Builder getIftrueBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getIftrueFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getIftrueOrBuilder() {
        if (iftrueBuilder_ != null) {
          return iftrueBuilder_.getMessageOrBuilder();
        } else {
          return iftrue_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getIftrueFieldBuilder() {
        if (iftrueBuilder_ == null) {
          iftrueBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  iftrue_,
                  getParentForChildren(),
                  isClean());
          iftrue_ = null;
        }
        return iftrueBuilder_;
      }
      
      // required .exp iffalse = 3;
      private StmtPiqi.exp iffalse_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> iffalseBuilder_;
      public boolean hasIffalse() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public StmtPiqi.exp getIffalse() {
        if (iffalseBuilder_ == null) {
          return iffalse_;
        } else {
          return iffalseBuilder_.getMessage();
        }
      }
      public Builder setIffalse(StmtPiqi.exp value) {
        if (iffalseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          iffalse_ = value;
          onChanged();
        } else {
          iffalseBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder setIffalse(
          StmtPiqi.exp.Builder builderForValue) {
        if (iffalseBuilder_ == null) {
          iffalse_ = builderForValue.build();
          onChanged();
        } else {
          iffalseBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder mergeIffalse(StmtPiqi.exp value) {
        if (iffalseBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              iffalse_ != StmtPiqi.exp.getDefaultInstance()) {
            iffalse_ =
              StmtPiqi.exp.newBuilder(iffalse_).mergeFrom(value).buildPartial();
          } else {
            iffalse_ = value;
          }
          onChanged();
        } else {
          iffalseBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder clearIffalse() {
        if (iffalseBuilder_ == null) {
          iffalse_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          iffalseBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      public StmtPiqi.exp.Builder getIffalseBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getIffalseFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getIffalseOrBuilder() {
        if (iffalseBuilder_ != null) {
          return iffalseBuilder_.getMessageOrBuilder();
        } else {
          return iffalse_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getIffalseFieldBuilder() {
        if (iffalseBuilder_ == null) {
          iffalseBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  iffalse_,
                  getParentForChildren(),
                  isClean());
          iffalse_ = null;
        }
        return iffalseBuilder_;
      }
      
      // required .attributes attributes = 4;
      private StmtPiqi.attributes attributes_ = StmtPiqi.attributes.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder> attributesBuilder_;
      public boolean hasAttributes() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public StmtPiqi.attributes getAttributes() {
        if (attributesBuilder_ == null) {
          return attributes_;
        } else {
          return attributesBuilder_.getMessage();
        }
      }
      public Builder setAttributes(StmtPiqi.attributes value) {
        if (attributesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          attributes_ = value;
          onChanged();
        } else {
          attributesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder setAttributes(
          StmtPiqi.attributes.Builder builderForValue) {
        if (attributesBuilder_ == null) {
          attributes_ = builderForValue.build();
          onChanged();
        } else {
          attributesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder mergeAttributes(StmtPiqi.attributes value) {
        if (attributesBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008) &&
              attributes_ != StmtPiqi.attributes.getDefaultInstance()) {
            attributes_ =
              StmtPiqi.attributes.newBuilder(attributes_).mergeFrom(value).buildPartial();
          } else {
            attributes_ = value;
          }
          onChanged();
        } else {
          attributesBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder clearAttributes() {
        if (attributesBuilder_ == null) {
          attributes_ = StmtPiqi.attributes.getDefaultInstance();
          onChanged();
        } else {
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      public StmtPiqi.attributes.Builder getAttributesBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getAttributesFieldBuilder().getBuilder();
      }
      public StmtPiqi.attributesOrBuilder getAttributesOrBuilder() {
        if (attributesBuilder_ != null) {
          return attributesBuilder_.getMessageOrBuilder();
        } else {
          return attributes_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder> 
          getAttributesFieldBuilder() {
        if (attributesBuilder_ == null) {
          attributesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder>(
                  attributes_,
                  getParentForChildren(),
                  isClean());
          attributes_ = null;
        }
        return attributesBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:cjmp)
    }
    
    static {
      defaultInstance = new cjmp(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:cjmp)
  }
  
  public interface label_stmtOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .label label = 1;
    boolean hasLabel();
    StmtPiqi.label getLabel();
    StmtPiqi.labelOrBuilder getLabelOrBuilder();
    
    // required .attributes attributes = 2;
    boolean hasAttributes();
    StmtPiqi.attributes getAttributes();
    StmtPiqi.attributesOrBuilder getAttributesOrBuilder();
  }
  public static final class label_stmt extends
      com.google.protobuf.GeneratedMessage
      implements label_stmtOrBuilder {
    // Use label_stmt.newBuilder() to construct.
    private label_stmt(Builder builder) {
      super(builder);
    }
    private label_stmt(boolean noInit) {}
    
    private static final label_stmt defaultInstance;
    public static label_stmt getDefaultInstance() {
      return defaultInstance;
    }
    
    public label_stmt getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_label_stmt_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_label_stmt_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required .label label = 1;
    public static final int LABEL_FIELD_NUMBER = 1;
    private StmtPiqi.label label_;
    public boolean hasLabel() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.label getLabel() {
      return label_;
    }
    public StmtPiqi.labelOrBuilder getLabelOrBuilder() {
      return label_;
    }
    
    // required .attributes attributes = 2;
    public static final int ATTRIBUTES_FIELD_NUMBER = 2;
    private StmtPiqi.attributes attributes_;
    public boolean hasAttributes() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.attributes getAttributes() {
      return attributes_;
    }
    public StmtPiqi.attributesOrBuilder getAttributesOrBuilder() {
      return attributes_;
    }
    
    private void initFields() {
      label_ = StmtPiqi.label.getDefaultInstance();
      attributes_ = StmtPiqi.attributes.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasLabel()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAttributes()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getAttributes().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, label_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, attributes_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, label_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, attributes_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.label_stmt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.label_stmt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.label_stmt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.label_stmt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.label_stmt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.label_stmt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.label_stmt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.label_stmt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.label_stmt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.label_stmt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.label_stmt prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.label_stmtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_label_stmt_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_label_stmt_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.label_stmt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getLabelFieldBuilder();
          getAttributesFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (labelBuilder_ == null) {
          label_ = StmtPiqi.label.getDefaultInstance();
        } else {
          labelBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (attributesBuilder_ == null) {
          attributes_ = StmtPiqi.attributes.getDefaultInstance();
        } else {
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.label_stmt.getDescriptor();
      }
      
      public StmtPiqi.label_stmt getDefaultInstanceForType() {
        return StmtPiqi.label_stmt.getDefaultInstance();
      }
      
      public StmtPiqi.label_stmt build() {
        StmtPiqi.label_stmt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.label_stmt buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.label_stmt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.label_stmt buildPartial() {
        StmtPiqi.label_stmt result = new StmtPiqi.label_stmt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (labelBuilder_ == null) {
          result.label_ = label_;
        } else {
          result.label_ = labelBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (attributesBuilder_ == null) {
          result.attributes_ = attributes_;
        } else {
          result.attributes_ = attributesBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.label_stmt) {
          return mergeFrom((StmtPiqi.label_stmt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.label_stmt other) {
        if (other == StmtPiqi.label_stmt.getDefaultInstance()) return this;
        if (other.hasLabel()) {
          mergeLabel(other.getLabel());
        }
        if (other.hasAttributes()) {
          mergeAttributes(other.getAttributes());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasLabel()) {
          
          return false;
        }
        if (!hasAttributes()) {
          
          return false;
        }
        if (!getAttributes().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.label.Builder subBuilder = StmtPiqi.label.newBuilder();
              if (hasLabel()) {
                subBuilder.mergeFrom(getLabel());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setLabel(subBuilder.buildPartial());
              break;
            }
            case 18: {
              StmtPiqi.attributes.Builder subBuilder = StmtPiqi.attributes.newBuilder();
              if (hasAttributes()) {
                subBuilder.mergeFrom(getAttributes());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setAttributes(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .label label = 1;
      private StmtPiqi.label label_ = StmtPiqi.label.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.label, StmtPiqi.label.Builder, StmtPiqi.labelOrBuilder> labelBuilder_;
      public boolean hasLabel() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.label getLabel() {
        if (labelBuilder_ == null) {
          return label_;
        } else {
          return labelBuilder_.getMessage();
        }
      }
      public Builder setLabel(StmtPiqi.label value) {
        if (labelBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          label_ = value;
          onChanged();
        } else {
          labelBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setLabel(
          StmtPiqi.label.Builder builderForValue) {
        if (labelBuilder_ == null) {
          label_ = builderForValue.build();
          onChanged();
        } else {
          labelBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeLabel(StmtPiqi.label value) {
        if (labelBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              label_ != StmtPiqi.label.getDefaultInstance()) {
            label_ =
              StmtPiqi.label.newBuilder(label_).mergeFrom(value).buildPartial();
          } else {
            label_ = value;
          }
          onChanged();
        } else {
          labelBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearLabel() {
        if (labelBuilder_ == null) {
          label_ = StmtPiqi.label.getDefaultInstance();
          onChanged();
        } else {
          labelBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public StmtPiqi.label.Builder getLabelBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getLabelFieldBuilder().getBuilder();
      }
      public StmtPiqi.labelOrBuilder getLabelOrBuilder() {
        if (labelBuilder_ != null) {
          return labelBuilder_.getMessageOrBuilder();
        } else {
          return label_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.label, StmtPiqi.label.Builder, StmtPiqi.labelOrBuilder> 
          getLabelFieldBuilder() {
        if (labelBuilder_ == null) {
          labelBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.label, StmtPiqi.label.Builder, StmtPiqi.labelOrBuilder>(
                  label_,
                  getParentForChildren(),
                  isClean());
          label_ = null;
        }
        return labelBuilder_;
      }
      
      // required .attributes attributes = 2;
      private StmtPiqi.attributes attributes_ = StmtPiqi.attributes.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder> attributesBuilder_;
      public boolean hasAttributes() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.attributes getAttributes() {
        if (attributesBuilder_ == null) {
          return attributes_;
        } else {
          return attributesBuilder_.getMessage();
        }
      }
      public Builder setAttributes(StmtPiqi.attributes value) {
        if (attributesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          attributes_ = value;
          onChanged();
        } else {
          attributesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setAttributes(
          StmtPiqi.attributes.Builder builderForValue) {
        if (attributesBuilder_ == null) {
          attributes_ = builderForValue.build();
          onChanged();
        } else {
          attributesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeAttributes(StmtPiqi.attributes value) {
        if (attributesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              attributes_ != StmtPiqi.attributes.getDefaultInstance()) {
            attributes_ =
              StmtPiqi.attributes.newBuilder(attributes_).mergeFrom(value).buildPartial();
          } else {
            attributes_ = value;
          }
          onChanged();
        } else {
          attributesBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearAttributes() {
        if (attributesBuilder_ == null) {
          attributes_ = StmtPiqi.attributes.getDefaultInstance();
          onChanged();
        } else {
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.attributes.Builder getAttributesBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getAttributesFieldBuilder().getBuilder();
      }
      public StmtPiqi.attributesOrBuilder getAttributesOrBuilder() {
        if (attributesBuilder_ != null) {
          return attributesBuilder_.getMessageOrBuilder();
        } else {
          return attributes_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder> 
          getAttributesFieldBuilder() {
        if (attributesBuilder_ == null) {
          attributesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder>(
                  attributes_,
                  getParentForChildren(),
                  isClean());
          attributes_ = null;
        }
        return attributesBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:label_stmt)
    }
    
    static {
      defaultInstance = new label_stmt(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:label_stmt)
  }
  
  public interface haltOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .exp exp = 1;
    boolean hasExp();
    StmtPiqi.exp getExp();
    StmtPiqi.expOrBuilder getExpOrBuilder();
    
    // required .attributes attributes = 2;
    boolean hasAttributes();
    StmtPiqi.attributes getAttributes();
    StmtPiqi.attributesOrBuilder getAttributesOrBuilder();
  }
  public static final class halt extends
      com.google.protobuf.GeneratedMessage
      implements haltOrBuilder {
    // Use halt.newBuilder() to construct.
    private halt(Builder builder) {
      super(builder);
    }
    private halt(boolean noInit) {}
    
    private static final halt defaultInstance;
    public static halt getDefaultInstance() {
      return defaultInstance;
    }
    
    public halt getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_halt_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_halt_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required .exp exp = 1;
    public static final int EXP_FIELD_NUMBER = 1;
    private StmtPiqi.exp exp_;
    public boolean hasExp() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.exp getExp() {
      return exp_;
    }
    public StmtPiqi.expOrBuilder getExpOrBuilder() {
      return exp_;
    }
    
    // required .attributes attributes = 2;
    public static final int ATTRIBUTES_FIELD_NUMBER = 2;
    private StmtPiqi.attributes attributes_;
    public boolean hasAttributes() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.attributes getAttributes() {
      return attributes_;
    }
    public StmtPiqi.attributesOrBuilder getAttributesOrBuilder() {
      return attributes_;
    }
    
    private void initFields() {
      exp_ = StmtPiqi.exp.getDefaultInstance();
      attributes_ = StmtPiqi.attributes.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasExp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAttributes()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getExp().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getAttributes().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, exp_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, attributes_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, exp_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, attributes_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.halt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.halt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.halt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.halt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.halt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.halt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.halt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.halt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.halt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.halt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.halt prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.haltOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_halt_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_halt_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.halt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getExpFieldBuilder();
          getAttributesFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (expBuilder_ == null) {
          exp_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          expBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (attributesBuilder_ == null) {
          attributes_ = StmtPiqi.attributes.getDefaultInstance();
        } else {
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.halt.getDescriptor();
      }
      
      public StmtPiqi.halt getDefaultInstanceForType() {
        return StmtPiqi.halt.getDefaultInstance();
      }
      
      public StmtPiqi.halt build() {
        StmtPiqi.halt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.halt buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.halt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.halt buildPartial() {
        StmtPiqi.halt result = new StmtPiqi.halt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (expBuilder_ == null) {
          result.exp_ = exp_;
        } else {
          result.exp_ = expBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (attributesBuilder_ == null) {
          result.attributes_ = attributes_;
        } else {
          result.attributes_ = attributesBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.halt) {
          return mergeFrom((StmtPiqi.halt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.halt other) {
        if (other == StmtPiqi.halt.getDefaultInstance()) return this;
        if (other.hasExp()) {
          mergeExp(other.getExp());
        }
        if (other.hasAttributes()) {
          mergeAttributes(other.getAttributes());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasExp()) {
          
          return false;
        }
        if (!hasAttributes()) {
          
          return false;
        }
        if (!getExp().isInitialized()) {
          
          return false;
        }
        if (!getAttributes().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasExp()) {
                subBuilder.mergeFrom(getExp());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setExp(subBuilder.buildPartial());
              break;
            }
            case 18: {
              StmtPiqi.attributes.Builder subBuilder = StmtPiqi.attributes.newBuilder();
              if (hasAttributes()) {
                subBuilder.mergeFrom(getAttributes());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setAttributes(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .exp exp = 1;
      private StmtPiqi.exp exp_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> expBuilder_;
      public boolean hasExp() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.exp getExp() {
        if (expBuilder_ == null) {
          return exp_;
        } else {
          return expBuilder_.getMessage();
        }
      }
      public Builder setExp(StmtPiqi.exp value) {
        if (expBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          exp_ = value;
          onChanged();
        } else {
          expBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setExp(
          StmtPiqi.exp.Builder builderForValue) {
        if (expBuilder_ == null) {
          exp_ = builderForValue.build();
          onChanged();
        } else {
          expBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeExp(StmtPiqi.exp value) {
        if (expBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              exp_ != StmtPiqi.exp.getDefaultInstance()) {
            exp_ =
              StmtPiqi.exp.newBuilder(exp_).mergeFrom(value).buildPartial();
          } else {
            exp_ = value;
          }
          onChanged();
        } else {
          expBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearExp() {
        if (expBuilder_ == null) {
          exp_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          expBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public StmtPiqi.exp.Builder getExpBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getExpFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getExpOrBuilder() {
        if (expBuilder_ != null) {
          return expBuilder_.getMessageOrBuilder();
        } else {
          return exp_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getExpFieldBuilder() {
        if (expBuilder_ == null) {
          expBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  exp_,
                  getParentForChildren(),
                  isClean());
          exp_ = null;
        }
        return expBuilder_;
      }
      
      // required .attributes attributes = 2;
      private StmtPiqi.attributes attributes_ = StmtPiqi.attributes.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder> attributesBuilder_;
      public boolean hasAttributes() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.attributes getAttributes() {
        if (attributesBuilder_ == null) {
          return attributes_;
        } else {
          return attributesBuilder_.getMessage();
        }
      }
      public Builder setAttributes(StmtPiqi.attributes value) {
        if (attributesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          attributes_ = value;
          onChanged();
        } else {
          attributesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setAttributes(
          StmtPiqi.attributes.Builder builderForValue) {
        if (attributesBuilder_ == null) {
          attributes_ = builderForValue.build();
          onChanged();
        } else {
          attributesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeAttributes(StmtPiqi.attributes value) {
        if (attributesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              attributes_ != StmtPiqi.attributes.getDefaultInstance()) {
            attributes_ =
              StmtPiqi.attributes.newBuilder(attributes_).mergeFrom(value).buildPartial();
          } else {
            attributes_ = value;
          }
          onChanged();
        } else {
          attributesBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearAttributes() {
        if (attributesBuilder_ == null) {
          attributes_ = StmtPiqi.attributes.getDefaultInstance();
          onChanged();
        } else {
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.attributes.Builder getAttributesBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getAttributesFieldBuilder().getBuilder();
      }
      public StmtPiqi.attributesOrBuilder getAttributesOrBuilder() {
        if (attributesBuilder_ != null) {
          return attributesBuilder_.getMessageOrBuilder();
        } else {
          return attributes_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder> 
          getAttributesFieldBuilder() {
        if (attributesBuilder_ == null) {
          attributesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder>(
                  attributes_,
                  getParentForChildren(),
                  isClean());
          attributes_ = null;
        }
        return attributesBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:halt)
    }
    
    static {
      defaultInstance = new halt(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:halt)
  }
  
  public interface assert_stmtOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .exp exp = 1;
    boolean hasExp();
    StmtPiqi.exp getExp();
    StmtPiqi.expOrBuilder getExpOrBuilder();
    
    // required .attributes attributes = 2;
    boolean hasAttributes();
    StmtPiqi.attributes getAttributes();
    StmtPiqi.attributesOrBuilder getAttributesOrBuilder();
  }
  public static final class assert_stmt extends
      com.google.protobuf.GeneratedMessage
      implements assert_stmtOrBuilder {
    // Use assert_stmt.newBuilder() to construct.
    private assert_stmt(Builder builder) {
      super(builder);
    }
    private assert_stmt(boolean noInit) {}
    
    private static final assert_stmt defaultInstance;
    public static assert_stmt getDefaultInstance() {
      return defaultInstance;
    }
    
    public assert_stmt getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_assert_stmt_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_assert_stmt_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required .exp exp = 1;
    public static final int EXP_FIELD_NUMBER = 1;
    private StmtPiqi.exp exp_;
    public boolean hasExp() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.exp getExp() {
      return exp_;
    }
    public StmtPiqi.expOrBuilder getExpOrBuilder() {
      return exp_;
    }
    
    // required .attributes attributes = 2;
    public static final int ATTRIBUTES_FIELD_NUMBER = 2;
    private StmtPiqi.attributes attributes_;
    public boolean hasAttributes() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.attributes getAttributes() {
      return attributes_;
    }
    public StmtPiqi.attributesOrBuilder getAttributesOrBuilder() {
      return attributes_;
    }
    
    private void initFields() {
      exp_ = StmtPiqi.exp.getDefaultInstance();
      attributes_ = StmtPiqi.attributes.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasExp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAttributes()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getExp().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getAttributes().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, exp_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, attributes_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, exp_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, attributes_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.assert_stmt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.assert_stmt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.assert_stmt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.assert_stmt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.assert_stmt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.assert_stmt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.assert_stmt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.assert_stmt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.assert_stmt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.assert_stmt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.assert_stmt prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.assert_stmtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_assert_stmt_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_assert_stmt_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.assert_stmt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getExpFieldBuilder();
          getAttributesFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (expBuilder_ == null) {
          exp_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          expBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (attributesBuilder_ == null) {
          attributes_ = StmtPiqi.attributes.getDefaultInstance();
        } else {
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.assert_stmt.getDescriptor();
      }
      
      public StmtPiqi.assert_stmt getDefaultInstanceForType() {
        return StmtPiqi.assert_stmt.getDefaultInstance();
      }
      
      public StmtPiqi.assert_stmt build() {
        StmtPiqi.assert_stmt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.assert_stmt buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.assert_stmt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.assert_stmt buildPartial() {
        StmtPiqi.assert_stmt result = new StmtPiqi.assert_stmt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (expBuilder_ == null) {
          result.exp_ = exp_;
        } else {
          result.exp_ = expBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (attributesBuilder_ == null) {
          result.attributes_ = attributes_;
        } else {
          result.attributes_ = attributesBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.assert_stmt) {
          return mergeFrom((StmtPiqi.assert_stmt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.assert_stmt other) {
        if (other == StmtPiqi.assert_stmt.getDefaultInstance()) return this;
        if (other.hasExp()) {
          mergeExp(other.getExp());
        }
        if (other.hasAttributes()) {
          mergeAttributes(other.getAttributes());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasExp()) {
          
          return false;
        }
        if (!hasAttributes()) {
          
          return false;
        }
        if (!getExp().isInitialized()) {
          
          return false;
        }
        if (!getAttributes().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasExp()) {
                subBuilder.mergeFrom(getExp());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setExp(subBuilder.buildPartial());
              break;
            }
            case 18: {
              StmtPiqi.attributes.Builder subBuilder = StmtPiqi.attributes.newBuilder();
              if (hasAttributes()) {
                subBuilder.mergeFrom(getAttributes());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setAttributes(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .exp exp = 1;
      private StmtPiqi.exp exp_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> expBuilder_;
      public boolean hasExp() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.exp getExp() {
        if (expBuilder_ == null) {
          return exp_;
        } else {
          return expBuilder_.getMessage();
        }
      }
      public Builder setExp(StmtPiqi.exp value) {
        if (expBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          exp_ = value;
          onChanged();
        } else {
          expBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setExp(
          StmtPiqi.exp.Builder builderForValue) {
        if (expBuilder_ == null) {
          exp_ = builderForValue.build();
          onChanged();
        } else {
          expBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeExp(StmtPiqi.exp value) {
        if (expBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              exp_ != StmtPiqi.exp.getDefaultInstance()) {
            exp_ =
              StmtPiqi.exp.newBuilder(exp_).mergeFrom(value).buildPartial();
          } else {
            exp_ = value;
          }
          onChanged();
        } else {
          expBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearExp() {
        if (expBuilder_ == null) {
          exp_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          expBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public StmtPiqi.exp.Builder getExpBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getExpFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getExpOrBuilder() {
        if (expBuilder_ != null) {
          return expBuilder_.getMessageOrBuilder();
        } else {
          return exp_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getExpFieldBuilder() {
        if (expBuilder_ == null) {
          expBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  exp_,
                  getParentForChildren(),
                  isClean());
          exp_ = null;
        }
        return expBuilder_;
      }
      
      // required .attributes attributes = 2;
      private StmtPiqi.attributes attributes_ = StmtPiqi.attributes.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder> attributesBuilder_;
      public boolean hasAttributes() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.attributes getAttributes() {
        if (attributesBuilder_ == null) {
          return attributes_;
        } else {
          return attributesBuilder_.getMessage();
        }
      }
      public Builder setAttributes(StmtPiqi.attributes value) {
        if (attributesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          attributes_ = value;
          onChanged();
        } else {
          attributesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setAttributes(
          StmtPiqi.attributes.Builder builderForValue) {
        if (attributesBuilder_ == null) {
          attributes_ = builderForValue.build();
          onChanged();
        } else {
          attributesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeAttributes(StmtPiqi.attributes value) {
        if (attributesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              attributes_ != StmtPiqi.attributes.getDefaultInstance()) {
            attributes_ =
              StmtPiqi.attributes.newBuilder(attributes_).mergeFrom(value).buildPartial();
          } else {
            attributes_ = value;
          }
          onChanged();
        } else {
          attributesBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearAttributes() {
        if (attributesBuilder_ == null) {
          attributes_ = StmtPiqi.attributes.getDefaultInstance();
          onChanged();
        } else {
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.attributes.Builder getAttributesBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getAttributesFieldBuilder().getBuilder();
      }
      public StmtPiqi.attributesOrBuilder getAttributesOrBuilder() {
        if (attributesBuilder_ != null) {
          return attributesBuilder_.getMessageOrBuilder();
        } else {
          return attributes_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder> 
          getAttributesFieldBuilder() {
        if (attributesBuilder_ == null) {
          attributesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder>(
                  attributes_,
                  getParentForChildren(),
                  isClean());
          attributes_ = null;
        }
        return attributesBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:assert_stmt)
    }
    
    static {
      defaultInstance = new assert_stmt(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:assert_stmt)
  }
  
  public interface assumeOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .exp exp = 1;
    boolean hasExp();
    StmtPiqi.exp getExp();
    StmtPiqi.expOrBuilder getExpOrBuilder();
    
    // required .attributes attributes = 2;
    boolean hasAttributes();
    StmtPiqi.attributes getAttributes();
    StmtPiqi.attributesOrBuilder getAttributesOrBuilder();
  }
  public static final class assume extends
      com.google.protobuf.GeneratedMessage
      implements assumeOrBuilder {
    // Use assume.newBuilder() to construct.
    private assume(Builder builder) {
      super(builder);
    }
    private assume(boolean noInit) {}
    
    private static final assume defaultInstance;
    public static assume getDefaultInstance() {
      return defaultInstance;
    }
    
    public assume getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_assume_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_assume_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required .exp exp = 1;
    public static final int EXP_FIELD_NUMBER = 1;
    private StmtPiqi.exp exp_;
    public boolean hasExp() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.exp getExp() {
      return exp_;
    }
    public StmtPiqi.expOrBuilder getExpOrBuilder() {
      return exp_;
    }
    
    // required .attributes attributes = 2;
    public static final int ATTRIBUTES_FIELD_NUMBER = 2;
    private StmtPiqi.attributes attributes_;
    public boolean hasAttributes() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.attributes getAttributes() {
      return attributes_;
    }
    public StmtPiqi.attributesOrBuilder getAttributesOrBuilder() {
      return attributes_;
    }
    
    private void initFields() {
      exp_ = StmtPiqi.exp.getDefaultInstance();
      attributes_ = StmtPiqi.attributes.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasExp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAttributes()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getExp().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getAttributes().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, exp_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, attributes_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, exp_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, attributes_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.assume parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.assume parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.assume parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.assume parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.assume parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.assume parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.assume parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.assume parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.assume parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.assume parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.assume prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.assumeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_assume_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_assume_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.assume.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getExpFieldBuilder();
          getAttributesFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (expBuilder_ == null) {
          exp_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          expBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (attributesBuilder_ == null) {
          attributes_ = StmtPiqi.attributes.getDefaultInstance();
        } else {
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.assume.getDescriptor();
      }
      
      public StmtPiqi.assume getDefaultInstanceForType() {
        return StmtPiqi.assume.getDefaultInstance();
      }
      
      public StmtPiqi.assume build() {
        StmtPiqi.assume result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.assume buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.assume result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.assume buildPartial() {
        StmtPiqi.assume result = new StmtPiqi.assume(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (expBuilder_ == null) {
          result.exp_ = exp_;
        } else {
          result.exp_ = expBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (attributesBuilder_ == null) {
          result.attributes_ = attributes_;
        } else {
          result.attributes_ = attributesBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.assume) {
          return mergeFrom((StmtPiqi.assume)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.assume other) {
        if (other == StmtPiqi.assume.getDefaultInstance()) return this;
        if (other.hasExp()) {
          mergeExp(other.getExp());
        }
        if (other.hasAttributes()) {
          mergeAttributes(other.getAttributes());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasExp()) {
          
          return false;
        }
        if (!hasAttributes()) {
          
          return false;
        }
        if (!getExp().isInitialized()) {
          
          return false;
        }
        if (!getAttributes().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasExp()) {
                subBuilder.mergeFrom(getExp());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setExp(subBuilder.buildPartial());
              break;
            }
            case 18: {
              StmtPiqi.attributes.Builder subBuilder = StmtPiqi.attributes.newBuilder();
              if (hasAttributes()) {
                subBuilder.mergeFrom(getAttributes());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setAttributes(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .exp exp = 1;
      private StmtPiqi.exp exp_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> expBuilder_;
      public boolean hasExp() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.exp getExp() {
        if (expBuilder_ == null) {
          return exp_;
        } else {
          return expBuilder_.getMessage();
        }
      }
      public Builder setExp(StmtPiqi.exp value) {
        if (expBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          exp_ = value;
          onChanged();
        } else {
          expBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setExp(
          StmtPiqi.exp.Builder builderForValue) {
        if (expBuilder_ == null) {
          exp_ = builderForValue.build();
          onChanged();
        } else {
          expBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeExp(StmtPiqi.exp value) {
        if (expBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              exp_ != StmtPiqi.exp.getDefaultInstance()) {
            exp_ =
              StmtPiqi.exp.newBuilder(exp_).mergeFrom(value).buildPartial();
          } else {
            exp_ = value;
          }
          onChanged();
        } else {
          expBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearExp() {
        if (expBuilder_ == null) {
          exp_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          expBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public StmtPiqi.exp.Builder getExpBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getExpFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getExpOrBuilder() {
        if (expBuilder_ != null) {
          return expBuilder_.getMessageOrBuilder();
        } else {
          return exp_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getExpFieldBuilder() {
        if (expBuilder_ == null) {
          expBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  exp_,
                  getParentForChildren(),
                  isClean());
          exp_ = null;
        }
        return expBuilder_;
      }
      
      // required .attributes attributes = 2;
      private StmtPiqi.attributes attributes_ = StmtPiqi.attributes.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder> attributesBuilder_;
      public boolean hasAttributes() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.attributes getAttributes() {
        if (attributesBuilder_ == null) {
          return attributes_;
        } else {
          return attributesBuilder_.getMessage();
        }
      }
      public Builder setAttributes(StmtPiqi.attributes value) {
        if (attributesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          attributes_ = value;
          onChanged();
        } else {
          attributesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setAttributes(
          StmtPiqi.attributes.Builder builderForValue) {
        if (attributesBuilder_ == null) {
          attributes_ = builderForValue.build();
          onChanged();
        } else {
          attributesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeAttributes(StmtPiqi.attributes value) {
        if (attributesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              attributes_ != StmtPiqi.attributes.getDefaultInstance()) {
            attributes_ =
              StmtPiqi.attributes.newBuilder(attributes_).mergeFrom(value).buildPartial();
          } else {
            attributes_ = value;
          }
          onChanged();
        } else {
          attributesBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearAttributes() {
        if (attributesBuilder_ == null) {
          attributes_ = StmtPiqi.attributes.getDefaultInstance();
          onChanged();
        } else {
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.attributes.Builder getAttributesBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getAttributesFieldBuilder().getBuilder();
      }
      public StmtPiqi.attributesOrBuilder getAttributesOrBuilder() {
        if (attributesBuilder_ != null) {
          return attributesBuilder_.getMessageOrBuilder();
        } else {
          return attributes_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder> 
          getAttributesFieldBuilder() {
        if (attributesBuilder_ == null) {
          attributesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder>(
                  attributes_,
                  getParentForChildren(),
                  isClean());
          attributes_ = null;
        }
        return attributesBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:assume)
    }
    
    static {
      defaultInstance = new assume(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:assume)
  }
  
  public interface commentOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required string string = 1;
    boolean hasString();
    String getString();
    
    // required .attributes attributes = 2;
    boolean hasAttributes();
    StmtPiqi.attributes getAttributes();
    StmtPiqi.attributesOrBuilder getAttributesOrBuilder();
  }
  public static final class comment extends
      com.google.protobuf.GeneratedMessage
      implements commentOrBuilder {
    // Use comment.newBuilder() to construct.
    private comment(Builder builder) {
      super(builder);
    }
    private comment(boolean noInit) {}
    
    private static final comment defaultInstance;
    public static comment getDefaultInstance() {
      return defaultInstance;
    }
    
    public comment getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_comment_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_comment_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required string string = 1;
    public static final int STRING_FIELD_NUMBER = 1;
    private java.lang.Object string_;
    public boolean hasString() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getString() {
      java.lang.Object ref = string_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          string_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getStringBytes() {
      java.lang.Object ref = string_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        string_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // required .attributes attributes = 2;
    public static final int ATTRIBUTES_FIELD_NUMBER = 2;
    private StmtPiqi.attributes attributes_;
    public boolean hasAttributes() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.attributes getAttributes() {
      return attributes_;
    }
    public StmtPiqi.attributesOrBuilder getAttributesOrBuilder() {
      return attributes_;
    }
    
    private void initFields() {
      string_ = "";
      attributes_ = StmtPiqi.attributes.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasString()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAttributes()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getAttributes().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getStringBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, attributes_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getStringBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, attributes_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.comment parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.comment parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.comment parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.comment parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.comment parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.comment parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.comment parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.comment parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.comment parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.comment parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.comment prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.commentOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_comment_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_comment_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.comment.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getAttributesFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        string_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (attributesBuilder_ == null) {
          attributes_ = StmtPiqi.attributes.getDefaultInstance();
        } else {
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.comment.getDescriptor();
      }
      
      public StmtPiqi.comment getDefaultInstanceForType() {
        return StmtPiqi.comment.getDefaultInstance();
      }
      
      public StmtPiqi.comment build() {
        StmtPiqi.comment result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.comment buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.comment result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.comment buildPartial() {
        StmtPiqi.comment result = new StmtPiqi.comment(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.string_ = string_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (attributesBuilder_ == null) {
          result.attributes_ = attributes_;
        } else {
          result.attributes_ = attributesBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.comment) {
          return mergeFrom((StmtPiqi.comment)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.comment other) {
        if (other == StmtPiqi.comment.getDefaultInstance()) return this;
        if (other.hasString()) {
          setString(other.getString());
        }
        if (other.hasAttributes()) {
          mergeAttributes(other.getAttributes());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasString()) {
          
          return false;
        }
        if (!hasAttributes()) {
          
          return false;
        }
        if (!getAttributes().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              string_ = input.readBytes();
              break;
            }
            case 18: {
              StmtPiqi.attributes.Builder subBuilder = StmtPiqi.attributes.newBuilder();
              if (hasAttributes()) {
                subBuilder.mergeFrom(getAttributes());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setAttributes(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required string string = 1;
      private java.lang.Object string_ = "";
      public boolean hasString() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getString() {
        java.lang.Object ref = string_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          string_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setString(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        string_ = value;
        onChanged();
        return this;
      }
      public Builder clearString() {
        bitField0_ = (bitField0_ & ~0x00000001);
        string_ = getDefaultInstance().getString();
        onChanged();
        return this;
      }
      void setString(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        string_ = value;
        onChanged();
      }
      
      // required .attributes attributes = 2;
      private StmtPiqi.attributes attributes_ = StmtPiqi.attributes.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder> attributesBuilder_;
      public boolean hasAttributes() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.attributes getAttributes() {
        if (attributesBuilder_ == null) {
          return attributes_;
        } else {
          return attributesBuilder_.getMessage();
        }
      }
      public Builder setAttributes(StmtPiqi.attributes value) {
        if (attributesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          attributes_ = value;
          onChanged();
        } else {
          attributesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setAttributes(
          StmtPiqi.attributes.Builder builderForValue) {
        if (attributesBuilder_ == null) {
          attributes_ = builderForValue.build();
          onChanged();
        } else {
          attributesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeAttributes(StmtPiqi.attributes value) {
        if (attributesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              attributes_ != StmtPiqi.attributes.getDefaultInstance()) {
            attributes_ =
              StmtPiqi.attributes.newBuilder(attributes_).mergeFrom(value).buildPartial();
          } else {
            attributes_ = value;
          }
          onChanged();
        } else {
          attributesBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearAttributes() {
        if (attributesBuilder_ == null) {
          attributes_ = StmtPiqi.attributes.getDefaultInstance();
          onChanged();
        } else {
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.attributes.Builder getAttributesBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getAttributesFieldBuilder().getBuilder();
      }
      public StmtPiqi.attributesOrBuilder getAttributesOrBuilder() {
        if (attributesBuilder_ != null) {
          return attributesBuilder_.getMessageOrBuilder();
        } else {
          return attributes_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder> 
          getAttributesFieldBuilder() {
        if (attributesBuilder_ == null) {
          attributesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder>(
                  attributes_,
                  getParentForChildren(),
                  isClean());
          attributes_ = null;
        }
        return attributesBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:comment)
    }
    
    static {
      defaultInstance = new comment(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:comment)
  }
  
  public interface specialOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required string string = 1;
    boolean hasString();
    String getString();
    
    // optional .defuse defuse = 2;
    boolean hasDefuse();
    StmtPiqi.defuse getDefuse();
    StmtPiqi.defuseOrBuilder getDefuseOrBuilder();
    
    // required .attributes attributes = 3;
    boolean hasAttributes();
    StmtPiqi.attributes getAttributes();
    StmtPiqi.attributesOrBuilder getAttributesOrBuilder();
  }
  public static final class special extends
      com.google.protobuf.GeneratedMessage
      implements specialOrBuilder {
    // Use special.newBuilder() to construct.
    private special(Builder builder) {
      super(builder);
    }
    private special(boolean noInit) {}
    
    private static final special defaultInstance;
    public static special getDefaultInstance() {
      return defaultInstance;
    }
    
    public special getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_special_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_special_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required string string = 1;
    public static final int STRING_FIELD_NUMBER = 1;
    private java.lang.Object string_;
    public boolean hasString() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getString() {
      java.lang.Object ref = string_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          string_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getStringBytes() {
      java.lang.Object ref = string_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        string_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional .defuse defuse = 2;
    public static final int DEFUSE_FIELD_NUMBER = 2;
    private StmtPiqi.defuse defuse_;
    public boolean hasDefuse() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.defuse getDefuse() {
      return defuse_;
    }
    public StmtPiqi.defuseOrBuilder getDefuseOrBuilder() {
      return defuse_;
    }
    
    // required .attributes attributes = 3;
    public static final int ATTRIBUTES_FIELD_NUMBER = 3;
    private StmtPiqi.attributes attributes_;
    public boolean hasAttributes() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public StmtPiqi.attributes getAttributes() {
      return attributes_;
    }
    public StmtPiqi.attributesOrBuilder getAttributesOrBuilder() {
      return attributes_;
    }
    
    private void initFields() {
      string_ = "";
      defuse_ = StmtPiqi.defuse.getDefaultInstance();
      attributes_ = StmtPiqi.attributes.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasString()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAttributes()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasDefuse()) {
        if (!getDefuse().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!getAttributes().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getStringBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, defuse_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, attributes_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getStringBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, defuse_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, attributes_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.special parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.special parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.special parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.special parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.special parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.special parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.special parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.special parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.special parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.special parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.special prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.specialOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_special_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_special_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.special.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getDefuseFieldBuilder();
          getAttributesFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        string_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (defuseBuilder_ == null) {
          defuse_ = StmtPiqi.defuse.getDefaultInstance();
        } else {
          defuseBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (attributesBuilder_ == null) {
          attributes_ = StmtPiqi.attributes.getDefaultInstance();
        } else {
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.special.getDescriptor();
      }
      
      public StmtPiqi.special getDefaultInstanceForType() {
        return StmtPiqi.special.getDefaultInstance();
      }
      
      public StmtPiqi.special build() {
        StmtPiqi.special result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.special buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.special result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.special buildPartial() {
        StmtPiqi.special result = new StmtPiqi.special(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.string_ = string_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (defuseBuilder_ == null) {
          result.defuse_ = defuse_;
        } else {
          result.defuse_ = defuseBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (attributesBuilder_ == null) {
          result.attributes_ = attributes_;
        } else {
          result.attributes_ = attributesBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.special) {
          return mergeFrom((StmtPiqi.special)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.special other) {
        if (other == StmtPiqi.special.getDefaultInstance()) return this;
        if (other.hasString()) {
          setString(other.getString());
        }
        if (other.hasDefuse()) {
          mergeDefuse(other.getDefuse());
        }
        if (other.hasAttributes()) {
          mergeAttributes(other.getAttributes());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasString()) {
          
          return false;
        }
        if (!hasAttributes()) {
          
          return false;
        }
        if (hasDefuse()) {
          if (!getDefuse().isInitialized()) {
            
            return false;
          }
        }
        if (!getAttributes().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              string_ = input.readBytes();
              break;
            }
            case 18: {
              StmtPiqi.defuse.Builder subBuilder = StmtPiqi.defuse.newBuilder();
              if (hasDefuse()) {
                subBuilder.mergeFrom(getDefuse());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setDefuse(subBuilder.buildPartial());
              break;
            }
            case 26: {
              StmtPiqi.attributes.Builder subBuilder = StmtPiqi.attributes.newBuilder();
              if (hasAttributes()) {
                subBuilder.mergeFrom(getAttributes());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setAttributes(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required string string = 1;
      private java.lang.Object string_ = "";
      public boolean hasString() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getString() {
        java.lang.Object ref = string_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          string_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setString(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        string_ = value;
        onChanged();
        return this;
      }
      public Builder clearString() {
        bitField0_ = (bitField0_ & ~0x00000001);
        string_ = getDefaultInstance().getString();
        onChanged();
        return this;
      }
      void setString(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        string_ = value;
        onChanged();
      }
      
      // optional .defuse defuse = 2;
      private StmtPiqi.defuse defuse_ = StmtPiqi.defuse.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.defuse, StmtPiqi.defuse.Builder, StmtPiqi.defuseOrBuilder> defuseBuilder_;
      public boolean hasDefuse() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.defuse getDefuse() {
        if (defuseBuilder_ == null) {
          return defuse_;
        } else {
          return defuseBuilder_.getMessage();
        }
      }
      public Builder setDefuse(StmtPiqi.defuse value) {
        if (defuseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          defuse_ = value;
          onChanged();
        } else {
          defuseBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setDefuse(
          StmtPiqi.defuse.Builder builderForValue) {
        if (defuseBuilder_ == null) {
          defuse_ = builderForValue.build();
          onChanged();
        } else {
          defuseBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeDefuse(StmtPiqi.defuse value) {
        if (defuseBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              defuse_ != StmtPiqi.defuse.getDefaultInstance()) {
            defuse_ =
              StmtPiqi.defuse.newBuilder(defuse_).mergeFrom(value).buildPartial();
          } else {
            defuse_ = value;
          }
          onChanged();
        } else {
          defuseBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearDefuse() {
        if (defuseBuilder_ == null) {
          defuse_ = StmtPiqi.defuse.getDefaultInstance();
          onChanged();
        } else {
          defuseBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.defuse.Builder getDefuseBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getDefuseFieldBuilder().getBuilder();
      }
      public StmtPiqi.defuseOrBuilder getDefuseOrBuilder() {
        if (defuseBuilder_ != null) {
          return defuseBuilder_.getMessageOrBuilder();
        } else {
          return defuse_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.defuse, StmtPiqi.defuse.Builder, StmtPiqi.defuseOrBuilder> 
          getDefuseFieldBuilder() {
        if (defuseBuilder_ == null) {
          defuseBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.defuse, StmtPiqi.defuse.Builder, StmtPiqi.defuseOrBuilder>(
                  defuse_,
                  getParentForChildren(),
                  isClean());
          defuse_ = null;
        }
        return defuseBuilder_;
      }
      
      // required .attributes attributes = 3;
      private StmtPiqi.attributes attributes_ = StmtPiqi.attributes.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder> attributesBuilder_;
      public boolean hasAttributes() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public StmtPiqi.attributes getAttributes() {
        if (attributesBuilder_ == null) {
          return attributes_;
        } else {
          return attributesBuilder_.getMessage();
        }
      }
      public Builder setAttributes(StmtPiqi.attributes value) {
        if (attributesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          attributes_ = value;
          onChanged();
        } else {
          attributesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder setAttributes(
          StmtPiqi.attributes.Builder builderForValue) {
        if (attributesBuilder_ == null) {
          attributes_ = builderForValue.build();
          onChanged();
        } else {
          attributesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder mergeAttributes(StmtPiqi.attributes value) {
        if (attributesBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              attributes_ != StmtPiqi.attributes.getDefaultInstance()) {
            attributes_ =
              StmtPiqi.attributes.newBuilder(attributes_).mergeFrom(value).buildPartial();
          } else {
            attributes_ = value;
          }
          onChanged();
        } else {
          attributesBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder clearAttributes() {
        if (attributesBuilder_ == null) {
          attributes_ = StmtPiqi.attributes.getDefaultInstance();
          onChanged();
        } else {
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      public StmtPiqi.attributes.Builder getAttributesBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getAttributesFieldBuilder().getBuilder();
      }
      public StmtPiqi.attributesOrBuilder getAttributesOrBuilder() {
        if (attributesBuilder_ != null) {
          return attributesBuilder_.getMessageOrBuilder();
        } else {
          return attributes_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder> 
          getAttributesFieldBuilder() {
        if (attributesBuilder_ == null) {
          attributesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.attributes, StmtPiqi.attributes.Builder, StmtPiqi.attributesOrBuilder>(
                  attributes_,
                  getParentForChildren(),
                  isClean());
          attributes_ = null;
        }
        return attributesBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:special)
    }
    
    static {
      defaultInstance = new special(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:special)
  }
  
  public interface typOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // optional sint32 reg = 1;
    boolean hasReg();
    int getReg();
    
    // optional .tmem tmem = 2;
    boolean hasTmem();
    StmtPiqi.tmem getTmem();
    StmtPiqi.tmemOrBuilder getTmemOrBuilder();
    
    // optional .array array = 3;
    boolean hasArray();
    StmtPiqi.array getArray();
    StmtPiqi.arrayOrBuilder getArrayOrBuilder();
  }
  public static final class typ extends
      com.google.protobuf.GeneratedMessage
      implements typOrBuilder {
    // Use typ.newBuilder() to construct.
    private typ(Builder builder) {
      super(builder);
    }
    private typ(boolean noInit) {}
    
    private static final typ defaultInstance;
    public static typ getDefaultInstance() {
      return defaultInstance;
    }
    
    public typ getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_typ_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_typ_fieldAccessorTable;
    }
    
    private int bitField0_;
    // optional sint32 reg = 1;
    public static final int REG_FIELD_NUMBER = 1;
    private int reg_;
    public boolean hasReg() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public int getReg() {
      return reg_;
    }
    
    // optional .tmem tmem = 2;
    public static final int TMEM_FIELD_NUMBER = 2;
    private StmtPiqi.tmem tmem_;
    public boolean hasTmem() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.tmem getTmem() {
      return tmem_;
    }
    public StmtPiqi.tmemOrBuilder getTmemOrBuilder() {
      return tmem_;
    }
    
    // optional .array array = 3;
    public static final int ARRAY_FIELD_NUMBER = 3;
    private StmtPiqi.array array_;
    public boolean hasArray() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public StmtPiqi.array getArray() {
      return array_;
    }
    public StmtPiqi.arrayOrBuilder getArrayOrBuilder() {
      return array_;
    }
    
    private void initFields() {
      reg_ = 0;
      tmem_ = StmtPiqi.tmem.getDefaultInstance();
      array_ = StmtPiqi.array.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (hasTmem()) {
        if (!getTmem().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasArray()) {
        if (!getArray().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeSInt32(1, reg_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, tmem_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, array_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeSInt32Size(1, reg_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, tmem_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, array_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.typ parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.typ parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.typ parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.typ parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.typ parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.typ parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.typ parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.typ parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.typ parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.typ parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.typ prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.typOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_typ_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_typ_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.typ.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getTmemFieldBuilder();
          getArrayFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        reg_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (tmemBuilder_ == null) {
          tmem_ = StmtPiqi.tmem.getDefaultInstance();
        } else {
          tmemBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (arrayBuilder_ == null) {
          array_ = StmtPiqi.array.getDefaultInstance();
        } else {
          arrayBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.typ.getDescriptor();
      }
      
      public StmtPiqi.typ getDefaultInstanceForType() {
        return StmtPiqi.typ.getDefaultInstance();
      }
      
      public StmtPiqi.typ build() {
        StmtPiqi.typ result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.typ buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.typ result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.typ buildPartial() {
        StmtPiqi.typ result = new StmtPiqi.typ(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.reg_ = reg_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (tmemBuilder_ == null) {
          result.tmem_ = tmem_;
        } else {
          result.tmem_ = tmemBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (arrayBuilder_ == null) {
          result.array_ = array_;
        } else {
          result.array_ = arrayBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.typ) {
          return mergeFrom((StmtPiqi.typ)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.typ other) {
        if (other == StmtPiqi.typ.getDefaultInstance()) return this;
        if (other.hasReg()) {
          setReg(other.getReg());
        }
        if (other.hasTmem()) {
          mergeTmem(other.getTmem());
        }
        if (other.hasArray()) {
          mergeArray(other.getArray());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (hasTmem()) {
          if (!getTmem().isInitialized()) {
            
            return false;
          }
        }
        if (hasArray()) {
          if (!getArray().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              reg_ = input.readSInt32();
              break;
            }
            case 18: {
              StmtPiqi.tmem.Builder subBuilder = StmtPiqi.tmem.newBuilder();
              if (hasTmem()) {
                subBuilder.mergeFrom(getTmem());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setTmem(subBuilder.buildPartial());
              break;
            }
            case 26: {
              StmtPiqi.array.Builder subBuilder = StmtPiqi.array.newBuilder();
              if (hasArray()) {
                subBuilder.mergeFrom(getArray());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setArray(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // optional sint32 reg = 1;
      private int reg_ ;
      public boolean hasReg() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public int getReg() {
        return reg_;
      }
      public Builder setReg(int value) {
        bitField0_ |= 0x00000001;
        reg_ = value;
        onChanged();
        return this;
      }
      public Builder clearReg() {
        bitField0_ = (bitField0_ & ~0x00000001);
        reg_ = 0;
        onChanged();
        return this;
      }
      
      // optional .tmem tmem = 2;
      private StmtPiqi.tmem tmem_ = StmtPiqi.tmem.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.tmem, StmtPiqi.tmem.Builder, StmtPiqi.tmemOrBuilder> tmemBuilder_;
      public boolean hasTmem() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.tmem getTmem() {
        if (tmemBuilder_ == null) {
          return tmem_;
        } else {
          return tmemBuilder_.getMessage();
        }
      }
      public Builder setTmem(StmtPiqi.tmem value) {
        if (tmemBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tmem_ = value;
          onChanged();
        } else {
          tmemBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setTmem(
          StmtPiqi.tmem.Builder builderForValue) {
        if (tmemBuilder_ == null) {
          tmem_ = builderForValue.build();
          onChanged();
        } else {
          tmemBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeTmem(StmtPiqi.tmem value) {
        if (tmemBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              tmem_ != StmtPiqi.tmem.getDefaultInstance()) {
            tmem_ =
              StmtPiqi.tmem.newBuilder(tmem_).mergeFrom(value).buildPartial();
          } else {
            tmem_ = value;
          }
          onChanged();
        } else {
          tmemBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearTmem() {
        if (tmemBuilder_ == null) {
          tmem_ = StmtPiqi.tmem.getDefaultInstance();
          onChanged();
        } else {
          tmemBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.tmem.Builder getTmemBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getTmemFieldBuilder().getBuilder();
      }
      public StmtPiqi.tmemOrBuilder getTmemOrBuilder() {
        if (tmemBuilder_ != null) {
          return tmemBuilder_.getMessageOrBuilder();
        } else {
          return tmem_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.tmem, StmtPiqi.tmem.Builder, StmtPiqi.tmemOrBuilder> 
          getTmemFieldBuilder() {
        if (tmemBuilder_ == null) {
          tmemBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.tmem, StmtPiqi.tmem.Builder, StmtPiqi.tmemOrBuilder>(
                  tmem_,
                  getParentForChildren(),
                  isClean());
          tmem_ = null;
        }
        return tmemBuilder_;
      }
      
      // optional .array array = 3;
      private StmtPiqi.array array_ = StmtPiqi.array.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.array, StmtPiqi.array.Builder, StmtPiqi.arrayOrBuilder> arrayBuilder_;
      public boolean hasArray() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public StmtPiqi.array getArray() {
        if (arrayBuilder_ == null) {
          return array_;
        } else {
          return arrayBuilder_.getMessage();
        }
      }
      public Builder setArray(StmtPiqi.array value) {
        if (arrayBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          array_ = value;
          onChanged();
        } else {
          arrayBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder setArray(
          StmtPiqi.array.Builder builderForValue) {
        if (arrayBuilder_ == null) {
          array_ = builderForValue.build();
          onChanged();
        } else {
          arrayBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder mergeArray(StmtPiqi.array value) {
        if (arrayBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              array_ != StmtPiqi.array.getDefaultInstance()) {
            array_ =
              StmtPiqi.array.newBuilder(array_).mergeFrom(value).buildPartial();
          } else {
            array_ = value;
          }
          onChanged();
        } else {
          arrayBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder clearArray() {
        if (arrayBuilder_ == null) {
          array_ = StmtPiqi.array.getDefaultInstance();
          onChanged();
        } else {
          arrayBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      public StmtPiqi.array.Builder getArrayBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getArrayFieldBuilder().getBuilder();
      }
      public StmtPiqi.arrayOrBuilder getArrayOrBuilder() {
        if (arrayBuilder_ != null) {
          return arrayBuilder_.getMessageOrBuilder();
        } else {
          return array_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.array, StmtPiqi.array.Builder, StmtPiqi.arrayOrBuilder> 
          getArrayFieldBuilder() {
        if (arrayBuilder_ == null) {
          arrayBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.array, StmtPiqi.array.Builder, StmtPiqi.arrayOrBuilder>(
                  array_,
                  getParentForChildren(),
                  isClean());
          array_ = null;
        }
        return arrayBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:typ)
    }
    
    static {
      defaultInstance = new typ(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:typ)
  }
  
  public interface tmemOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .typ index_type = 1;
    boolean hasIndexType();
    StmtPiqi.typ getIndexType();
    StmtPiqi.typOrBuilder getIndexTypeOrBuilder();
    
    // required .typ element_type = 2;
    boolean hasElementType();
    StmtPiqi.typ getElementType();
    StmtPiqi.typOrBuilder getElementTypeOrBuilder();
  }
  public static final class tmem extends
      com.google.protobuf.GeneratedMessage
      implements tmemOrBuilder {
    // Use tmem.newBuilder() to construct.
    private tmem(Builder builder) {
      super(builder);
    }
    private tmem(boolean noInit) {}
    
    private static final tmem defaultInstance;
    public static tmem getDefaultInstance() {
      return defaultInstance;
    }
    
    public tmem getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_tmem_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_tmem_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required .typ index_type = 1;
    public static final int INDEX_TYPE_FIELD_NUMBER = 1;
    private StmtPiqi.typ indexType_;
    public boolean hasIndexType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.typ getIndexType() {
      return indexType_;
    }
    public StmtPiqi.typOrBuilder getIndexTypeOrBuilder() {
      return indexType_;
    }
    
    // required .typ element_type = 2;
    public static final int ELEMENT_TYPE_FIELD_NUMBER = 2;
    private StmtPiqi.typ elementType_;
    public boolean hasElementType() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.typ getElementType() {
      return elementType_;
    }
    public StmtPiqi.typOrBuilder getElementTypeOrBuilder() {
      return elementType_;
    }
    
    private void initFields() {
      indexType_ = StmtPiqi.typ.getDefaultInstance();
      elementType_ = StmtPiqi.typ.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasIndexType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasElementType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getIndexType().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getElementType().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, indexType_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, elementType_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, indexType_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, elementType_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.tmem parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.tmem parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.tmem parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.tmem parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.tmem parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.tmem parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.tmem parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.tmem parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.tmem parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.tmem parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.tmem prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.tmemOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_tmem_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_tmem_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.tmem.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getIndexTypeFieldBuilder();
          getElementTypeFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (indexTypeBuilder_ == null) {
          indexType_ = StmtPiqi.typ.getDefaultInstance();
        } else {
          indexTypeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (elementTypeBuilder_ == null) {
          elementType_ = StmtPiqi.typ.getDefaultInstance();
        } else {
          elementTypeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.tmem.getDescriptor();
      }
      
      public StmtPiqi.tmem getDefaultInstanceForType() {
        return StmtPiqi.tmem.getDefaultInstance();
      }
      
      public StmtPiqi.tmem build() {
        StmtPiqi.tmem result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.tmem buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.tmem result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.tmem buildPartial() {
        StmtPiqi.tmem result = new StmtPiqi.tmem(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (indexTypeBuilder_ == null) {
          result.indexType_ = indexType_;
        } else {
          result.indexType_ = indexTypeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (elementTypeBuilder_ == null) {
          result.elementType_ = elementType_;
        } else {
          result.elementType_ = elementTypeBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.tmem) {
          return mergeFrom((StmtPiqi.tmem)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.tmem other) {
        if (other == StmtPiqi.tmem.getDefaultInstance()) return this;
        if (other.hasIndexType()) {
          mergeIndexType(other.getIndexType());
        }
        if (other.hasElementType()) {
          mergeElementType(other.getElementType());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasIndexType()) {
          
          return false;
        }
        if (!hasElementType()) {
          
          return false;
        }
        if (!getIndexType().isInitialized()) {
          
          return false;
        }
        if (!getElementType().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.typ.Builder subBuilder = StmtPiqi.typ.newBuilder();
              if (hasIndexType()) {
                subBuilder.mergeFrom(getIndexType());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setIndexType(subBuilder.buildPartial());
              break;
            }
            case 18: {
              StmtPiqi.typ.Builder subBuilder = StmtPiqi.typ.newBuilder();
              if (hasElementType()) {
                subBuilder.mergeFrom(getElementType());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setElementType(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .typ index_type = 1;
      private StmtPiqi.typ indexType_ = StmtPiqi.typ.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder> indexTypeBuilder_;
      public boolean hasIndexType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.typ getIndexType() {
        if (indexTypeBuilder_ == null) {
          return indexType_;
        } else {
          return indexTypeBuilder_.getMessage();
        }
      }
      public Builder setIndexType(StmtPiqi.typ value) {
        if (indexTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          indexType_ = value;
          onChanged();
        } else {
          indexTypeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setIndexType(
          StmtPiqi.typ.Builder builderForValue) {
        if (indexTypeBuilder_ == null) {
          indexType_ = builderForValue.build();
          onChanged();
        } else {
          indexTypeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeIndexType(StmtPiqi.typ value) {
        if (indexTypeBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              indexType_ != StmtPiqi.typ.getDefaultInstance()) {
            indexType_ =
              StmtPiqi.typ.newBuilder(indexType_).mergeFrom(value).buildPartial();
          } else {
            indexType_ = value;
          }
          onChanged();
        } else {
          indexTypeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearIndexType() {
        if (indexTypeBuilder_ == null) {
          indexType_ = StmtPiqi.typ.getDefaultInstance();
          onChanged();
        } else {
          indexTypeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public StmtPiqi.typ.Builder getIndexTypeBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getIndexTypeFieldBuilder().getBuilder();
      }
      public StmtPiqi.typOrBuilder getIndexTypeOrBuilder() {
        if (indexTypeBuilder_ != null) {
          return indexTypeBuilder_.getMessageOrBuilder();
        } else {
          return indexType_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder> 
          getIndexTypeFieldBuilder() {
        if (indexTypeBuilder_ == null) {
          indexTypeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder>(
                  indexType_,
                  getParentForChildren(),
                  isClean());
          indexType_ = null;
        }
        return indexTypeBuilder_;
      }
      
      // required .typ element_type = 2;
      private StmtPiqi.typ elementType_ = StmtPiqi.typ.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder> elementTypeBuilder_;
      public boolean hasElementType() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.typ getElementType() {
        if (elementTypeBuilder_ == null) {
          return elementType_;
        } else {
          return elementTypeBuilder_.getMessage();
        }
      }
      public Builder setElementType(StmtPiqi.typ value) {
        if (elementTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          elementType_ = value;
          onChanged();
        } else {
          elementTypeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setElementType(
          StmtPiqi.typ.Builder builderForValue) {
        if (elementTypeBuilder_ == null) {
          elementType_ = builderForValue.build();
          onChanged();
        } else {
          elementTypeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeElementType(StmtPiqi.typ value) {
        if (elementTypeBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              elementType_ != StmtPiqi.typ.getDefaultInstance()) {
            elementType_ =
              StmtPiqi.typ.newBuilder(elementType_).mergeFrom(value).buildPartial();
          } else {
            elementType_ = value;
          }
          onChanged();
        } else {
          elementTypeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearElementType() {
        if (elementTypeBuilder_ == null) {
          elementType_ = StmtPiqi.typ.getDefaultInstance();
          onChanged();
        } else {
          elementTypeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.typ.Builder getElementTypeBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getElementTypeFieldBuilder().getBuilder();
      }
      public StmtPiqi.typOrBuilder getElementTypeOrBuilder() {
        if (elementTypeBuilder_ != null) {
          return elementTypeBuilder_.getMessageOrBuilder();
        } else {
          return elementType_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder> 
          getElementTypeFieldBuilder() {
        if (elementTypeBuilder_ == null) {
          elementTypeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder>(
                  elementType_,
                  getParentForChildren(),
                  isClean());
          elementType_ = null;
        }
        return elementTypeBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:tmem)
    }
    
    static {
      defaultInstance = new tmem(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:tmem)
  }
  
  public interface arrayOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .typ index_type = 1;
    boolean hasIndexType();
    StmtPiqi.typ getIndexType();
    StmtPiqi.typOrBuilder getIndexTypeOrBuilder();
    
    // required .typ element_type = 2;
    boolean hasElementType();
    StmtPiqi.typ getElementType();
    StmtPiqi.typOrBuilder getElementTypeOrBuilder();
  }
  public static final class array extends
      com.google.protobuf.GeneratedMessage
      implements arrayOrBuilder {
    // Use array.newBuilder() to construct.
    private array(Builder builder) {
      super(builder);
    }
    private array(boolean noInit) {}
    
    private static final array defaultInstance;
    public static array getDefaultInstance() {
      return defaultInstance;
    }
    
    public array getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_array_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_array_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required .typ index_type = 1;
    public static final int INDEX_TYPE_FIELD_NUMBER = 1;
    private StmtPiqi.typ indexType_;
    public boolean hasIndexType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.typ getIndexType() {
      return indexType_;
    }
    public StmtPiqi.typOrBuilder getIndexTypeOrBuilder() {
      return indexType_;
    }
    
    // required .typ element_type = 2;
    public static final int ELEMENT_TYPE_FIELD_NUMBER = 2;
    private StmtPiqi.typ elementType_;
    public boolean hasElementType() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.typ getElementType() {
      return elementType_;
    }
    public StmtPiqi.typOrBuilder getElementTypeOrBuilder() {
      return elementType_;
    }
    
    private void initFields() {
      indexType_ = StmtPiqi.typ.getDefaultInstance();
      elementType_ = StmtPiqi.typ.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasIndexType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasElementType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getIndexType().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getElementType().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, indexType_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, elementType_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, indexType_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, elementType_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.array parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.array parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.array parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.array parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.array parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.array parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.array parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.array parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.array parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.array parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.array prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.arrayOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_array_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_array_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.array.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getIndexTypeFieldBuilder();
          getElementTypeFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (indexTypeBuilder_ == null) {
          indexType_ = StmtPiqi.typ.getDefaultInstance();
        } else {
          indexTypeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (elementTypeBuilder_ == null) {
          elementType_ = StmtPiqi.typ.getDefaultInstance();
        } else {
          elementTypeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.array.getDescriptor();
      }
      
      public StmtPiqi.array getDefaultInstanceForType() {
        return StmtPiqi.array.getDefaultInstance();
      }
      
      public StmtPiqi.array build() {
        StmtPiqi.array result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.array buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.array result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.array buildPartial() {
        StmtPiqi.array result = new StmtPiqi.array(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (indexTypeBuilder_ == null) {
          result.indexType_ = indexType_;
        } else {
          result.indexType_ = indexTypeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (elementTypeBuilder_ == null) {
          result.elementType_ = elementType_;
        } else {
          result.elementType_ = elementTypeBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.array) {
          return mergeFrom((StmtPiqi.array)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.array other) {
        if (other == StmtPiqi.array.getDefaultInstance()) return this;
        if (other.hasIndexType()) {
          mergeIndexType(other.getIndexType());
        }
        if (other.hasElementType()) {
          mergeElementType(other.getElementType());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasIndexType()) {
          
          return false;
        }
        if (!hasElementType()) {
          
          return false;
        }
        if (!getIndexType().isInitialized()) {
          
          return false;
        }
        if (!getElementType().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.typ.Builder subBuilder = StmtPiqi.typ.newBuilder();
              if (hasIndexType()) {
                subBuilder.mergeFrom(getIndexType());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setIndexType(subBuilder.buildPartial());
              break;
            }
            case 18: {
              StmtPiqi.typ.Builder subBuilder = StmtPiqi.typ.newBuilder();
              if (hasElementType()) {
                subBuilder.mergeFrom(getElementType());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setElementType(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .typ index_type = 1;
      private StmtPiqi.typ indexType_ = StmtPiqi.typ.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder> indexTypeBuilder_;
      public boolean hasIndexType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.typ getIndexType() {
        if (indexTypeBuilder_ == null) {
          return indexType_;
        } else {
          return indexTypeBuilder_.getMessage();
        }
      }
      public Builder setIndexType(StmtPiqi.typ value) {
        if (indexTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          indexType_ = value;
          onChanged();
        } else {
          indexTypeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setIndexType(
          StmtPiqi.typ.Builder builderForValue) {
        if (indexTypeBuilder_ == null) {
          indexType_ = builderForValue.build();
          onChanged();
        } else {
          indexTypeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeIndexType(StmtPiqi.typ value) {
        if (indexTypeBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              indexType_ != StmtPiqi.typ.getDefaultInstance()) {
            indexType_ =
              StmtPiqi.typ.newBuilder(indexType_).mergeFrom(value).buildPartial();
          } else {
            indexType_ = value;
          }
          onChanged();
        } else {
          indexTypeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearIndexType() {
        if (indexTypeBuilder_ == null) {
          indexType_ = StmtPiqi.typ.getDefaultInstance();
          onChanged();
        } else {
          indexTypeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public StmtPiqi.typ.Builder getIndexTypeBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getIndexTypeFieldBuilder().getBuilder();
      }
      public StmtPiqi.typOrBuilder getIndexTypeOrBuilder() {
        if (indexTypeBuilder_ != null) {
          return indexTypeBuilder_.getMessageOrBuilder();
        } else {
          return indexType_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder> 
          getIndexTypeFieldBuilder() {
        if (indexTypeBuilder_ == null) {
          indexTypeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder>(
                  indexType_,
                  getParentForChildren(),
                  isClean());
          indexType_ = null;
        }
        return indexTypeBuilder_;
      }
      
      // required .typ element_type = 2;
      private StmtPiqi.typ elementType_ = StmtPiqi.typ.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder> elementTypeBuilder_;
      public boolean hasElementType() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.typ getElementType() {
        if (elementTypeBuilder_ == null) {
          return elementType_;
        } else {
          return elementTypeBuilder_.getMessage();
        }
      }
      public Builder setElementType(StmtPiqi.typ value) {
        if (elementTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          elementType_ = value;
          onChanged();
        } else {
          elementTypeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setElementType(
          StmtPiqi.typ.Builder builderForValue) {
        if (elementTypeBuilder_ == null) {
          elementType_ = builderForValue.build();
          onChanged();
        } else {
          elementTypeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeElementType(StmtPiqi.typ value) {
        if (elementTypeBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              elementType_ != StmtPiqi.typ.getDefaultInstance()) {
            elementType_ =
              StmtPiqi.typ.newBuilder(elementType_).mergeFrom(value).buildPartial();
          } else {
            elementType_ = value;
          }
          onChanged();
        } else {
          elementTypeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearElementType() {
        if (elementTypeBuilder_ == null) {
          elementType_ = StmtPiqi.typ.getDefaultInstance();
          onChanged();
        } else {
          elementTypeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.typ.Builder getElementTypeBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getElementTypeFieldBuilder().getBuilder();
      }
      public StmtPiqi.typOrBuilder getElementTypeOrBuilder() {
        if (elementTypeBuilder_ != null) {
          return elementTypeBuilder_.getMessageOrBuilder();
        } else {
          return elementType_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder> 
          getElementTypeFieldBuilder() {
        if (elementTypeBuilder_ == null) {
          elementTypeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder>(
                  elementType_,
                  getParentForChildren(),
                  isClean());
          elementType_ = null;
        }
        return elementTypeBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:array)
    }
    
    static {
      defaultInstance = new array(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:array)
  }
  
  public interface labelOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // optional string name = 1;
    boolean hasName();
    String getName();
    
    // optional sint64 addr = 2;
    boolean hasAddr();
    long getAddr();
  }
  public static final class label extends
      com.google.protobuf.GeneratedMessage
      implements labelOrBuilder {
    // Use label.newBuilder() to construct.
    private label(Builder builder) {
      super(builder);
    }
    private label(boolean noInit) {}
    
    private static final label defaultInstance;
    public static label getDefaultInstance() {
      return defaultInstance;
    }
    
    public label getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_label_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_label_fieldAccessorTable;
    }
    
    private int bitField0_;
    // optional string name = 1;
    public static final int NAME_FIELD_NUMBER = 1;
    private java.lang.Object name_;
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          name_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional sint64 addr = 2;
    public static final int ADDR_FIELD_NUMBER = 2;
    private long addr_;
    public boolean hasAddr() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public long getAddr() {
      return addr_;
    }
    
    private void initFields() {
      name_ = "";
      addr_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeSInt64(2, addr_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeSInt64Size(2, addr_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.label parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.label parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.label parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.label parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.label parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.label parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.label parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.label parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.label parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.label parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.label prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.labelOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_label_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_label_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.label.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        addr_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.label.getDescriptor();
      }
      
      public StmtPiqi.label getDefaultInstanceForType() {
        return StmtPiqi.label.getDefaultInstance();
      }
      
      public StmtPiqi.label build() {
        StmtPiqi.label result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.label buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.label result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.label buildPartial() {
        StmtPiqi.label result = new StmtPiqi.label(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.addr_ = addr_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.label) {
          return mergeFrom((StmtPiqi.label)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.label other) {
        if (other == StmtPiqi.label.getDefaultInstance()) return this;
        if (other.hasName()) {
          setName(other.getName());
        }
        if (other.hasAddr()) {
          setAddr(other.getAddr());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              name_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              addr_ = input.readSInt64();
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // optional string name = 1;
      private java.lang.Object name_ = "";
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setName(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      void setName(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
      }
      
      // optional sint64 addr = 2;
      private long addr_ ;
      public boolean hasAddr() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public long getAddr() {
        return addr_;
      }
      public Builder setAddr(long value) {
        bitField0_ |= 0x00000002;
        addr_ = value;
        onChanged();
        return this;
      }
      public Builder clearAddr() {
        bitField0_ = (bitField0_ & ~0x00000002);
        addr_ = 0L;
        onChanged();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:label)
    }
    
    static {
      defaultInstance = new label(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:label)
  }
  
  public interface varOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required string name = 1;
    boolean hasName();
    String getName();
    
    // required sint32 id = 2;
    boolean hasId();
    int getId();
    
    // required .typ typ = 3;
    boolean hasTyp();
    StmtPiqi.typ getTyp();
    StmtPiqi.typOrBuilder getTypOrBuilder();
  }
  public static final class var extends
      com.google.protobuf.GeneratedMessage
      implements varOrBuilder {
    // Use var.newBuilder() to construct.
    private var(Builder builder) {
      super(builder);
    }
    private var(boolean noInit) {}
    
    private static final var defaultInstance;
    public static var getDefaultInstance() {
      return defaultInstance;
    }
    
    public var getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_var_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_var_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required string name = 1;
    public static final int NAME_FIELD_NUMBER = 1;
    private java.lang.Object name_;
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          name_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // required sint32 id = 2;
    public static final int ID_FIELD_NUMBER = 2;
    private int id_;
    public boolean hasId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public int getId() {
      return id_;
    }
    
    // required .typ typ = 3;
    public static final int TYP_FIELD_NUMBER = 3;
    private StmtPiqi.typ typ_;
    public boolean hasTyp() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public StmtPiqi.typ getTyp() {
      return typ_;
    }
    public StmtPiqi.typOrBuilder getTypOrBuilder() {
      return typ_;
    }
    
    private void initFields() {
      name_ = "";
      id_ = 0;
      typ_ = StmtPiqi.typ.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTyp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTyp().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeSInt32(2, id_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, typ_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeSInt32Size(2, id_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, typ_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.var parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.var parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.var parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.var parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.var parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.var parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.var parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.var parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.var parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.var parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.var prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.varOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_var_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_var_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.var.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getTypFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        id_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (typBuilder_ == null) {
          typ_ = StmtPiqi.typ.getDefaultInstance();
        } else {
          typBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.var.getDescriptor();
      }
      
      public StmtPiqi.var getDefaultInstanceForType() {
        return StmtPiqi.var.getDefaultInstance();
      }
      
      public StmtPiqi.var build() {
        StmtPiqi.var result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.var buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.var result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.var buildPartial() {
        StmtPiqi.var result = new StmtPiqi.var(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.id_ = id_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (typBuilder_ == null) {
          result.typ_ = typ_;
        } else {
          result.typ_ = typBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.var) {
          return mergeFrom((StmtPiqi.var)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.var other) {
        if (other == StmtPiqi.var.getDefaultInstance()) return this;
        if (other.hasName()) {
          setName(other.getName());
        }
        if (other.hasId()) {
          setId(other.getId());
        }
        if (other.hasTyp()) {
          mergeTyp(other.getTyp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasName()) {
          
          return false;
        }
        if (!hasId()) {
          
          return false;
        }
        if (!hasTyp()) {
          
          return false;
        }
        if (!getTyp().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              name_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              id_ = input.readSInt32();
              break;
            }
            case 26: {
              StmtPiqi.typ.Builder subBuilder = StmtPiqi.typ.newBuilder();
              if (hasTyp()) {
                subBuilder.mergeFrom(getTyp());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setTyp(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required string name = 1;
      private java.lang.Object name_ = "";
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setName(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      void setName(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
      }
      
      // required sint32 id = 2;
      private int id_ ;
      public boolean hasId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public int getId() {
        return id_;
      }
      public Builder setId(int value) {
        bitField0_ |= 0x00000002;
        id_ = value;
        onChanged();
        return this;
      }
      public Builder clearId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        id_ = 0;
        onChanged();
        return this;
      }
      
      // required .typ typ = 3;
      private StmtPiqi.typ typ_ = StmtPiqi.typ.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder> typBuilder_;
      public boolean hasTyp() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public StmtPiqi.typ getTyp() {
        if (typBuilder_ == null) {
          return typ_;
        } else {
          return typBuilder_.getMessage();
        }
      }
      public Builder setTyp(StmtPiqi.typ value) {
        if (typBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          typ_ = value;
          onChanged();
        } else {
          typBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder setTyp(
          StmtPiqi.typ.Builder builderForValue) {
        if (typBuilder_ == null) {
          typ_ = builderForValue.build();
          onChanged();
        } else {
          typBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder mergeTyp(StmtPiqi.typ value) {
        if (typBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              typ_ != StmtPiqi.typ.getDefaultInstance()) {
            typ_ =
              StmtPiqi.typ.newBuilder(typ_).mergeFrom(value).buildPartial();
          } else {
            typ_ = value;
          }
          onChanged();
        } else {
          typBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder clearTyp() {
        if (typBuilder_ == null) {
          typ_ = StmtPiqi.typ.getDefaultInstance();
          onChanged();
        } else {
          typBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      public StmtPiqi.typ.Builder getTypBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getTypFieldBuilder().getBuilder();
      }
      public StmtPiqi.typOrBuilder getTypOrBuilder() {
        if (typBuilder_ != null) {
          return typBuilder_.getMessageOrBuilder();
        } else {
          return typ_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder> 
          getTypFieldBuilder() {
        if (typBuilder_ == null) {
          typBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder>(
                  typ_,
                  getParentForChildren(),
                  isClean());
          typ_ = null;
        }
        return typBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:var)
    }
    
    static {
      defaultInstance = new var(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:var)
  }
  
  public interface varsOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // repeated .var elem = 1;
    java.util.List<StmtPiqi.var> 
        getElemList();
    StmtPiqi.var getElem(int index);
    int getElemCount();
    java.util.List<? extends StmtPiqi.varOrBuilder> 
        getElemOrBuilderList();
    StmtPiqi.varOrBuilder getElemOrBuilder(
        int index);
  }
  public static final class vars extends
      com.google.protobuf.GeneratedMessage
      implements varsOrBuilder {
    // Use vars.newBuilder() to construct.
    private vars(Builder builder) {
      super(builder);
    }
    private vars(boolean noInit) {}
    
    private static final vars defaultInstance;
    public static vars getDefaultInstance() {
      return defaultInstance;
    }
    
    public vars getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_vars_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_vars_fieldAccessorTable;
    }
    
    // repeated .var elem = 1;
    public static final int ELEM_FIELD_NUMBER = 1;
    private java.util.List<StmtPiqi.var> elem_;
    public java.util.List<StmtPiqi.var> getElemList() {
      return elem_;
    }
    public java.util.List<? extends StmtPiqi.varOrBuilder> 
        getElemOrBuilderList() {
      return elem_;
    }
    public int getElemCount() {
      return elem_.size();
    }
    public StmtPiqi.var getElem(int index) {
      return elem_.get(index);
    }
    public StmtPiqi.varOrBuilder getElemOrBuilder(
        int index) {
      return elem_.get(index);
    }
    
    private void initFields() {
      elem_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      for (int i = 0; i < getElemCount(); i++) {
        if (!getElem(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < elem_.size(); i++) {
        output.writeMessage(1, elem_.get(i));
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      for (int i = 0; i < elem_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, elem_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.vars parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.vars parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.vars parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.vars parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.vars parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.vars parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.vars parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.vars parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.vars parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.vars parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.vars prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.varsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_vars_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_vars_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.vars.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getElemFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (elemBuilder_ == null) {
          elem_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          elemBuilder_.clear();
        }
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.vars.getDescriptor();
      }
      
      public StmtPiqi.vars getDefaultInstanceForType() {
        return StmtPiqi.vars.getDefaultInstance();
      }
      
      public StmtPiqi.vars build() {
        StmtPiqi.vars result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.vars buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.vars result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.vars buildPartial() {
        StmtPiqi.vars result = new StmtPiqi.vars(this);
        int from_bitField0_ = bitField0_;
        if (elemBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            elem_ = java.util.Collections.unmodifiableList(elem_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.elem_ = elem_;
        } else {
          result.elem_ = elemBuilder_.build();
        }
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.vars) {
          return mergeFrom((StmtPiqi.vars)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.vars other) {
        if (other == StmtPiqi.vars.getDefaultInstance()) return this;
        if (elemBuilder_ == null) {
          if (!other.elem_.isEmpty()) {
            if (elem_.isEmpty()) {
              elem_ = other.elem_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureElemIsMutable();
              elem_.addAll(other.elem_);
            }
            onChanged();
          }
        } else {
          if (!other.elem_.isEmpty()) {
            if (elemBuilder_.isEmpty()) {
              elemBuilder_.dispose();
              elemBuilder_ = null;
              elem_ = other.elem_;
              bitField0_ = (bitField0_ & ~0x00000001);
              elemBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getElemFieldBuilder() : null;
            } else {
              elemBuilder_.addAllMessages(other.elem_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        for (int i = 0; i < getElemCount(); i++) {
          if (!getElem(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.var.Builder subBuilder = StmtPiqi.var.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addElem(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // repeated .var elem = 1;
      private java.util.List<StmtPiqi.var> elem_ =
        java.util.Collections.emptyList();
      private void ensureElemIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          elem_ = new java.util.ArrayList<StmtPiqi.var>(elem_);
          bitField0_ |= 0x00000001;
         }
      }
      
      private com.google.protobuf.RepeatedFieldBuilder<
          StmtPiqi.var, StmtPiqi.var.Builder, StmtPiqi.varOrBuilder> elemBuilder_;
      
      public java.util.List<StmtPiqi.var> getElemList() {
        if (elemBuilder_ == null) {
          return java.util.Collections.unmodifiableList(elem_);
        } else {
          return elemBuilder_.getMessageList();
        }
      }
      public int getElemCount() {
        if (elemBuilder_ == null) {
          return elem_.size();
        } else {
          return elemBuilder_.getCount();
        }
      }
      public StmtPiqi.var getElem(int index) {
        if (elemBuilder_ == null) {
          return elem_.get(index);
        } else {
          return elemBuilder_.getMessage(index);
        }
      }
      public Builder setElem(
          int index, StmtPiqi.var value) {
        if (elemBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureElemIsMutable();
          elem_.set(index, value);
          onChanged();
        } else {
          elemBuilder_.setMessage(index, value);
        }
        return this;
      }
      public Builder setElem(
          int index, StmtPiqi.var.Builder builderForValue) {
        if (elemBuilder_ == null) {
          ensureElemIsMutable();
          elem_.set(index, builderForValue.build());
          onChanged();
        } else {
          elemBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addElem(StmtPiqi.var value) {
        if (elemBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureElemIsMutable();
          elem_.add(value);
          onChanged();
        } else {
          elemBuilder_.addMessage(value);
        }
        return this;
      }
      public Builder addElem(
          int index, StmtPiqi.var value) {
        if (elemBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureElemIsMutable();
          elem_.add(index, value);
          onChanged();
        } else {
          elemBuilder_.addMessage(index, value);
        }
        return this;
      }
      public Builder addElem(
          StmtPiqi.var.Builder builderForValue) {
        if (elemBuilder_ == null) {
          ensureElemIsMutable();
          elem_.add(builderForValue.build());
          onChanged();
        } else {
          elemBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      public Builder addElem(
          int index, StmtPiqi.var.Builder builderForValue) {
        if (elemBuilder_ == null) {
          ensureElemIsMutable();
          elem_.add(index, builderForValue.build());
          onChanged();
        } else {
          elemBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addAllElem(
          java.lang.Iterable<? extends StmtPiqi.var> values) {
        if (elemBuilder_ == null) {
          ensureElemIsMutable();
          super.addAll(values, elem_);
          onChanged();
        } else {
          elemBuilder_.addAllMessages(values);
        }
        return this;
      }
      public Builder clearElem() {
        if (elemBuilder_ == null) {
          elem_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          elemBuilder_.clear();
        }
        return this;
      }
      public Builder removeElem(int index) {
        if (elemBuilder_ == null) {
          ensureElemIsMutable();
          elem_.remove(index);
          onChanged();
        } else {
          elemBuilder_.remove(index);
        }
        return this;
      }
      public StmtPiqi.var.Builder getElemBuilder(
          int index) {
        return getElemFieldBuilder().getBuilder(index);
      }
      public StmtPiqi.varOrBuilder getElemOrBuilder(
          int index) {
        if (elemBuilder_ == null) {
          return elem_.get(index);  } else {
          return elemBuilder_.getMessageOrBuilder(index);
        }
      }
      public java.util.List<? extends StmtPiqi.varOrBuilder> 
           getElemOrBuilderList() {
        if (elemBuilder_ != null) {
          return elemBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(elem_);
        }
      }
      public StmtPiqi.var.Builder addElemBuilder() {
        return getElemFieldBuilder().addBuilder(
            StmtPiqi.var.getDefaultInstance());
      }
      public StmtPiqi.var.Builder addElemBuilder(
          int index) {
        return getElemFieldBuilder().addBuilder(
            index, StmtPiqi.var.getDefaultInstance());
      }
      public java.util.List<StmtPiqi.var.Builder> 
           getElemBuilderList() {
        return getElemFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          StmtPiqi.var, StmtPiqi.var.Builder, StmtPiqi.varOrBuilder> 
          getElemFieldBuilder() {
        if (elemBuilder_ == null) {
          elemBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              StmtPiqi.var, StmtPiqi.var.Builder, StmtPiqi.varOrBuilder>(
                  elem_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          elem_ = null;
        }
        return elemBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:vars)
    }
    
    static {
      defaultInstance = new vars(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:vars)
  }
  
  public interface defuseOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .vars defs = 1;
    boolean hasDefs();
    StmtPiqi.vars getDefs();
    StmtPiqi.varsOrBuilder getDefsOrBuilder();
    
    // required .vars uses = 2;
    boolean hasUses();
    StmtPiqi.vars getUses();
    StmtPiqi.varsOrBuilder getUsesOrBuilder();
  }
  public static final class defuse extends
      com.google.protobuf.GeneratedMessage
      implements defuseOrBuilder {
    // Use defuse.newBuilder() to construct.
    private defuse(Builder builder) {
      super(builder);
    }
    private defuse(boolean noInit) {}
    
    private static final defuse defaultInstance;
    public static defuse getDefaultInstance() {
      return defaultInstance;
    }
    
    public defuse getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_defuse_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_defuse_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required .vars defs = 1;
    public static final int DEFS_FIELD_NUMBER = 1;
    private StmtPiqi.vars defs_;
    public boolean hasDefs() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.vars getDefs() {
      return defs_;
    }
    public StmtPiqi.varsOrBuilder getDefsOrBuilder() {
      return defs_;
    }
    
    // required .vars uses = 2;
    public static final int USES_FIELD_NUMBER = 2;
    private StmtPiqi.vars uses_;
    public boolean hasUses() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.vars getUses() {
      return uses_;
    }
    public StmtPiqi.varsOrBuilder getUsesOrBuilder() {
      return uses_;
    }
    
    private void initFields() {
      defs_ = StmtPiqi.vars.getDefaultInstance();
      uses_ = StmtPiqi.vars.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasDefs()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasUses()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getDefs().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getUses().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, defs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, uses_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, defs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, uses_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.defuse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.defuse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.defuse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.defuse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.defuse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.defuse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.defuse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.defuse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.defuse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.defuse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.defuse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.defuseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_defuse_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_defuse_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.defuse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getDefsFieldBuilder();
          getUsesFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (defsBuilder_ == null) {
          defs_ = StmtPiqi.vars.getDefaultInstance();
        } else {
          defsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (usesBuilder_ == null) {
          uses_ = StmtPiqi.vars.getDefaultInstance();
        } else {
          usesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.defuse.getDescriptor();
      }
      
      public StmtPiqi.defuse getDefaultInstanceForType() {
        return StmtPiqi.defuse.getDefaultInstance();
      }
      
      public StmtPiqi.defuse build() {
        StmtPiqi.defuse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.defuse buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.defuse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.defuse buildPartial() {
        StmtPiqi.defuse result = new StmtPiqi.defuse(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (defsBuilder_ == null) {
          result.defs_ = defs_;
        } else {
          result.defs_ = defsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (usesBuilder_ == null) {
          result.uses_ = uses_;
        } else {
          result.uses_ = usesBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.defuse) {
          return mergeFrom((StmtPiqi.defuse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.defuse other) {
        if (other == StmtPiqi.defuse.getDefaultInstance()) return this;
        if (other.hasDefs()) {
          mergeDefs(other.getDefs());
        }
        if (other.hasUses()) {
          mergeUses(other.getUses());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasDefs()) {
          
          return false;
        }
        if (!hasUses()) {
          
          return false;
        }
        if (!getDefs().isInitialized()) {
          
          return false;
        }
        if (!getUses().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.vars.Builder subBuilder = StmtPiqi.vars.newBuilder();
              if (hasDefs()) {
                subBuilder.mergeFrom(getDefs());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setDefs(subBuilder.buildPartial());
              break;
            }
            case 18: {
              StmtPiqi.vars.Builder subBuilder = StmtPiqi.vars.newBuilder();
              if (hasUses()) {
                subBuilder.mergeFrom(getUses());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setUses(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .vars defs = 1;
      private StmtPiqi.vars defs_ = StmtPiqi.vars.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.vars, StmtPiqi.vars.Builder, StmtPiqi.varsOrBuilder> defsBuilder_;
      public boolean hasDefs() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.vars getDefs() {
        if (defsBuilder_ == null) {
          return defs_;
        } else {
          return defsBuilder_.getMessage();
        }
      }
      public Builder setDefs(StmtPiqi.vars value) {
        if (defsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          defs_ = value;
          onChanged();
        } else {
          defsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setDefs(
          StmtPiqi.vars.Builder builderForValue) {
        if (defsBuilder_ == null) {
          defs_ = builderForValue.build();
          onChanged();
        } else {
          defsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeDefs(StmtPiqi.vars value) {
        if (defsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              defs_ != StmtPiqi.vars.getDefaultInstance()) {
            defs_ =
              StmtPiqi.vars.newBuilder(defs_).mergeFrom(value).buildPartial();
          } else {
            defs_ = value;
          }
          onChanged();
        } else {
          defsBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearDefs() {
        if (defsBuilder_ == null) {
          defs_ = StmtPiqi.vars.getDefaultInstance();
          onChanged();
        } else {
          defsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public StmtPiqi.vars.Builder getDefsBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getDefsFieldBuilder().getBuilder();
      }
      public StmtPiqi.varsOrBuilder getDefsOrBuilder() {
        if (defsBuilder_ != null) {
          return defsBuilder_.getMessageOrBuilder();
        } else {
          return defs_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.vars, StmtPiqi.vars.Builder, StmtPiqi.varsOrBuilder> 
          getDefsFieldBuilder() {
        if (defsBuilder_ == null) {
          defsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.vars, StmtPiqi.vars.Builder, StmtPiqi.varsOrBuilder>(
                  defs_,
                  getParentForChildren(),
                  isClean());
          defs_ = null;
        }
        return defsBuilder_;
      }
      
      // required .vars uses = 2;
      private StmtPiqi.vars uses_ = StmtPiqi.vars.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.vars, StmtPiqi.vars.Builder, StmtPiqi.varsOrBuilder> usesBuilder_;
      public boolean hasUses() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.vars getUses() {
        if (usesBuilder_ == null) {
          return uses_;
        } else {
          return usesBuilder_.getMessage();
        }
      }
      public Builder setUses(StmtPiqi.vars value) {
        if (usesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          uses_ = value;
          onChanged();
        } else {
          usesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setUses(
          StmtPiqi.vars.Builder builderForValue) {
        if (usesBuilder_ == null) {
          uses_ = builderForValue.build();
          onChanged();
        } else {
          usesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeUses(StmtPiqi.vars value) {
        if (usesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              uses_ != StmtPiqi.vars.getDefaultInstance()) {
            uses_ =
              StmtPiqi.vars.newBuilder(uses_).mergeFrom(value).buildPartial();
          } else {
            uses_ = value;
          }
          onChanged();
        } else {
          usesBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearUses() {
        if (usesBuilder_ == null) {
          uses_ = StmtPiqi.vars.getDefaultInstance();
          onChanged();
        } else {
          usesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.vars.Builder getUsesBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getUsesFieldBuilder().getBuilder();
      }
      public StmtPiqi.varsOrBuilder getUsesOrBuilder() {
        if (usesBuilder_ != null) {
          return usesBuilder_.getMessageOrBuilder();
        } else {
          return uses_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.vars, StmtPiqi.vars.Builder, StmtPiqi.varsOrBuilder> 
          getUsesFieldBuilder() {
        if (usesBuilder_ == null) {
          usesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.vars, StmtPiqi.vars.Builder, StmtPiqi.varsOrBuilder>(
                  uses_,
                  getParentForChildren(),
                  isClean());
          uses_ = null;
        }
        return usesBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:defuse)
    }
    
    static {
      defaultInstance = new defuse(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:defuse)
  }
  
  public interface attributeOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // optional string asm = 1;
    boolean hasAsm();
    String getAsm();
    
    // optional sint64 address = 2;
    boolean hasAddress();
    long getAddress();
    
    // optional .liveout liveout = 3;
    boolean hasLiveout();
    StmtPiqi.liveout getLiveout();
    StmtPiqi.liveoutOrBuilder getLiveoutOrBuilder();
    
    // optional string strattr = 4;
    boolean hasStrattr();
    String getStrattr();
    
    // optional .context context = 5;
    boolean hasContext();
    StmtPiqi.context getContext();
    StmtPiqi.contextOrBuilder getContextOrBuilder();
    
    // optional uint64 thread_id = 6;
    boolean hasThreadId();
    long getThreadId();
    
    // optional .synthetic synthetic = 7;
    boolean hasSynthetic();
    StmtPiqi.synthetic getSynthetic();
    StmtPiqi.syntheticOrBuilder getSyntheticOrBuilder();
    
    // optional string other = 8;
    boolean hasOther();
    String getOther();
  }
  public static final class attribute extends
      com.google.protobuf.GeneratedMessage
      implements attributeOrBuilder {
    // Use attribute.newBuilder() to construct.
    private attribute(Builder builder) {
      super(builder);
    }
    private attribute(boolean noInit) {}
    
    private static final attribute defaultInstance;
    public static attribute getDefaultInstance() {
      return defaultInstance;
    }
    
    public attribute getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_attribute_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_attribute_fieldAccessorTable;
    }
    
    private int bitField0_;
    // optional string asm = 1;
    public static final int ASM_FIELD_NUMBER = 1;
    private java.lang.Object asm_;
    public boolean hasAsm() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getAsm() {
      java.lang.Object ref = asm_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          asm_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getAsmBytes() {
      java.lang.Object ref = asm_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        asm_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional sint64 address = 2;
    public static final int ADDRESS_FIELD_NUMBER = 2;
    private long address_;
    public boolean hasAddress() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public long getAddress() {
      return address_;
    }
    
    // optional .liveout liveout = 3;
    public static final int LIVEOUT_FIELD_NUMBER = 3;
    private StmtPiqi.liveout liveout_;
    public boolean hasLiveout() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public StmtPiqi.liveout getLiveout() {
      return liveout_;
    }
    public StmtPiqi.liveoutOrBuilder getLiveoutOrBuilder() {
      return liveout_;
    }
    
    // optional string strattr = 4;
    public static final int STRATTR_FIELD_NUMBER = 4;
    private java.lang.Object strattr_;
    public boolean hasStrattr() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    public String getStrattr() {
      java.lang.Object ref = strattr_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          strattr_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getStrattrBytes() {
      java.lang.Object ref = strattr_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        strattr_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional .context context = 5;
    public static final int CONTEXT_FIELD_NUMBER = 5;
    private StmtPiqi.context context_;
    public boolean hasContext() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    public StmtPiqi.context getContext() {
      return context_;
    }
    public StmtPiqi.contextOrBuilder getContextOrBuilder() {
      return context_;
    }
    
    // optional uint64 thread_id = 6;
    public static final int THREAD_ID_FIELD_NUMBER = 6;
    private long threadId_;
    public boolean hasThreadId() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    public long getThreadId() {
      return threadId_;
    }
    
    // optional .synthetic synthetic = 7;
    public static final int SYNTHETIC_FIELD_NUMBER = 7;
    private StmtPiqi.synthetic synthetic_;
    public boolean hasSynthetic() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    public StmtPiqi.synthetic getSynthetic() {
      return synthetic_;
    }
    public StmtPiqi.syntheticOrBuilder getSyntheticOrBuilder() {
      return synthetic_;
    }
    
    // optional string other = 8;
    public static final int OTHER_FIELD_NUMBER = 8;
    private java.lang.Object other_;
    public boolean hasOther() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    public String getOther() {
      java.lang.Object ref = other_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          other_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getOtherBytes() {
      java.lang.Object ref = other_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        other_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    private void initFields() {
      asm_ = "";
      address_ = 0L;
      liveout_ = StmtPiqi.liveout.getDefaultInstance();
      strattr_ = "";
      context_ = StmtPiqi.context.getDefaultInstance();
      threadId_ = 0L;
      synthetic_ = StmtPiqi.synthetic.getDefaultInstance();
      other_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (hasContext()) {
        if (!getContext().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getAsmBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeSInt64(2, address_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, liveout_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(4, getStrattrBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(5, context_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeUInt64(6, threadId_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeMessage(7, synthetic_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeBytes(8, getOtherBytes());
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getAsmBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeSInt64Size(2, address_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, liveout_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, getStrattrBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, context_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(6, threadId_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, synthetic_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(8, getOtherBytes());
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.attribute parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.attribute parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.attribute parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.attribute parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.attribute parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.attribute parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.attribute parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.attribute parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.attribute parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.attribute parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.attribute prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.attributeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_attribute_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_attribute_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.attribute.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getLiveoutFieldBuilder();
          getContextFieldBuilder();
          getSyntheticFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        asm_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        address_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (liveoutBuilder_ == null) {
          liveout_ = StmtPiqi.liveout.getDefaultInstance();
        } else {
          liveoutBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        strattr_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        if (contextBuilder_ == null) {
          context_ = StmtPiqi.context.getDefaultInstance();
        } else {
          contextBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        threadId_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000020);
        if (syntheticBuilder_ == null) {
          synthetic_ = StmtPiqi.synthetic.getDefaultInstance();
        } else {
          syntheticBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        other_ = "";
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.attribute.getDescriptor();
      }
      
      public StmtPiqi.attribute getDefaultInstanceForType() {
        return StmtPiqi.attribute.getDefaultInstance();
      }
      
      public StmtPiqi.attribute build() {
        StmtPiqi.attribute result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.attribute buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.attribute result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.attribute buildPartial() {
        StmtPiqi.attribute result = new StmtPiqi.attribute(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.asm_ = asm_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.address_ = address_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (liveoutBuilder_ == null) {
          result.liveout_ = liveout_;
        } else {
          result.liveout_ = liveoutBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.strattr_ = strattr_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        if (contextBuilder_ == null) {
          result.context_ = context_;
        } else {
          result.context_ = contextBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.threadId_ = threadId_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        if (syntheticBuilder_ == null) {
          result.synthetic_ = synthetic_;
        } else {
          result.synthetic_ = syntheticBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.other_ = other_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.attribute) {
          return mergeFrom((StmtPiqi.attribute)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.attribute other) {
        if (other == StmtPiqi.attribute.getDefaultInstance()) return this;
        if (other.hasAsm()) {
          setAsm(other.getAsm());
        }
        if (other.hasAddress()) {
          setAddress(other.getAddress());
        }
        if (other.hasLiveout()) {
          mergeLiveout(other.getLiveout());
        }
        if (other.hasStrattr()) {
          setStrattr(other.getStrattr());
        }
        if (other.hasContext()) {
          mergeContext(other.getContext());
        }
        if (other.hasThreadId()) {
          setThreadId(other.getThreadId());
        }
        if (other.hasSynthetic()) {
          mergeSynthetic(other.getSynthetic());
        }
        if (other.hasOther()) {
          setOther(other.getOther());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (hasContext()) {
          if (!getContext().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              asm_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              address_ = input.readSInt64();
              break;
            }
            case 26: {
              StmtPiqi.liveout.Builder subBuilder = StmtPiqi.liveout.newBuilder();
              if (hasLiveout()) {
                subBuilder.mergeFrom(getLiveout());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setLiveout(subBuilder.buildPartial());
              break;
            }
            case 34: {
              bitField0_ |= 0x00000008;
              strattr_ = input.readBytes();
              break;
            }
            case 42: {
              StmtPiqi.context.Builder subBuilder = StmtPiqi.context.newBuilder();
              if (hasContext()) {
                subBuilder.mergeFrom(getContext());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setContext(subBuilder.buildPartial());
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              threadId_ = input.readUInt64();
              break;
            }
            case 58: {
              StmtPiqi.synthetic.Builder subBuilder = StmtPiqi.synthetic.newBuilder();
              if (hasSynthetic()) {
                subBuilder.mergeFrom(getSynthetic());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setSynthetic(subBuilder.buildPartial());
              break;
            }
            case 66: {
              bitField0_ |= 0x00000080;
              other_ = input.readBytes();
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // optional string asm = 1;
      private java.lang.Object asm_ = "";
      public boolean hasAsm() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getAsm() {
        java.lang.Object ref = asm_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          asm_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setAsm(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        asm_ = value;
        onChanged();
        return this;
      }
      public Builder clearAsm() {
        bitField0_ = (bitField0_ & ~0x00000001);
        asm_ = getDefaultInstance().getAsm();
        onChanged();
        return this;
      }
      void setAsm(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        asm_ = value;
        onChanged();
      }
      
      // optional sint64 address = 2;
      private long address_ ;
      public boolean hasAddress() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public long getAddress() {
        return address_;
      }
      public Builder setAddress(long value) {
        bitField0_ |= 0x00000002;
        address_ = value;
        onChanged();
        return this;
      }
      public Builder clearAddress() {
        bitField0_ = (bitField0_ & ~0x00000002);
        address_ = 0L;
        onChanged();
        return this;
      }
      
      // optional .liveout liveout = 3;
      private StmtPiqi.liveout liveout_ = StmtPiqi.liveout.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.liveout, StmtPiqi.liveout.Builder, StmtPiqi.liveoutOrBuilder> liveoutBuilder_;
      public boolean hasLiveout() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public StmtPiqi.liveout getLiveout() {
        if (liveoutBuilder_ == null) {
          return liveout_;
        } else {
          return liveoutBuilder_.getMessage();
        }
      }
      public Builder setLiveout(StmtPiqi.liveout value) {
        if (liveoutBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          liveout_ = value;
          onChanged();
        } else {
          liveoutBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder setLiveout(
          StmtPiqi.liveout.Builder builderForValue) {
        if (liveoutBuilder_ == null) {
          liveout_ = builderForValue.build();
          onChanged();
        } else {
          liveoutBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder mergeLiveout(StmtPiqi.liveout value) {
        if (liveoutBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              liveout_ != StmtPiqi.liveout.getDefaultInstance()) {
            liveout_ =
              StmtPiqi.liveout.newBuilder(liveout_).mergeFrom(value).buildPartial();
          } else {
            liveout_ = value;
          }
          onChanged();
        } else {
          liveoutBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder clearLiveout() {
        if (liveoutBuilder_ == null) {
          liveout_ = StmtPiqi.liveout.getDefaultInstance();
          onChanged();
        } else {
          liveoutBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      public StmtPiqi.liveout.Builder getLiveoutBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getLiveoutFieldBuilder().getBuilder();
      }
      public StmtPiqi.liveoutOrBuilder getLiveoutOrBuilder() {
        if (liveoutBuilder_ != null) {
          return liveoutBuilder_.getMessageOrBuilder();
        } else {
          return liveout_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.liveout, StmtPiqi.liveout.Builder, StmtPiqi.liveoutOrBuilder> 
          getLiveoutFieldBuilder() {
        if (liveoutBuilder_ == null) {
          liveoutBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.liveout, StmtPiqi.liveout.Builder, StmtPiqi.liveoutOrBuilder>(
                  liveout_,
                  getParentForChildren(),
                  isClean());
          liveout_ = null;
        }
        return liveoutBuilder_;
      }
      
      // optional string strattr = 4;
      private java.lang.Object strattr_ = "";
      public boolean hasStrattr() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public String getStrattr() {
        java.lang.Object ref = strattr_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          strattr_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setStrattr(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        strattr_ = value;
        onChanged();
        return this;
      }
      public Builder clearStrattr() {
        bitField0_ = (bitField0_ & ~0x00000008);
        strattr_ = getDefaultInstance().getStrattr();
        onChanged();
        return this;
      }
      void setStrattr(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000008;
        strattr_ = value;
        onChanged();
      }
      
      // optional .context context = 5;
      private StmtPiqi.context context_ = StmtPiqi.context.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.context, StmtPiqi.context.Builder, StmtPiqi.contextOrBuilder> contextBuilder_;
      public boolean hasContext() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public StmtPiqi.context getContext() {
        if (contextBuilder_ == null) {
          return context_;
        } else {
          return contextBuilder_.getMessage();
        }
      }
      public Builder setContext(StmtPiqi.context value) {
        if (contextBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          context_ = value;
          onChanged();
        } else {
          contextBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      public Builder setContext(
          StmtPiqi.context.Builder builderForValue) {
        if (contextBuilder_ == null) {
          context_ = builderForValue.build();
          onChanged();
        } else {
          contextBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      public Builder mergeContext(StmtPiqi.context value) {
        if (contextBuilder_ == null) {
          if (((bitField0_ & 0x00000010) == 0x00000010) &&
              context_ != StmtPiqi.context.getDefaultInstance()) {
            context_ =
              StmtPiqi.context.newBuilder(context_).mergeFrom(value).buildPartial();
          } else {
            context_ = value;
          }
          onChanged();
        } else {
          contextBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      public Builder clearContext() {
        if (contextBuilder_ == null) {
          context_ = StmtPiqi.context.getDefaultInstance();
          onChanged();
        } else {
          contextBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      public StmtPiqi.context.Builder getContextBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getContextFieldBuilder().getBuilder();
      }
      public StmtPiqi.contextOrBuilder getContextOrBuilder() {
        if (contextBuilder_ != null) {
          return contextBuilder_.getMessageOrBuilder();
        } else {
          return context_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.context, StmtPiqi.context.Builder, StmtPiqi.contextOrBuilder> 
          getContextFieldBuilder() {
        if (contextBuilder_ == null) {
          contextBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.context, StmtPiqi.context.Builder, StmtPiqi.contextOrBuilder>(
                  context_,
                  getParentForChildren(),
                  isClean());
          context_ = null;
        }
        return contextBuilder_;
      }
      
      // optional uint64 thread_id = 6;
      private long threadId_ ;
      public boolean hasThreadId() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      public long getThreadId() {
        return threadId_;
      }
      public Builder setThreadId(long value) {
        bitField0_ |= 0x00000020;
        threadId_ = value;
        onChanged();
        return this;
      }
      public Builder clearThreadId() {
        bitField0_ = (bitField0_ & ~0x00000020);
        threadId_ = 0L;
        onChanged();
        return this;
      }
      
      // optional .synthetic synthetic = 7;
      private StmtPiqi.synthetic synthetic_ = StmtPiqi.synthetic.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.synthetic, StmtPiqi.synthetic.Builder, StmtPiqi.syntheticOrBuilder> syntheticBuilder_;
      public boolean hasSynthetic() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      public StmtPiqi.synthetic getSynthetic() {
        if (syntheticBuilder_ == null) {
          return synthetic_;
        } else {
          return syntheticBuilder_.getMessage();
        }
      }
      public Builder setSynthetic(StmtPiqi.synthetic value) {
        if (syntheticBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          synthetic_ = value;
          onChanged();
        } else {
          syntheticBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      public Builder setSynthetic(
          StmtPiqi.synthetic.Builder builderForValue) {
        if (syntheticBuilder_ == null) {
          synthetic_ = builderForValue.build();
          onChanged();
        } else {
          syntheticBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      public Builder mergeSynthetic(StmtPiqi.synthetic value) {
        if (syntheticBuilder_ == null) {
          if (((bitField0_ & 0x00000040) == 0x00000040) &&
              synthetic_ != StmtPiqi.synthetic.getDefaultInstance()) {
            synthetic_ =
              StmtPiqi.synthetic.newBuilder(synthetic_).mergeFrom(value).buildPartial();
          } else {
            synthetic_ = value;
          }
          onChanged();
        } else {
          syntheticBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      public Builder clearSynthetic() {
        if (syntheticBuilder_ == null) {
          synthetic_ = StmtPiqi.synthetic.getDefaultInstance();
          onChanged();
        } else {
          syntheticBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }
      public StmtPiqi.synthetic.Builder getSyntheticBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getSyntheticFieldBuilder().getBuilder();
      }
      public StmtPiqi.syntheticOrBuilder getSyntheticOrBuilder() {
        if (syntheticBuilder_ != null) {
          return syntheticBuilder_.getMessageOrBuilder();
        } else {
          return synthetic_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.synthetic, StmtPiqi.synthetic.Builder, StmtPiqi.syntheticOrBuilder> 
          getSyntheticFieldBuilder() {
        if (syntheticBuilder_ == null) {
          syntheticBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.synthetic, StmtPiqi.synthetic.Builder, StmtPiqi.syntheticOrBuilder>(
                  synthetic_,
                  getParentForChildren(),
                  isClean());
          synthetic_ = null;
        }
        return syntheticBuilder_;
      }
      
      // optional string other = 8;
      private java.lang.Object other_ = "";
      public boolean hasOther() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      public String getOther() {
        java.lang.Object ref = other_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          other_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setOther(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        other_ = value;
        onChanged();
        return this;
      }
      public Builder clearOther() {
        bitField0_ = (bitField0_ & ~0x00000080);
        other_ = getDefaultInstance().getOther();
        onChanged();
        return this;
      }
      void setOther(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000080;
        other_ = value;
        onChanged();
      }
      
      // @@protoc_insertion_point(builder_scope:attribute)
    }
    
    static {
      defaultInstance = new attribute(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:attribute)
  }
  
  public interface attributesOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // repeated .attribute elem = 1;
    java.util.List<StmtPiqi.attribute> 
        getElemList();
    StmtPiqi.attribute getElem(int index);
    int getElemCount();
    java.util.List<? extends StmtPiqi.attributeOrBuilder> 
        getElemOrBuilderList();
    StmtPiqi.attributeOrBuilder getElemOrBuilder(
        int index);
  }
  public static final class attributes extends
      com.google.protobuf.GeneratedMessage
      implements attributesOrBuilder {
    // Use attributes.newBuilder() to construct.
    private attributes(Builder builder) {
      super(builder);
    }
    private attributes(boolean noInit) {}
    
    private static final attributes defaultInstance;
    public static attributes getDefaultInstance() {
      return defaultInstance;
    }
    
    public attributes getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_attributes_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_attributes_fieldAccessorTable;
    }
    
    // repeated .attribute elem = 1;
    public static final int ELEM_FIELD_NUMBER = 1;
    private java.util.List<StmtPiqi.attribute> elem_;
    public java.util.List<StmtPiqi.attribute> getElemList() {
      return elem_;
    }
    public java.util.List<? extends StmtPiqi.attributeOrBuilder> 
        getElemOrBuilderList() {
      return elem_;
    }
    public int getElemCount() {
      return elem_.size();
    }
    public StmtPiqi.attribute getElem(int index) {
      return elem_.get(index);
    }
    public StmtPiqi.attributeOrBuilder getElemOrBuilder(
        int index) {
      return elem_.get(index);
    }
    
    private void initFields() {
      elem_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      for (int i = 0; i < getElemCount(); i++) {
        if (!getElem(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < elem_.size(); i++) {
        output.writeMessage(1, elem_.get(i));
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      for (int i = 0; i < elem_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, elem_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.attributes parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.attributes parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.attributes parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.attributes parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.attributes parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.attributes parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.attributes parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.attributes parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.attributes parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.attributes parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.attributes prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.attributesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_attributes_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_attributes_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.attributes.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getElemFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (elemBuilder_ == null) {
          elem_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          elemBuilder_.clear();
        }
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.attributes.getDescriptor();
      }
      
      public StmtPiqi.attributes getDefaultInstanceForType() {
        return StmtPiqi.attributes.getDefaultInstance();
      }
      
      public StmtPiqi.attributes build() {
        StmtPiqi.attributes result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.attributes buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.attributes result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.attributes buildPartial() {
        StmtPiqi.attributes result = new StmtPiqi.attributes(this);
        int from_bitField0_ = bitField0_;
        if (elemBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            elem_ = java.util.Collections.unmodifiableList(elem_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.elem_ = elem_;
        } else {
          result.elem_ = elemBuilder_.build();
        }
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.attributes) {
          return mergeFrom((StmtPiqi.attributes)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.attributes other) {
        if (other == StmtPiqi.attributes.getDefaultInstance()) return this;
        if (elemBuilder_ == null) {
          if (!other.elem_.isEmpty()) {
            if (elem_.isEmpty()) {
              elem_ = other.elem_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureElemIsMutable();
              elem_.addAll(other.elem_);
            }
            onChanged();
          }
        } else {
          if (!other.elem_.isEmpty()) {
            if (elemBuilder_.isEmpty()) {
              elemBuilder_.dispose();
              elemBuilder_ = null;
              elem_ = other.elem_;
              bitField0_ = (bitField0_ & ~0x00000001);
              elemBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getElemFieldBuilder() : null;
            } else {
              elemBuilder_.addAllMessages(other.elem_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        for (int i = 0; i < getElemCount(); i++) {
          if (!getElem(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.attribute.Builder subBuilder = StmtPiqi.attribute.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addElem(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // repeated .attribute elem = 1;
      private java.util.List<StmtPiqi.attribute> elem_ =
        java.util.Collections.emptyList();
      private void ensureElemIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          elem_ = new java.util.ArrayList<StmtPiqi.attribute>(elem_);
          bitField0_ |= 0x00000001;
         }
      }
      
      private com.google.protobuf.RepeatedFieldBuilder<
          StmtPiqi.attribute, StmtPiqi.attribute.Builder, StmtPiqi.attributeOrBuilder> elemBuilder_;
      
      public java.util.List<StmtPiqi.attribute> getElemList() {
        if (elemBuilder_ == null) {
          return java.util.Collections.unmodifiableList(elem_);
        } else {
          return elemBuilder_.getMessageList();
        }
      }
      public int getElemCount() {
        if (elemBuilder_ == null) {
          return elem_.size();
        } else {
          return elemBuilder_.getCount();
        }
      }
      public StmtPiqi.attribute getElem(int index) {
        if (elemBuilder_ == null) {
          return elem_.get(index);
        } else {
          return elemBuilder_.getMessage(index);
        }
      }
      public Builder setElem(
          int index, StmtPiqi.attribute value) {
        if (elemBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureElemIsMutable();
          elem_.set(index, value);
          onChanged();
        } else {
          elemBuilder_.setMessage(index, value);
        }
        return this;
      }
      public Builder setElem(
          int index, StmtPiqi.attribute.Builder builderForValue) {
        if (elemBuilder_ == null) {
          ensureElemIsMutable();
          elem_.set(index, builderForValue.build());
          onChanged();
        } else {
          elemBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addElem(StmtPiqi.attribute value) {
        if (elemBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureElemIsMutable();
          elem_.add(value);
          onChanged();
        } else {
          elemBuilder_.addMessage(value);
        }
        return this;
      }
      public Builder addElem(
          int index, StmtPiqi.attribute value) {
        if (elemBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureElemIsMutable();
          elem_.add(index, value);
          onChanged();
        } else {
          elemBuilder_.addMessage(index, value);
        }
        return this;
      }
      public Builder addElem(
          StmtPiqi.attribute.Builder builderForValue) {
        if (elemBuilder_ == null) {
          ensureElemIsMutable();
          elem_.add(builderForValue.build());
          onChanged();
        } else {
          elemBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      public Builder addElem(
          int index, StmtPiqi.attribute.Builder builderForValue) {
        if (elemBuilder_ == null) {
          ensureElemIsMutable();
          elem_.add(index, builderForValue.build());
          onChanged();
        } else {
          elemBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addAllElem(
          java.lang.Iterable<? extends StmtPiqi.attribute> values) {
        if (elemBuilder_ == null) {
          ensureElemIsMutable();
          super.addAll(values, elem_);
          onChanged();
        } else {
          elemBuilder_.addAllMessages(values);
        }
        return this;
      }
      public Builder clearElem() {
        if (elemBuilder_ == null) {
          elem_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          elemBuilder_.clear();
        }
        return this;
      }
      public Builder removeElem(int index) {
        if (elemBuilder_ == null) {
          ensureElemIsMutable();
          elem_.remove(index);
          onChanged();
        } else {
          elemBuilder_.remove(index);
        }
        return this;
      }
      public StmtPiqi.attribute.Builder getElemBuilder(
          int index) {
        return getElemFieldBuilder().getBuilder(index);
      }
      public StmtPiqi.attributeOrBuilder getElemOrBuilder(
          int index) {
        if (elemBuilder_ == null) {
          return elem_.get(index);  } else {
          return elemBuilder_.getMessageOrBuilder(index);
        }
      }
      public java.util.List<? extends StmtPiqi.attributeOrBuilder> 
           getElemOrBuilderList() {
        if (elemBuilder_ != null) {
          return elemBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(elem_);
        }
      }
      public StmtPiqi.attribute.Builder addElemBuilder() {
        return getElemFieldBuilder().addBuilder(
            StmtPiqi.attribute.getDefaultInstance());
      }
      public StmtPiqi.attribute.Builder addElemBuilder(
          int index) {
        return getElemFieldBuilder().addBuilder(
            index, StmtPiqi.attribute.getDefaultInstance());
      }
      public java.util.List<StmtPiqi.attribute.Builder> 
           getElemBuilderList() {
        return getElemFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          StmtPiqi.attribute, StmtPiqi.attribute.Builder, StmtPiqi.attributeOrBuilder> 
          getElemFieldBuilder() {
        if (elemBuilder_ == null) {
          elemBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              StmtPiqi.attribute, StmtPiqi.attribute.Builder, StmtPiqi.attributeOrBuilder>(
                  elem_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          elem_ = null;
        }
        return elemBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:attributes)
    }
    
    static {
      defaultInstance = new attributes(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:attributes)
  }
  
  public interface liveoutOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
  }
  public static final class liveout extends
      com.google.protobuf.GeneratedMessage
      implements liveoutOrBuilder {
    // Use liveout.newBuilder() to construct.
    private liveout(Builder builder) {
      super(builder);
    }
    private liveout(boolean noInit) {}
    
    private static final liveout defaultInstance;
    public static liveout getDefaultInstance() {
      return defaultInstance;
    }
    
    public liveout getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_liveout_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_liveout_fieldAccessorTable;
    }
    
    private void initFields() {
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.liveout parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.liveout parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.liveout parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.liveout parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.liveout parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.liveout parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.liveout parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.liveout parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.liveout parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.liveout parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.liveout prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.liveoutOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_liveout_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_liveout_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.liveout.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.liveout.getDescriptor();
      }
      
      public StmtPiqi.liveout getDefaultInstanceForType() {
        return StmtPiqi.liveout.getDefaultInstance();
      }
      
      public StmtPiqi.liveout build() {
        StmtPiqi.liveout result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.liveout buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.liveout result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.liveout buildPartial() {
        StmtPiqi.liveout result = new StmtPiqi.liveout(this);
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.liveout) {
          return mergeFrom((StmtPiqi.liveout)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.liveout other) {
        if (other == StmtPiqi.liveout.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
          }
        }
      }
      
      
      // @@protoc_insertion_point(builder_scope:liveout)
    }
    
    static {
      defaultInstance = new liveout(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:liveout)
  }
  
  public interface syntheticOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
  }
  public static final class synthetic extends
      com.google.protobuf.GeneratedMessage
      implements syntheticOrBuilder {
    // Use synthetic.newBuilder() to construct.
    private synthetic(Builder builder) {
      super(builder);
    }
    private synthetic(boolean noInit) {}
    
    private static final synthetic defaultInstance;
    public static synthetic getDefaultInstance() {
      return defaultInstance;
    }
    
    public synthetic getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_synthetic_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_synthetic_fieldAccessorTable;
    }
    
    private void initFields() {
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.synthetic parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.synthetic parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.synthetic parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.synthetic parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.synthetic parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.synthetic parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.synthetic parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.synthetic parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.synthetic parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.synthetic parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.synthetic prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.syntheticOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_synthetic_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_synthetic_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.synthetic.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.synthetic.getDescriptor();
      }
      
      public StmtPiqi.synthetic getDefaultInstanceForType() {
        return StmtPiqi.synthetic.getDefaultInstance();
      }
      
      public StmtPiqi.synthetic build() {
        StmtPiqi.synthetic result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.synthetic buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.synthetic result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.synthetic buildPartial() {
        StmtPiqi.synthetic result = new StmtPiqi.synthetic(this);
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.synthetic) {
          return mergeFrom((StmtPiqi.synthetic)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.synthetic other) {
        if (other == StmtPiqi.synthetic.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
          }
        }
      }
      
      
      // @@protoc_insertion_point(builder_scope:synthetic)
    }
    
    static {
      defaultInstance = new synthetic(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:synthetic)
  }
  
  public interface operand_info_specificOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // optional .mem_operand mem_operand = 1;
    boolean hasMemOperand();
    StmtPiqi.mem_operand getMemOperand();
    StmtPiqi.mem_operandOrBuilder getMemOperandOrBuilder();
    
    // optional .reg_operand reg_operand = 2;
    boolean hasRegOperand();
    StmtPiqi.reg_operand getRegOperand();
    StmtPiqi.reg_operandOrBuilder getRegOperandOrBuilder();
  }
  public static final class operand_info_specific extends
      com.google.protobuf.GeneratedMessage
      implements operand_info_specificOrBuilder {
    // Use operand_info_specific.newBuilder() to construct.
    private operand_info_specific(Builder builder) {
      super(builder);
    }
    private operand_info_specific(boolean noInit) {}
    
    private static final operand_info_specific defaultInstance;
    public static operand_info_specific getDefaultInstance() {
      return defaultInstance;
    }
    
    public operand_info_specific getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_operand_info_specific_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_operand_info_specific_fieldAccessorTable;
    }
    
    private int bitField0_;
    // optional .mem_operand mem_operand = 1;
    public static final int MEM_OPERAND_FIELD_NUMBER = 1;
    private StmtPiqi.mem_operand memOperand_;
    public boolean hasMemOperand() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.mem_operand getMemOperand() {
      return memOperand_;
    }
    public StmtPiqi.mem_operandOrBuilder getMemOperandOrBuilder() {
      return memOperand_;
    }
    
    // optional .reg_operand reg_operand = 2;
    public static final int REG_OPERAND_FIELD_NUMBER = 2;
    private StmtPiqi.reg_operand regOperand_;
    public boolean hasRegOperand() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.reg_operand getRegOperand() {
      return regOperand_;
    }
    public StmtPiqi.reg_operandOrBuilder getRegOperandOrBuilder() {
      return regOperand_;
    }
    
    private void initFields() {
      memOperand_ = StmtPiqi.mem_operand.getDefaultInstance();
      regOperand_ = StmtPiqi.reg_operand.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (hasMemOperand()) {
        if (!getMemOperand().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasRegOperand()) {
        if (!getRegOperand().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, memOperand_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, regOperand_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, memOperand_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, regOperand_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.operand_info_specific parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.operand_info_specific parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.operand_info_specific parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.operand_info_specific parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.operand_info_specific parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.operand_info_specific parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.operand_info_specific parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.operand_info_specific parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.operand_info_specific parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.operand_info_specific parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.operand_info_specific prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.operand_info_specificOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_operand_info_specific_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_operand_info_specific_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.operand_info_specific.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getMemOperandFieldBuilder();
          getRegOperandFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (memOperandBuilder_ == null) {
          memOperand_ = StmtPiqi.mem_operand.getDefaultInstance();
        } else {
          memOperandBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (regOperandBuilder_ == null) {
          regOperand_ = StmtPiqi.reg_operand.getDefaultInstance();
        } else {
          regOperandBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.operand_info_specific.getDescriptor();
      }
      
      public StmtPiqi.operand_info_specific getDefaultInstanceForType() {
        return StmtPiqi.operand_info_specific.getDefaultInstance();
      }
      
      public StmtPiqi.operand_info_specific build() {
        StmtPiqi.operand_info_specific result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.operand_info_specific buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.operand_info_specific result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.operand_info_specific buildPartial() {
        StmtPiqi.operand_info_specific result = new StmtPiqi.operand_info_specific(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (memOperandBuilder_ == null) {
          result.memOperand_ = memOperand_;
        } else {
          result.memOperand_ = memOperandBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (regOperandBuilder_ == null) {
          result.regOperand_ = regOperand_;
        } else {
          result.regOperand_ = regOperandBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.operand_info_specific) {
          return mergeFrom((StmtPiqi.operand_info_specific)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.operand_info_specific other) {
        if (other == StmtPiqi.operand_info_specific.getDefaultInstance()) return this;
        if (other.hasMemOperand()) {
          mergeMemOperand(other.getMemOperand());
        }
        if (other.hasRegOperand()) {
          mergeRegOperand(other.getRegOperand());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (hasMemOperand()) {
          if (!getMemOperand().isInitialized()) {
            
            return false;
          }
        }
        if (hasRegOperand()) {
          if (!getRegOperand().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.mem_operand.Builder subBuilder = StmtPiqi.mem_operand.newBuilder();
              if (hasMemOperand()) {
                subBuilder.mergeFrom(getMemOperand());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setMemOperand(subBuilder.buildPartial());
              break;
            }
            case 18: {
              StmtPiqi.reg_operand.Builder subBuilder = StmtPiqi.reg_operand.newBuilder();
              if (hasRegOperand()) {
                subBuilder.mergeFrom(getRegOperand());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setRegOperand(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // optional .mem_operand mem_operand = 1;
      private StmtPiqi.mem_operand memOperand_ = StmtPiqi.mem_operand.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.mem_operand, StmtPiqi.mem_operand.Builder, StmtPiqi.mem_operandOrBuilder> memOperandBuilder_;
      public boolean hasMemOperand() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.mem_operand getMemOperand() {
        if (memOperandBuilder_ == null) {
          return memOperand_;
        } else {
          return memOperandBuilder_.getMessage();
        }
      }
      public Builder setMemOperand(StmtPiqi.mem_operand value) {
        if (memOperandBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          memOperand_ = value;
          onChanged();
        } else {
          memOperandBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setMemOperand(
          StmtPiqi.mem_operand.Builder builderForValue) {
        if (memOperandBuilder_ == null) {
          memOperand_ = builderForValue.build();
          onChanged();
        } else {
          memOperandBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeMemOperand(StmtPiqi.mem_operand value) {
        if (memOperandBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              memOperand_ != StmtPiqi.mem_operand.getDefaultInstance()) {
            memOperand_ =
              StmtPiqi.mem_operand.newBuilder(memOperand_).mergeFrom(value).buildPartial();
          } else {
            memOperand_ = value;
          }
          onChanged();
        } else {
          memOperandBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearMemOperand() {
        if (memOperandBuilder_ == null) {
          memOperand_ = StmtPiqi.mem_operand.getDefaultInstance();
          onChanged();
        } else {
          memOperandBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public StmtPiqi.mem_operand.Builder getMemOperandBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getMemOperandFieldBuilder().getBuilder();
      }
      public StmtPiqi.mem_operandOrBuilder getMemOperandOrBuilder() {
        if (memOperandBuilder_ != null) {
          return memOperandBuilder_.getMessageOrBuilder();
        } else {
          return memOperand_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.mem_operand, StmtPiqi.mem_operand.Builder, StmtPiqi.mem_operandOrBuilder> 
          getMemOperandFieldBuilder() {
        if (memOperandBuilder_ == null) {
          memOperandBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.mem_operand, StmtPiqi.mem_operand.Builder, StmtPiqi.mem_operandOrBuilder>(
                  memOperand_,
                  getParentForChildren(),
                  isClean());
          memOperand_ = null;
        }
        return memOperandBuilder_;
      }
      
      // optional .reg_operand reg_operand = 2;
      private StmtPiqi.reg_operand regOperand_ = StmtPiqi.reg_operand.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.reg_operand, StmtPiqi.reg_operand.Builder, StmtPiqi.reg_operandOrBuilder> regOperandBuilder_;
      public boolean hasRegOperand() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.reg_operand getRegOperand() {
        if (regOperandBuilder_ == null) {
          return regOperand_;
        } else {
          return regOperandBuilder_.getMessage();
        }
      }
      public Builder setRegOperand(StmtPiqi.reg_operand value) {
        if (regOperandBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          regOperand_ = value;
          onChanged();
        } else {
          regOperandBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setRegOperand(
          StmtPiqi.reg_operand.Builder builderForValue) {
        if (regOperandBuilder_ == null) {
          regOperand_ = builderForValue.build();
          onChanged();
        } else {
          regOperandBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeRegOperand(StmtPiqi.reg_operand value) {
        if (regOperandBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              regOperand_ != StmtPiqi.reg_operand.getDefaultInstance()) {
            regOperand_ =
              StmtPiqi.reg_operand.newBuilder(regOperand_).mergeFrom(value).buildPartial();
          } else {
            regOperand_ = value;
          }
          onChanged();
        } else {
          regOperandBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearRegOperand() {
        if (regOperandBuilder_ == null) {
          regOperand_ = StmtPiqi.reg_operand.getDefaultInstance();
          onChanged();
        } else {
          regOperandBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.reg_operand.Builder getRegOperandBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getRegOperandFieldBuilder().getBuilder();
      }
      public StmtPiqi.reg_operandOrBuilder getRegOperandOrBuilder() {
        if (regOperandBuilder_ != null) {
          return regOperandBuilder_.getMessageOrBuilder();
        } else {
          return regOperand_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.reg_operand, StmtPiqi.reg_operand.Builder, StmtPiqi.reg_operandOrBuilder> 
          getRegOperandFieldBuilder() {
        if (regOperandBuilder_ == null) {
          regOperandBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.reg_operand, StmtPiqi.reg_operand.Builder, StmtPiqi.reg_operandOrBuilder>(
                  regOperand_,
                  getParentForChildren(),
                  isClean());
          regOperand_ = null;
        }
        return regOperandBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:operand_info_specific)
    }
    
    static {
      defaultInstance = new operand_info_specific(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:operand_info_specific)
  }
  
  public interface reg_operandOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required string name = 1;
    boolean hasName();
    String getName();
  }
  public static final class reg_operand extends
      com.google.protobuf.GeneratedMessage
      implements reg_operandOrBuilder {
    // Use reg_operand.newBuilder() to construct.
    private reg_operand(Builder builder) {
      super(builder);
    }
    private reg_operand(boolean noInit) {}
    
    private static final reg_operand defaultInstance;
    public static reg_operand getDefaultInstance() {
      return defaultInstance;
    }
    
    public reg_operand getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_reg_operand_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_reg_operand_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required string name = 1;
    public static final int NAME_FIELD_NUMBER = 1;
    private java.lang.Object name_;
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          name_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    private void initFields() {
      name_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getNameBytes());
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getNameBytes());
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.reg_operand parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.reg_operand parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.reg_operand parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.reg_operand parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.reg_operand parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.reg_operand parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.reg_operand parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.reg_operand parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.reg_operand parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.reg_operand parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.reg_operand prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.reg_operandOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_reg_operand_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_reg_operand_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.reg_operand.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.reg_operand.getDescriptor();
      }
      
      public StmtPiqi.reg_operand getDefaultInstanceForType() {
        return StmtPiqi.reg_operand.getDefaultInstance();
      }
      
      public StmtPiqi.reg_operand build() {
        StmtPiqi.reg_operand result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.reg_operand buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.reg_operand result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.reg_operand buildPartial() {
        StmtPiqi.reg_operand result = new StmtPiqi.reg_operand(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.reg_operand) {
          return mergeFrom((StmtPiqi.reg_operand)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.reg_operand other) {
        if (other == StmtPiqi.reg_operand.getDefaultInstance()) return this;
        if (other.hasName()) {
          setName(other.getName());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasName()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              name_ = input.readBytes();
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required string name = 1;
      private java.lang.Object name_ = "";
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setName(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      void setName(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
      }
      
      // @@protoc_insertion_point(builder_scope:reg_operand)
    }
    
    static {
      defaultInstance = new reg_operand(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:reg_operand)
  }
  
  public interface operand_usageOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required bool read = 1;
    boolean hasRead();
    boolean getRead();
    
    // required bool written = 2;
    boolean hasWritten();
    boolean getWritten();
    
    // required bool index = 3;
    boolean hasIndex();
    boolean getIndex();
    
    // required bool base = 4;
    boolean hasBase();
    boolean getBase();
  }
  public static final class operand_usage extends
      com.google.protobuf.GeneratedMessage
      implements operand_usageOrBuilder {
    // Use operand_usage.newBuilder() to construct.
    private operand_usage(Builder builder) {
      super(builder);
    }
    private operand_usage(boolean noInit) {}
    
    private static final operand_usage defaultInstance;
    public static operand_usage getDefaultInstance() {
      return defaultInstance;
    }
    
    public operand_usage getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_operand_usage_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_operand_usage_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required bool read = 1;
    public static final int READ_FIELD_NUMBER = 1;
    private boolean read_;
    public boolean hasRead() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public boolean getRead() {
      return read_;
    }
    
    // required bool written = 2;
    public static final int WRITTEN_FIELD_NUMBER = 2;
    private boolean written_;
    public boolean hasWritten() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public boolean getWritten() {
      return written_;
    }
    
    // required bool index = 3;
    public static final int INDEX_FIELD_NUMBER = 3;
    private boolean index_;
    public boolean hasIndex() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public boolean getIndex() {
      return index_;
    }
    
    // required bool base = 4;
    public static final int BASE_FIELD_NUMBER = 4;
    private boolean base_;
    public boolean hasBase() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    public boolean getBase() {
      return base_;
    }
    
    private void initFields() {
      read_ = false;
      written_ = false;
      index_ = false;
      base_ = false;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasRead()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasWritten()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIndex()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasBase()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBool(1, read_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBool(2, written_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBool(3, index_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBool(4, base_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, read_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, written_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, index_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, base_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.operand_usage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.operand_usage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.operand_usage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.operand_usage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.operand_usage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.operand_usage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.operand_usage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.operand_usage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.operand_usage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.operand_usage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.operand_usage prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.operand_usageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_operand_usage_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_operand_usage_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.operand_usage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        read_ = false;
        bitField0_ = (bitField0_ & ~0x00000001);
        written_ = false;
        bitField0_ = (bitField0_ & ~0x00000002);
        index_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        base_ = false;
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.operand_usage.getDescriptor();
      }
      
      public StmtPiqi.operand_usage getDefaultInstanceForType() {
        return StmtPiqi.operand_usage.getDefaultInstance();
      }
      
      public StmtPiqi.operand_usage build() {
        StmtPiqi.operand_usage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.operand_usage buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.operand_usage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.operand_usage buildPartial() {
        StmtPiqi.operand_usage result = new StmtPiqi.operand_usage(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.read_ = read_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.written_ = written_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.index_ = index_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.base_ = base_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.operand_usage) {
          return mergeFrom((StmtPiqi.operand_usage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.operand_usage other) {
        if (other == StmtPiqi.operand_usage.getDefaultInstance()) return this;
        if (other.hasRead()) {
          setRead(other.getRead());
        }
        if (other.hasWritten()) {
          setWritten(other.getWritten());
        }
        if (other.hasIndex()) {
          setIndex(other.getIndex());
        }
        if (other.hasBase()) {
          setBase(other.getBase());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasRead()) {
          
          return false;
        }
        if (!hasWritten()) {
          
          return false;
        }
        if (!hasIndex()) {
          
          return false;
        }
        if (!hasBase()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              read_ = input.readBool();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              written_ = input.readBool();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              index_ = input.readBool();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              base_ = input.readBool();
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required bool read = 1;
      private boolean read_ ;
      public boolean hasRead() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public boolean getRead() {
        return read_;
      }
      public Builder setRead(boolean value) {
        bitField0_ |= 0x00000001;
        read_ = value;
        onChanged();
        return this;
      }
      public Builder clearRead() {
        bitField0_ = (bitField0_ & ~0x00000001);
        read_ = false;
        onChanged();
        return this;
      }
      
      // required bool written = 2;
      private boolean written_ ;
      public boolean hasWritten() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public boolean getWritten() {
        return written_;
      }
      public Builder setWritten(boolean value) {
        bitField0_ |= 0x00000002;
        written_ = value;
        onChanged();
        return this;
      }
      public Builder clearWritten() {
        bitField0_ = (bitField0_ & ~0x00000002);
        written_ = false;
        onChanged();
        return this;
      }
      
      // required bool index = 3;
      private boolean index_ ;
      public boolean hasIndex() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public boolean getIndex() {
        return index_;
      }
      public Builder setIndex(boolean value) {
        bitField0_ |= 0x00000004;
        index_ = value;
        onChanged();
        return this;
      }
      public Builder clearIndex() {
        bitField0_ = (bitField0_ & ~0x00000004);
        index_ = false;
        onChanged();
        return this;
      }
      
      // required bool base = 4;
      private boolean base_ ;
      public boolean hasBase() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public boolean getBase() {
        return base_;
      }
      public Builder setBase(boolean value) {
        bitField0_ |= 0x00000008;
        base_ = value;
        onChanged();
        return this;
      }
      public Builder clearBase() {
        bitField0_ = (bitField0_ & ~0x00000008);
        base_ = false;
        onChanged();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:operand_usage)
    }
    
    static {
      defaultInstance = new operand_usage(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:operand_usage)
  }
  
  public interface mem_operandOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required sint64 address = 1;
    boolean hasAddress();
    long getAddress();
  }
  public static final class mem_operand extends
      com.google.protobuf.GeneratedMessage
      implements mem_operandOrBuilder {
    // Use mem_operand.newBuilder() to construct.
    private mem_operand(Builder builder) {
      super(builder);
    }
    private mem_operand(boolean noInit) {}
    
    private static final mem_operand defaultInstance;
    public static mem_operand getDefaultInstance() {
      return defaultInstance;
    }
    
    public mem_operand getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_mem_operand_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_mem_operand_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required sint64 address = 1;
    public static final int ADDRESS_FIELD_NUMBER = 1;
    private long address_;
    public boolean hasAddress() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public long getAddress() {
      return address_;
    }
    
    private void initFields() {
      address_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasAddress()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeSInt64(1, address_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeSInt64Size(1, address_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.mem_operand parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.mem_operand parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.mem_operand parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.mem_operand parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.mem_operand parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.mem_operand parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.mem_operand parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.mem_operand parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.mem_operand parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.mem_operand parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.mem_operand prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.mem_operandOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_mem_operand_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_mem_operand_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.mem_operand.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        address_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.mem_operand.getDescriptor();
      }
      
      public StmtPiqi.mem_operand getDefaultInstanceForType() {
        return StmtPiqi.mem_operand.getDefaultInstance();
      }
      
      public StmtPiqi.mem_operand build() {
        StmtPiqi.mem_operand result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.mem_operand buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.mem_operand result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.mem_operand buildPartial() {
        StmtPiqi.mem_operand result = new StmtPiqi.mem_operand(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.address_ = address_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.mem_operand) {
          return mergeFrom((StmtPiqi.mem_operand)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.mem_operand other) {
        if (other == StmtPiqi.mem_operand.getDefaultInstance()) return this;
        if (other.hasAddress()) {
          setAddress(other.getAddress());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasAddress()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              address_ = input.readSInt64();
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required sint64 address = 1;
      private long address_ ;
      public boolean hasAddress() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public long getAddress() {
        return address_;
      }
      public Builder setAddress(long value) {
        bitField0_ |= 0x00000001;
        address_ = value;
        onChanged();
        return this;
      }
      public Builder clearAddress() {
        bitField0_ = (bitField0_ & ~0x00000001);
        address_ = 0L;
        onChanged();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:mem_operand)
    }
    
    static {
      defaultInstance = new mem_operand(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:mem_operand)
  }
  
  public interface taint_infoOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // optional bool no_taint = 1;
    boolean hasNoTaint();
    boolean getNoTaint();
    
    // optional uint64 taint_id = 2;
    boolean hasTaintId();
    long getTaintId();
    
    // optional bool taint_multiple = 3;
    boolean hasTaintMultiple();
    boolean getTaintMultiple();
  }
  public static final class taint_info extends
      com.google.protobuf.GeneratedMessage
      implements taint_infoOrBuilder {
    // Use taint_info.newBuilder() to construct.
    private taint_info(Builder builder) {
      super(builder);
    }
    private taint_info(boolean noInit) {}
    
    private static final taint_info defaultInstance;
    public static taint_info getDefaultInstance() {
      return defaultInstance;
    }
    
    public taint_info getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_taint_info_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_taint_info_fieldAccessorTable;
    }
    
    private int bitField0_;
    // optional bool no_taint = 1;
    public static final int NO_TAINT_FIELD_NUMBER = 1;
    private boolean noTaint_;
    public boolean hasNoTaint() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public boolean getNoTaint() {
      return noTaint_;
    }
    
    // optional uint64 taint_id = 2;
    public static final int TAINT_ID_FIELD_NUMBER = 2;
    private long taintId_;
    public boolean hasTaintId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public long getTaintId() {
      return taintId_;
    }
    
    // optional bool taint_multiple = 3;
    public static final int TAINT_MULTIPLE_FIELD_NUMBER = 3;
    private boolean taintMultiple_;
    public boolean hasTaintMultiple() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public boolean getTaintMultiple() {
      return taintMultiple_;
    }
    
    private void initFields() {
      noTaint_ = false;
      taintId_ = 0L;
      taintMultiple_ = false;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBool(1, noTaint_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, taintId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBool(3, taintMultiple_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, noTaint_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, taintId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, taintMultiple_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.taint_info parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.taint_info parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.taint_info parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.taint_info parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.taint_info parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.taint_info parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.taint_info parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.taint_info parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.taint_info parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.taint_info parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.taint_info prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.taint_infoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_taint_info_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_taint_info_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.taint_info.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        noTaint_ = false;
        bitField0_ = (bitField0_ & ~0x00000001);
        taintId_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        taintMultiple_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.taint_info.getDescriptor();
      }
      
      public StmtPiqi.taint_info getDefaultInstanceForType() {
        return StmtPiqi.taint_info.getDefaultInstance();
      }
      
      public StmtPiqi.taint_info build() {
        StmtPiqi.taint_info result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.taint_info buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.taint_info result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.taint_info buildPartial() {
        StmtPiqi.taint_info result = new StmtPiqi.taint_info(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.noTaint_ = noTaint_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.taintId_ = taintId_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.taintMultiple_ = taintMultiple_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.taint_info) {
          return mergeFrom((StmtPiqi.taint_info)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.taint_info other) {
        if (other == StmtPiqi.taint_info.getDefaultInstance()) return this;
        if (other.hasNoTaint()) {
          setNoTaint(other.getNoTaint());
        }
        if (other.hasTaintId()) {
          setTaintId(other.getTaintId());
        }
        if (other.hasTaintMultiple()) {
          setTaintMultiple(other.getTaintMultiple());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              noTaint_ = input.readBool();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              taintId_ = input.readUInt64();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              taintMultiple_ = input.readBool();
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // optional bool no_taint = 1;
      private boolean noTaint_ ;
      public boolean hasNoTaint() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public boolean getNoTaint() {
        return noTaint_;
      }
      public Builder setNoTaint(boolean value) {
        bitField0_ |= 0x00000001;
        noTaint_ = value;
        onChanged();
        return this;
      }
      public Builder clearNoTaint() {
        bitField0_ = (bitField0_ & ~0x00000001);
        noTaint_ = false;
        onChanged();
        return this;
      }
      
      // optional uint64 taint_id = 2;
      private long taintId_ ;
      public boolean hasTaintId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public long getTaintId() {
        return taintId_;
      }
      public Builder setTaintId(long value) {
        bitField0_ |= 0x00000002;
        taintId_ = value;
        onChanged();
        return this;
      }
      public Builder clearTaintId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        taintId_ = 0L;
        onChanged();
        return this;
      }
      
      // optional bool taint_multiple = 3;
      private boolean taintMultiple_ ;
      public boolean hasTaintMultiple() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public boolean getTaintMultiple() {
        return taintMultiple_;
      }
      public Builder setTaintMultiple(boolean value) {
        bitField0_ |= 0x00000004;
        taintMultiple_ = value;
        onChanged();
        return this;
      }
      public Builder clearTaintMultiple() {
        bitField0_ = (bitField0_ & ~0x00000004);
        taintMultiple_ = false;
        onChanged();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:taint_info)
    }
    
    static {
      defaultInstance = new taint_info(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:taint_info)
  }
  
  public interface contextOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .operand_info_specific operand_info_specific = 1;
    boolean hasOperandInfoSpecific();
    StmtPiqi.operand_info_specific getOperandInfoSpecific();
    StmtPiqi.operand_info_specificOrBuilder getOperandInfoSpecificOrBuilder();
    
    // required sint32 bit_length = 2;
    boolean hasBitLength();
    int getBitLength();
    
    // required .operand_usage operand_usage = 3;
    boolean hasOperandUsage();
    StmtPiqi.operand_usage getOperandUsage();
    StmtPiqi.operand_usageOrBuilder getOperandUsageOrBuilder();
    
    // required .taint_info taint_info = 4;
    boolean hasTaintInfo();
    StmtPiqi.taint_info getTaintInfo();
    StmtPiqi.taint_infoOrBuilder getTaintInfoOrBuilder();
    
    // required string value = 5;
    boolean hasValue();
    String getValue();
  }
  public static final class context extends
      com.google.protobuf.GeneratedMessage
      implements contextOrBuilder {
    // Use context.newBuilder() to construct.
    private context(Builder builder) {
      super(builder);
    }
    private context(boolean noInit) {}
    
    private static final context defaultInstance;
    public static context getDefaultInstance() {
      return defaultInstance;
    }
    
    public context getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_context_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_context_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required .operand_info_specific operand_info_specific = 1;
    public static final int OPERAND_INFO_SPECIFIC_FIELD_NUMBER = 1;
    private StmtPiqi.operand_info_specific operandInfoSpecific_;
    public boolean hasOperandInfoSpecific() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.operand_info_specific getOperandInfoSpecific() {
      return operandInfoSpecific_;
    }
    public StmtPiqi.operand_info_specificOrBuilder getOperandInfoSpecificOrBuilder() {
      return operandInfoSpecific_;
    }
    
    // required sint32 bit_length = 2;
    public static final int BIT_LENGTH_FIELD_NUMBER = 2;
    private int bitLength_;
    public boolean hasBitLength() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public int getBitLength() {
      return bitLength_;
    }
    
    // required .operand_usage operand_usage = 3;
    public static final int OPERAND_USAGE_FIELD_NUMBER = 3;
    private StmtPiqi.operand_usage operandUsage_;
    public boolean hasOperandUsage() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public StmtPiqi.operand_usage getOperandUsage() {
      return operandUsage_;
    }
    public StmtPiqi.operand_usageOrBuilder getOperandUsageOrBuilder() {
      return operandUsage_;
    }
    
    // required .taint_info taint_info = 4;
    public static final int TAINT_INFO_FIELD_NUMBER = 4;
    private StmtPiqi.taint_info taintInfo_;
    public boolean hasTaintInfo() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    public StmtPiqi.taint_info getTaintInfo() {
      return taintInfo_;
    }
    public StmtPiqi.taint_infoOrBuilder getTaintInfoOrBuilder() {
      return taintInfo_;
    }
    
    // required string value = 5;
    public static final int VALUE_FIELD_NUMBER = 5;
    private java.lang.Object value_;
    public boolean hasValue() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    public String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          value_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    private void initFields() {
      operandInfoSpecific_ = StmtPiqi.operand_info_specific.getDefaultInstance();
      bitLength_ = 0;
      operandUsage_ = StmtPiqi.operand_usage.getDefaultInstance();
      taintInfo_ = StmtPiqi.taint_info.getDefaultInstance();
      value_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasOperandInfoSpecific()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasBitLength()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasOperandUsage()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTaintInfo()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasValue()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getOperandInfoSpecific().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getOperandUsage().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, operandInfoSpecific_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeSInt32(2, bitLength_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, operandUsage_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, taintInfo_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBytes(5, getValueBytes());
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, operandInfoSpecific_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeSInt32Size(2, bitLength_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, operandUsage_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, taintInfo_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, getValueBytes());
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.context parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.context parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.context parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.context parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.context parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.context parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.context parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.context parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.context parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.context parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.context prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.contextOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_context_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_context_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.context.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getOperandInfoSpecificFieldBuilder();
          getOperandUsageFieldBuilder();
          getTaintInfoFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (operandInfoSpecificBuilder_ == null) {
          operandInfoSpecific_ = StmtPiqi.operand_info_specific.getDefaultInstance();
        } else {
          operandInfoSpecificBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        bitLength_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (operandUsageBuilder_ == null) {
          operandUsage_ = StmtPiqi.operand_usage.getDefaultInstance();
        } else {
          operandUsageBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (taintInfoBuilder_ == null) {
          taintInfo_ = StmtPiqi.taint_info.getDefaultInstance();
        } else {
          taintInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.context.getDescriptor();
      }
      
      public StmtPiqi.context getDefaultInstanceForType() {
        return StmtPiqi.context.getDefaultInstance();
      }
      
      public StmtPiqi.context build() {
        StmtPiqi.context result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.context buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.context result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.context buildPartial() {
        StmtPiqi.context result = new StmtPiqi.context(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (operandInfoSpecificBuilder_ == null) {
          result.operandInfoSpecific_ = operandInfoSpecific_;
        } else {
          result.operandInfoSpecific_ = operandInfoSpecificBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.bitLength_ = bitLength_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (operandUsageBuilder_ == null) {
          result.operandUsage_ = operandUsage_;
        } else {
          result.operandUsage_ = operandUsageBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        if (taintInfoBuilder_ == null) {
          result.taintInfo_ = taintInfo_;
        } else {
          result.taintInfo_ = taintInfoBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.value_ = value_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.context) {
          return mergeFrom((StmtPiqi.context)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.context other) {
        if (other == StmtPiqi.context.getDefaultInstance()) return this;
        if (other.hasOperandInfoSpecific()) {
          mergeOperandInfoSpecific(other.getOperandInfoSpecific());
        }
        if (other.hasBitLength()) {
          setBitLength(other.getBitLength());
        }
        if (other.hasOperandUsage()) {
          mergeOperandUsage(other.getOperandUsage());
        }
        if (other.hasTaintInfo()) {
          mergeTaintInfo(other.getTaintInfo());
        }
        if (other.hasValue()) {
          setValue(other.getValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasOperandInfoSpecific()) {
          
          return false;
        }
        if (!hasBitLength()) {
          
          return false;
        }
        if (!hasOperandUsage()) {
          
          return false;
        }
        if (!hasTaintInfo()) {
          
          return false;
        }
        if (!hasValue()) {
          
          return false;
        }
        if (!getOperandInfoSpecific().isInitialized()) {
          
          return false;
        }
        if (!getOperandUsage().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.operand_info_specific.Builder subBuilder = StmtPiqi.operand_info_specific.newBuilder();
              if (hasOperandInfoSpecific()) {
                subBuilder.mergeFrom(getOperandInfoSpecific());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setOperandInfoSpecific(subBuilder.buildPartial());
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              bitLength_ = input.readSInt32();
              break;
            }
            case 26: {
              StmtPiqi.operand_usage.Builder subBuilder = StmtPiqi.operand_usage.newBuilder();
              if (hasOperandUsage()) {
                subBuilder.mergeFrom(getOperandUsage());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setOperandUsage(subBuilder.buildPartial());
              break;
            }
            case 34: {
              StmtPiqi.taint_info.Builder subBuilder = StmtPiqi.taint_info.newBuilder();
              if (hasTaintInfo()) {
                subBuilder.mergeFrom(getTaintInfo());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setTaintInfo(subBuilder.buildPartial());
              break;
            }
            case 42: {
              bitField0_ |= 0x00000010;
              value_ = input.readBytes();
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .operand_info_specific operand_info_specific = 1;
      private StmtPiqi.operand_info_specific operandInfoSpecific_ = StmtPiqi.operand_info_specific.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.operand_info_specific, StmtPiqi.operand_info_specific.Builder, StmtPiqi.operand_info_specificOrBuilder> operandInfoSpecificBuilder_;
      public boolean hasOperandInfoSpecific() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.operand_info_specific getOperandInfoSpecific() {
        if (operandInfoSpecificBuilder_ == null) {
          return operandInfoSpecific_;
        } else {
          return operandInfoSpecificBuilder_.getMessage();
        }
      }
      public Builder setOperandInfoSpecific(StmtPiqi.operand_info_specific value) {
        if (operandInfoSpecificBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          operandInfoSpecific_ = value;
          onChanged();
        } else {
          operandInfoSpecificBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setOperandInfoSpecific(
          StmtPiqi.operand_info_specific.Builder builderForValue) {
        if (operandInfoSpecificBuilder_ == null) {
          operandInfoSpecific_ = builderForValue.build();
          onChanged();
        } else {
          operandInfoSpecificBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeOperandInfoSpecific(StmtPiqi.operand_info_specific value) {
        if (operandInfoSpecificBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              operandInfoSpecific_ != StmtPiqi.operand_info_specific.getDefaultInstance()) {
            operandInfoSpecific_ =
              StmtPiqi.operand_info_specific.newBuilder(operandInfoSpecific_).mergeFrom(value).buildPartial();
          } else {
            operandInfoSpecific_ = value;
          }
          onChanged();
        } else {
          operandInfoSpecificBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearOperandInfoSpecific() {
        if (operandInfoSpecificBuilder_ == null) {
          operandInfoSpecific_ = StmtPiqi.operand_info_specific.getDefaultInstance();
          onChanged();
        } else {
          operandInfoSpecificBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public StmtPiqi.operand_info_specific.Builder getOperandInfoSpecificBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getOperandInfoSpecificFieldBuilder().getBuilder();
      }
      public StmtPiqi.operand_info_specificOrBuilder getOperandInfoSpecificOrBuilder() {
        if (operandInfoSpecificBuilder_ != null) {
          return operandInfoSpecificBuilder_.getMessageOrBuilder();
        } else {
          return operandInfoSpecific_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.operand_info_specific, StmtPiqi.operand_info_specific.Builder, StmtPiqi.operand_info_specificOrBuilder> 
          getOperandInfoSpecificFieldBuilder() {
        if (operandInfoSpecificBuilder_ == null) {
          operandInfoSpecificBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.operand_info_specific, StmtPiqi.operand_info_specific.Builder, StmtPiqi.operand_info_specificOrBuilder>(
                  operandInfoSpecific_,
                  getParentForChildren(),
                  isClean());
          operandInfoSpecific_ = null;
        }
        return operandInfoSpecificBuilder_;
      }
      
      // required sint32 bit_length = 2;
      private int bitLength_ ;
      public boolean hasBitLength() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public int getBitLength() {
        return bitLength_;
      }
      public Builder setBitLength(int value) {
        bitField0_ |= 0x00000002;
        bitLength_ = value;
        onChanged();
        return this;
      }
      public Builder clearBitLength() {
        bitField0_ = (bitField0_ & ~0x00000002);
        bitLength_ = 0;
        onChanged();
        return this;
      }
      
      // required .operand_usage operand_usage = 3;
      private StmtPiqi.operand_usage operandUsage_ = StmtPiqi.operand_usage.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.operand_usage, StmtPiqi.operand_usage.Builder, StmtPiqi.operand_usageOrBuilder> operandUsageBuilder_;
      public boolean hasOperandUsage() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public StmtPiqi.operand_usage getOperandUsage() {
        if (operandUsageBuilder_ == null) {
          return operandUsage_;
        } else {
          return operandUsageBuilder_.getMessage();
        }
      }
      public Builder setOperandUsage(StmtPiqi.operand_usage value) {
        if (operandUsageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          operandUsage_ = value;
          onChanged();
        } else {
          operandUsageBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder setOperandUsage(
          StmtPiqi.operand_usage.Builder builderForValue) {
        if (operandUsageBuilder_ == null) {
          operandUsage_ = builderForValue.build();
          onChanged();
        } else {
          operandUsageBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder mergeOperandUsage(StmtPiqi.operand_usage value) {
        if (operandUsageBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              operandUsage_ != StmtPiqi.operand_usage.getDefaultInstance()) {
            operandUsage_ =
              StmtPiqi.operand_usage.newBuilder(operandUsage_).mergeFrom(value).buildPartial();
          } else {
            operandUsage_ = value;
          }
          onChanged();
        } else {
          operandUsageBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder clearOperandUsage() {
        if (operandUsageBuilder_ == null) {
          operandUsage_ = StmtPiqi.operand_usage.getDefaultInstance();
          onChanged();
        } else {
          operandUsageBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      public StmtPiqi.operand_usage.Builder getOperandUsageBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getOperandUsageFieldBuilder().getBuilder();
      }
      public StmtPiqi.operand_usageOrBuilder getOperandUsageOrBuilder() {
        if (operandUsageBuilder_ != null) {
          return operandUsageBuilder_.getMessageOrBuilder();
        } else {
          return operandUsage_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.operand_usage, StmtPiqi.operand_usage.Builder, StmtPiqi.operand_usageOrBuilder> 
          getOperandUsageFieldBuilder() {
        if (operandUsageBuilder_ == null) {
          operandUsageBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.operand_usage, StmtPiqi.operand_usage.Builder, StmtPiqi.operand_usageOrBuilder>(
                  operandUsage_,
                  getParentForChildren(),
                  isClean());
          operandUsage_ = null;
        }
        return operandUsageBuilder_;
      }
      
      // required .taint_info taint_info = 4;
      private StmtPiqi.taint_info taintInfo_ = StmtPiqi.taint_info.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.taint_info, StmtPiqi.taint_info.Builder, StmtPiqi.taint_infoOrBuilder> taintInfoBuilder_;
      public boolean hasTaintInfo() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public StmtPiqi.taint_info getTaintInfo() {
        if (taintInfoBuilder_ == null) {
          return taintInfo_;
        } else {
          return taintInfoBuilder_.getMessage();
        }
      }
      public Builder setTaintInfo(StmtPiqi.taint_info value) {
        if (taintInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          taintInfo_ = value;
          onChanged();
        } else {
          taintInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder setTaintInfo(
          StmtPiqi.taint_info.Builder builderForValue) {
        if (taintInfoBuilder_ == null) {
          taintInfo_ = builderForValue.build();
          onChanged();
        } else {
          taintInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder mergeTaintInfo(StmtPiqi.taint_info value) {
        if (taintInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008) &&
              taintInfo_ != StmtPiqi.taint_info.getDefaultInstance()) {
            taintInfo_ =
              StmtPiqi.taint_info.newBuilder(taintInfo_).mergeFrom(value).buildPartial();
          } else {
            taintInfo_ = value;
          }
          onChanged();
        } else {
          taintInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder clearTaintInfo() {
        if (taintInfoBuilder_ == null) {
          taintInfo_ = StmtPiqi.taint_info.getDefaultInstance();
          onChanged();
        } else {
          taintInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      public StmtPiqi.taint_info.Builder getTaintInfoBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getTaintInfoFieldBuilder().getBuilder();
      }
      public StmtPiqi.taint_infoOrBuilder getTaintInfoOrBuilder() {
        if (taintInfoBuilder_ != null) {
          return taintInfoBuilder_.getMessageOrBuilder();
        } else {
          return taintInfo_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.taint_info, StmtPiqi.taint_info.Builder, StmtPiqi.taint_infoOrBuilder> 
          getTaintInfoFieldBuilder() {
        if (taintInfoBuilder_ == null) {
          taintInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.taint_info, StmtPiqi.taint_info.Builder, StmtPiqi.taint_infoOrBuilder>(
                  taintInfo_,
                  getParentForChildren(),
                  isClean());
          taintInfo_ = null;
        }
        return taintInfoBuilder_;
      }
      
      // required string value = 5;
      private java.lang.Object value_ = "";
      public boolean hasValue() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          value_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setValue(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        value_ = value;
        onChanged();
        return this;
      }
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000010);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      void setValue(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000010;
        value_ = value;
        onChanged();
      }
      
      // @@protoc_insertion_point(builder_scope:context)
    }
    
    static {
      defaultInstance = new context(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:context)
  }
  
  public interface expOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // optional .load load = 1;
    boolean hasLoad();
    StmtPiqi.load getLoad();
    StmtPiqi.loadOrBuilder getLoadOrBuilder();
    
    // optional .store store = 2;
    boolean hasStore();
    StmtPiqi.store getStore();
    StmtPiqi.storeOrBuilder getStoreOrBuilder();
    
    // optional .binop binop = 3;
    boolean hasBinop();
    StmtPiqi.binop getBinop();
    StmtPiqi.binopOrBuilder getBinopOrBuilder();
    
    // optional .unop unop = 4;
    boolean hasUnop();
    StmtPiqi.unop getUnop();
    StmtPiqi.unopOrBuilder getUnopOrBuilder();
    
    // optional .var var = 5;
    boolean hasVar();
    StmtPiqi.var getVar();
    StmtPiqi.varOrBuilder getVarOrBuilder();
    
    // optional string lab = 6;
    boolean hasLab();
    String getLab();
    
    // optional .inte inte = 7;
    boolean hasInte();
    StmtPiqi.inte getInte();
    StmtPiqi.inteOrBuilder getInteOrBuilder();
    
    // optional .cast cast = 8;
    boolean hasCast();
    StmtPiqi.cast getCast();
    StmtPiqi.castOrBuilder getCastOrBuilder();
    
    // optional .let_exp let_exp = 9;
    boolean hasLetExp();
    StmtPiqi.let_exp getLetExp();
    StmtPiqi.let_expOrBuilder getLetExpOrBuilder();
    
    // optional .unknown unknown = 10;
    boolean hasUnknown();
    StmtPiqi.unknown getUnknown();
    StmtPiqi.unknownOrBuilder getUnknownOrBuilder();
    
    // optional .ite ite = 11;
    boolean hasIte();
    StmtPiqi.ite getIte();
    StmtPiqi.iteOrBuilder getIteOrBuilder();
    
    // optional .extract extract = 12;
    boolean hasExtract();
    StmtPiqi.extract getExtract();
    StmtPiqi.extractOrBuilder getExtractOrBuilder();
    
    // optional .concat concat = 13;
    boolean hasConcat();
    StmtPiqi.concat getConcat();
    StmtPiqi.concatOrBuilder getConcatOrBuilder();
  }
  public static final class exp extends
      com.google.protobuf.GeneratedMessage
      implements expOrBuilder {
    // Use exp.newBuilder() to construct.
    private exp(Builder builder) {
      super(builder);
    }
    private exp(boolean noInit) {}
    
    private static final exp defaultInstance;
    public static exp getDefaultInstance() {
      return defaultInstance;
    }
    
    public exp getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_exp_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_exp_fieldAccessorTable;
    }
    
    private int bitField0_;
    // optional .load load = 1;
    public static final int LOAD_FIELD_NUMBER = 1;
    private StmtPiqi.load load_;
    public boolean hasLoad() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.load getLoad() {
      return load_;
    }
    public StmtPiqi.loadOrBuilder getLoadOrBuilder() {
      return load_;
    }
    
    // optional .store store = 2;
    public static final int STORE_FIELD_NUMBER = 2;
    private StmtPiqi.store store_;
    public boolean hasStore() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.store getStore() {
      return store_;
    }
    public StmtPiqi.storeOrBuilder getStoreOrBuilder() {
      return store_;
    }
    
    // optional .binop binop = 3;
    public static final int BINOP_FIELD_NUMBER = 3;
    private StmtPiqi.binop binop_;
    public boolean hasBinop() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public StmtPiqi.binop getBinop() {
      return binop_;
    }
    public StmtPiqi.binopOrBuilder getBinopOrBuilder() {
      return binop_;
    }
    
    // optional .unop unop = 4;
    public static final int UNOP_FIELD_NUMBER = 4;
    private StmtPiqi.unop unop_;
    public boolean hasUnop() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    public StmtPiqi.unop getUnop() {
      return unop_;
    }
    public StmtPiqi.unopOrBuilder getUnopOrBuilder() {
      return unop_;
    }
    
    // optional .var var = 5;
    public static final int VAR_FIELD_NUMBER = 5;
    private StmtPiqi.var var_;
    public boolean hasVar() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    public StmtPiqi.var getVar() {
      return var_;
    }
    public StmtPiqi.varOrBuilder getVarOrBuilder() {
      return var_;
    }
    
    // optional string lab = 6;
    public static final int LAB_FIELD_NUMBER = 6;
    private java.lang.Object lab_;
    public boolean hasLab() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    public String getLab() {
      java.lang.Object ref = lab_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          lab_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getLabBytes() {
      java.lang.Object ref = lab_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        lab_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional .inte inte = 7;
    public static final int INTE_FIELD_NUMBER = 7;
    private StmtPiqi.inte inte_;
    public boolean hasInte() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    public StmtPiqi.inte getInte() {
      return inte_;
    }
    public StmtPiqi.inteOrBuilder getInteOrBuilder() {
      return inte_;
    }
    
    // optional .cast cast = 8;
    public static final int CAST_FIELD_NUMBER = 8;
    private StmtPiqi.cast cast_;
    public boolean hasCast() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    public StmtPiqi.cast getCast() {
      return cast_;
    }
    public StmtPiqi.castOrBuilder getCastOrBuilder() {
      return cast_;
    }
    
    // optional .let_exp let_exp = 9;
    public static final int LET_EXP_FIELD_NUMBER = 9;
    private StmtPiqi.let_exp letExp_;
    public boolean hasLetExp() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    public StmtPiqi.let_exp getLetExp() {
      return letExp_;
    }
    public StmtPiqi.let_expOrBuilder getLetExpOrBuilder() {
      return letExp_;
    }
    
    // optional .unknown unknown = 10;
    public static final int UNKNOWN_FIELD_NUMBER = 10;
    private StmtPiqi.unknown unknown_;
    public boolean hasUnknown() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    public StmtPiqi.unknown getUnknown() {
      return unknown_;
    }
    public StmtPiqi.unknownOrBuilder getUnknownOrBuilder() {
      return unknown_;
    }
    
    // optional .ite ite = 11;
    public static final int ITE_FIELD_NUMBER = 11;
    private StmtPiqi.ite ite_;
    public boolean hasIte() {
      return ((bitField0_ & 0x00000400) == 0x00000400);
    }
    public StmtPiqi.ite getIte() {
      return ite_;
    }
    public StmtPiqi.iteOrBuilder getIteOrBuilder() {
      return ite_;
    }
    
    // optional .extract extract = 12;
    public static final int EXTRACT_FIELD_NUMBER = 12;
    private StmtPiqi.extract extract_;
    public boolean hasExtract() {
      return ((bitField0_ & 0x00000800) == 0x00000800);
    }
    public StmtPiqi.extract getExtract() {
      return extract_;
    }
    public StmtPiqi.extractOrBuilder getExtractOrBuilder() {
      return extract_;
    }
    
    // optional .concat concat = 13;
    public static final int CONCAT_FIELD_NUMBER = 13;
    private StmtPiqi.concat concat_;
    public boolean hasConcat() {
      return ((bitField0_ & 0x00001000) == 0x00001000);
    }
    public StmtPiqi.concat getConcat() {
      return concat_;
    }
    public StmtPiqi.concatOrBuilder getConcatOrBuilder() {
      return concat_;
    }
    
    private void initFields() {
      load_ = StmtPiqi.load.getDefaultInstance();
      store_ = StmtPiqi.store.getDefaultInstance();
      binop_ = StmtPiqi.binop.getDefaultInstance();
      unop_ = StmtPiqi.unop.getDefaultInstance();
      var_ = StmtPiqi.var.getDefaultInstance();
      lab_ = "";
      inte_ = StmtPiqi.inte.getDefaultInstance();
      cast_ = StmtPiqi.cast.getDefaultInstance();
      letExp_ = StmtPiqi.let_exp.getDefaultInstance();
      unknown_ = StmtPiqi.unknown.getDefaultInstance();
      ite_ = StmtPiqi.ite.getDefaultInstance();
      extract_ = StmtPiqi.extract.getDefaultInstance();
      concat_ = StmtPiqi.concat.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (hasLoad()) {
        if (!getLoad().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasStore()) {
        if (!getStore().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasBinop()) {
        if (!getBinop().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasUnop()) {
        if (!getUnop().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasVar()) {
        if (!getVar().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasInte()) {
        if (!getInte().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasCast()) {
        if (!getCast().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasLetExp()) {
        if (!getLetExp().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasUnknown()) {
        if (!getUnknown().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasIte()) {
        if (!getIte().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasExtract()) {
        if (!getExtract().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasConcat()) {
        if (!getConcat().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, load_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, store_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, binop_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, unop_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(5, var_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBytes(6, getLabBytes());
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeMessage(7, inte_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeMessage(8, cast_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeMessage(9, letExp_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeMessage(10, unknown_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        output.writeMessage(11, ite_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        output.writeMessage(12, extract_);
      }
      if (((bitField0_ & 0x00001000) == 0x00001000)) {
        output.writeMessage(13, concat_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, load_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, store_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, binop_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, unop_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, var_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(6, getLabBytes());
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, inte_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, cast_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, letExp_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, unknown_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, ite_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, extract_);
      }
      if (((bitField0_ & 0x00001000) == 0x00001000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, concat_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.exp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.exp parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.exp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.exp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.exp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.exp parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.exp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.exp parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.exp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.exp parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.exp prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.expOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_exp_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_exp_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.exp.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getLoadFieldBuilder();
          getStoreFieldBuilder();
          getBinopFieldBuilder();
          getUnopFieldBuilder();
          getVarFieldBuilder();
          getInteFieldBuilder();
          getCastFieldBuilder();
          getLetExpFieldBuilder();
          getUnknownFieldBuilder();
          getIteFieldBuilder();
          getExtractFieldBuilder();
          getConcatFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (loadBuilder_ == null) {
          load_ = StmtPiqi.load.getDefaultInstance();
        } else {
          loadBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (storeBuilder_ == null) {
          store_ = StmtPiqi.store.getDefaultInstance();
        } else {
          storeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (binopBuilder_ == null) {
          binop_ = StmtPiqi.binop.getDefaultInstance();
        } else {
          binopBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (unopBuilder_ == null) {
          unop_ = StmtPiqi.unop.getDefaultInstance();
        } else {
          unopBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        if (varBuilder_ == null) {
          var_ = StmtPiqi.var.getDefaultInstance();
        } else {
          varBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        lab_ = "";
        bitField0_ = (bitField0_ & ~0x00000020);
        if (inteBuilder_ == null) {
          inte_ = StmtPiqi.inte.getDefaultInstance();
        } else {
          inteBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        if (castBuilder_ == null) {
          cast_ = StmtPiqi.cast.getDefaultInstance();
        } else {
          castBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        if (letExpBuilder_ == null) {
          letExp_ = StmtPiqi.let_exp.getDefaultInstance();
        } else {
          letExpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        if (unknownBuilder_ == null) {
          unknown_ = StmtPiqi.unknown.getDefaultInstance();
        } else {
          unknownBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000200);
        if (iteBuilder_ == null) {
          ite_ = StmtPiqi.ite.getDefaultInstance();
        } else {
          iteBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000400);
        if (extractBuilder_ == null) {
          extract_ = StmtPiqi.extract.getDefaultInstance();
        } else {
          extractBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000800);
        if (concatBuilder_ == null) {
          concat_ = StmtPiqi.concat.getDefaultInstance();
        } else {
          concatBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00001000);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.exp.getDescriptor();
      }
      
      public StmtPiqi.exp getDefaultInstanceForType() {
        return StmtPiqi.exp.getDefaultInstance();
      }
      
      public StmtPiqi.exp build() {
        StmtPiqi.exp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.exp buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.exp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.exp buildPartial() {
        StmtPiqi.exp result = new StmtPiqi.exp(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (loadBuilder_ == null) {
          result.load_ = load_;
        } else {
          result.load_ = loadBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (storeBuilder_ == null) {
          result.store_ = store_;
        } else {
          result.store_ = storeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (binopBuilder_ == null) {
          result.binop_ = binop_;
        } else {
          result.binop_ = binopBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        if (unopBuilder_ == null) {
          result.unop_ = unop_;
        } else {
          result.unop_ = unopBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        if (varBuilder_ == null) {
          result.var_ = var_;
        } else {
          result.var_ = varBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.lab_ = lab_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        if (inteBuilder_ == null) {
          result.inte_ = inte_;
        } else {
          result.inte_ = inteBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        if (castBuilder_ == null) {
          result.cast_ = cast_;
        } else {
          result.cast_ = castBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000100;
        }
        if (letExpBuilder_ == null) {
          result.letExp_ = letExp_;
        } else {
          result.letExp_ = letExpBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000200;
        }
        if (unknownBuilder_ == null) {
          result.unknown_ = unknown_;
        } else {
          result.unknown_ = unknownBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
          to_bitField0_ |= 0x00000400;
        }
        if (iteBuilder_ == null) {
          result.ite_ = ite_;
        } else {
          result.ite_ = iteBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
          to_bitField0_ |= 0x00000800;
        }
        if (extractBuilder_ == null) {
          result.extract_ = extract_;
        } else {
          result.extract_ = extractBuilder_.build();
        }
        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
          to_bitField0_ |= 0x00001000;
        }
        if (concatBuilder_ == null) {
          result.concat_ = concat_;
        } else {
          result.concat_ = concatBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.exp) {
          return mergeFrom((StmtPiqi.exp)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.exp other) {
        if (other == StmtPiqi.exp.getDefaultInstance()) return this;
        if (other.hasLoad()) {
          mergeLoad(other.getLoad());
        }
        if (other.hasStore()) {
          mergeStore(other.getStore());
        }
        if (other.hasBinop()) {
          mergeBinop(other.getBinop());
        }
        if (other.hasUnop()) {
          mergeUnop(other.getUnop());
        }
        if (other.hasVar()) {
          mergeVar(other.getVar());
        }
        if (other.hasLab()) {
          setLab(other.getLab());
        }
        if (other.hasInte()) {
          mergeInte(other.getInte());
        }
        if (other.hasCast()) {
          mergeCast(other.getCast());
        }
        if (other.hasLetExp()) {
          mergeLetExp(other.getLetExp());
        }
        if (other.hasUnknown()) {
          mergeUnknown(other.getUnknown());
        }
        if (other.hasIte()) {
          mergeIte(other.getIte());
        }
        if (other.hasExtract()) {
          mergeExtract(other.getExtract());
        }
        if (other.hasConcat()) {
          mergeConcat(other.getConcat());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (hasLoad()) {
          if (!getLoad().isInitialized()) {
            
            return false;
          }
        }
        if (hasStore()) {
          if (!getStore().isInitialized()) {
            
            return false;
          }
        }
        if (hasBinop()) {
          if (!getBinop().isInitialized()) {
            
            return false;
          }
        }
        if (hasUnop()) {
          if (!getUnop().isInitialized()) {
            
            return false;
          }
        }
        if (hasVar()) {
          if (!getVar().isInitialized()) {
            
            return false;
          }
        }
        if (hasInte()) {
          if (!getInte().isInitialized()) {
            
            return false;
          }
        }
        if (hasCast()) {
          if (!getCast().isInitialized()) {
            
            return false;
          }
        }
        if (hasLetExp()) {
          if (!getLetExp().isInitialized()) {
            
            return false;
          }
        }
        if (hasUnknown()) {
          if (!getUnknown().isInitialized()) {
            
            return false;
          }
        }
        if (hasIte()) {
          if (!getIte().isInitialized()) {
            
            return false;
          }
        }
        if (hasExtract()) {
          if (!getExtract().isInitialized()) {
            
            return false;
          }
        }
        if (hasConcat()) {
          if (!getConcat().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.load.Builder subBuilder = StmtPiqi.load.newBuilder();
              if (hasLoad()) {
                subBuilder.mergeFrom(getLoad());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setLoad(subBuilder.buildPartial());
              break;
            }
            case 18: {
              StmtPiqi.store.Builder subBuilder = StmtPiqi.store.newBuilder();
              if (hasStore()) {
                subBuilder.mergeFrom(getStore());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setStore(subBuilder.buildPartial());
              break;
            }
            case 26: {
              StmtPiqi.binop.Builder subBuilder = StmtPiqi.binop.newBuilder();
              if (hasBinop()) {
                subBuilder.mergeFrom(getBinop());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setBinop(subBuilder.buildPartial());
              break;
            }
            case 34: {
              StmtPiqi.unop.Builder subBuilder = StmtPiqi.unop.newBuilder();
              if (hasUnop()) {
                subBuilder.mergeFrom(getUnop());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setUnop(subBuilder.buildPartial());
              break;
            }
            case 42: {
              StmtPiqi.var.Builder subBuilder = StmtPiqi.var.newBuilder();
              if (hasVar()) {
                subBuilder.mergeFrom(getVar());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setVar(subBuilder.buildPartial());
              break;
            }
            case 50: {
              bitField0_ |= 0x00000020;
              lab_ = input.readBytes();
              break;
            }
            case 58: {
              StmtPiqi.inte.Builder subBuilder = StmtPiqi.inte.newBuilder();
              if (hasInte()) {
                subBuilder.mergeFrom(getInte());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setInte(subBuilder.buildPartial());
              break;
            }
            case 66: {
              StmtPiqi.cast.Builder subBuilder = StmtPiqi.cast.newBuilder();
              if (hasCast()) {
                subBuilder.mergeFrom(getCast());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setCast(subBuilder.buildPartial());
              break;
            }
            case 74: {
              StmtPiqi.let_exp.Builder subBuilder = StmtPiqi.let_exp.newBuilder();
              if (hasLetExp()) {
                subBuilder.mergeFrom(getLetExp());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setLetExp(subBuilder.buildPartial());
              break;
            }
            case 82: {
              StmtPiqi.unknown.Builder subBuilder = StmtPiqi.unknown.newBuilder();
              if (hasUnknown()) {
                subBuilder.mergeFrom(getUnknown());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setUnknown(subBuilder.buildPartial());
              break;
            }
            case 90: {
              StmtPiqi.ite.Builder subBuilder = StmtPiqi.ite.newBuilder();
              if (hasIte()) {
                subBuilder.mergeFrom(getIte());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setIte(subBuilder.buildPartial());
              break;
            }
            case 98: {
              StmtPiqi.extract.Builder subBuilder = StmtPiqi.extract.newBuilder();
              if (hasExtract()) {
                subBuilder.mergeFrom(getExtract());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setExtract(subBuilder.buildPartial());
              break;
            }
            case 106: {
              StmtPiqi.concat.Builder subBuilder = StmtPiqi.concat.newBuilder();
              if (hasConcat()) {
                subBuilder.mergeFrom(getConcat());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setConcat(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // optional .load load = 1;
      private StmtPiqi.load load_ = StmtPiqi.load.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.load, StmtPiqi.load.Builder, StmtPiqi.loadOrBuilder> loadBuilder_;
      public boolean hasLoad() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.load getLoad() {
        if (loadBuilder_ == null) {
          return load_;
        } else {
          return loadBuilder_.getMessage();
        }
      }
      public Builder setLoad(StmtPiqi.load value) {
        if (loadBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          load_ = value;
          onChanged();
        } else {
          loadBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setLoad(
          StmtPiqi.load.Builder builderForValue) {
        if (loadBuilder_ == null) {
          load_ = builderForValue.build();
          onChanged();
        } else {
          loadBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeLoad(StmtPiqi.load value) {
        if (loadBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              load_ != StmtPiqi.load.getDefaultInstance()) {
            load_ =
              StmtPiqi.load.newBuilder(load_).mergeFrom(value).buildPartial();
          } else {
            load_ = value;
          }
          onChanged();
        } else {
          loadBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearLoad() {
        if (loadBuilder_ == null) {
          load_ = StmtPiqi.load.getDefaultInstance();
          onChanged();
        } else {
          loadBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public StmtPiqi.load.Builder getLoadBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getLoadFieldBuilder().getBuilder();
      }
      public StmtPiqi.loadOrBuilder getLoadOrBuilder() {
        if (loadBuilder_ != null) {
          return loadBuilder_.getMessageOrBuilder();
        } else {
          return load_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.load, StmtPiqi.load.Builder, StmtPiqi.loadOrBuilder> 
          getLoadFieldBuilder() {
        if (loadBuilder_ == null) {
          loadBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.load, StmtPiqi.load.Builder, StmtPiqi.loadOrBuilder>(
                  load_,
                  getParentForChildren(),
                  isClean());
          load_ = null;
        }
        return loadBuilder_;
      }
      
      // optional .store store = 2;
      private StmtPiqi.store store_ = StmtPiqi.store.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.store, StmtPiqi.store.Builder, StmtPiqi.storeOrBuilder> storeBuilder_;
      public boolean hasStore() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.store getStore() {
        if (storeBuilder_ == null) {
          return store_;
        } else {
          return storeBuilder_.getMessage();
        }
      }
      public Builder setStore(StmtPiqi.store value) {
        if (storeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          store_ = value;
          onChanged();
        } else {
          storeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setStore(
          StmtPiqi.store.Builder builderForValue) {
        if (storeBuilder_ == null) {
          store_ = builderForValue.build();
          onChanged();
        } else {
          storeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeStore(StmtPiqi.store value) {
        if (storeBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              store_ != StmtPiqi.store.getDefaultInstance()) {
            store_ =
              StmtPiqi.store.newBuilder(store_).mergeFrom(value).buildPartial();
          } else {
            store_ = value;
          }
          onChanged();
        } else {
          storeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearStore() {
        if (storeBuilder_ == null) {
          store_ = StmtPiqi.store.getDefaultInstance();
          onChanged();
        } else {
          storeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.store.Builder getStoreBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getStoreFieldBuilder().getBuilder();
      }
      public StmtPiqi.storeOrBuilder getStoreOrBuilder() {
        if (storeBuilder_ != null) {
          return storeBuilder_.getMessageOrBuilder();
        } else {
          return store_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.store, StmtPiqi.store.Builder, StmtPiqi.storeOrBuilder> 
          getStoreFieldBuilder() {
        if (storeBuilder_ == null) {
          storeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.store, StmtPiqi.store.Builder, StmtPiqi.storeOrBuilder>(
                  store_,
                  getParentForChildren(),
                  isClean());
          store_ = null;
        }
        return storeBuilder_;
      }
      
      // optional .binop binop = 3;
      private StmtPiqi.binop binop_ = StmtPiqi.binop.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.binop, StmtPiqi.binop.Builder, StmtPiqi.binopOrBuilder> binopBuilder_;
      public boolean hasBinop() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public StmtPiqi.binop getBinop() {
        if (binopBuilder_ == null) {
          return binop_;
        } else {
          return binopBuilder_.getMessage();
        }
      }
      public Builder setBinop(StmtPiqi.binop value) {
        if (binopBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          binop_ = value;
          onChanged();
        } else {
          binopBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder setBinop(
          StmtPiqi.binop.Builder builderForValue) {
        if (binopBuilder_ == null) {
          binop_ = builderForValue.build();
          onChanged();
        } else {
          binopBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder mergeBinop(StmtPiqi.binop value) {
        if (binopBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              binop_ != StmtPiqi.binop.getDefaultInstance()) {
            binop_ =
              StmtPiqi.binop.newBuilder(binop_).mergeFrom(value).buildPartial();
          } else {
            binop_ = value;
          }
          onChanged();
        } else {
          binopBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder clearBinop() {
        if (binopBuilder_ == null) {
          binop_ = StmtPiqi.binop.getDefaultInstance();
          onChanged();
        } else {
          binopBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      public StmtPiqi.binop.Builder getBinopBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getBinopFieldBuilder().getBuilder();
      }
      public StmtPiqi.binopOrBuilder getBinopOrBuilder() {
        if (binopBuilder_ != null) {
          return binopBuilder_.getMessageOrBuilder();
        } else {
          return binop_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.binop, StmtPiqi.binop.Builder, StmtPiqi.binopOrBuilder> 
          getBinopFieldBuilder() {
        if (binopBuilder_ == null) {
          binopBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.binop, StmtPiqi.binop.Builder, StmtPiqi.binopOrBuilder>(
                  binop_,
                  getParentForChildren(),
                  isClean());
          binop_ = null;
        }
        return binopBuilder_;
      }
      
      // optional .unop unop = 4;
      private StmtPiqi.unop unop_ = StmtPiqi.unop.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.unop, StmtPiqi.unop.Builder, StmtPiqi.unopOrBuilder> unopBuilder_;
      public boolean hasUnop() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public StmtPiqi.unop getUnop() {
        if (unopBuilder_ == null) {
          return unop_;
        } else {
          return unopBuilder_.getMessage();
        }
      }
      public Builder setUnop(StmtPiqi.unop value) {
        if (unopBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          unop_ = value;
          onChanged();
        } else {
          unopBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder setUnop(
          StmtPiqi.unop.Builder builderForValue) {
        if (unopBuilder_ == null) {
          unop_ = builderForValue.build();
          onChanged();
        } else {
          unopBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder mergeUnop(StmtPiqi.unop value) {
        if (unopBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008) &&
              unop_ != StmtPiqi.unop.getDefaultInstance()) {
            unop_ =
              StmtPiqi.unop.newBuilder(unop_).mergeFrom(value).buildPartial();
          } else {
            unop_ = value;
          }
          onChanged();
        } else {
          unopBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder clearUnop() {
        if (unopBuilder_ == null) {
          unop_ = StmtPiqi.unop.getDefaultInstance();
          onChanged();
        } else {
          unopBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      public StmtPiqi.unop.Builder getUnopBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getUnopFieldBuilder().getBuilder();
      }
      public StmtPiqi.unopOrBuilder getUnopOrBuilder() {
        if (unopBuilder_ != null) {
          return unopBuilder_.getMessageOrBuilder();
        } else {
          return unop_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.unop, StmtPiqi.unop.Builder, StmtPiqi.unopOrBuilder> 
          getUnopFieldBuilder() {
        if (unopBuilder_ == null) {
          unopBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.unop, StmtPiqi.unop.Builder, StmtPiqi.unopOrBuilder>(
                  unop_,
                  getParentForChildren(),
                  isClean());
          unop_ = null;
        }
        return unopBuilder_;
      }
      
      // optional .var var = 5;
      private StmtPiqi.var var_ = StmtPiqi.var.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.var, StmtPiqi.var.Builder, StmtPiqi.varOrBuilder> varBuilder_;
      public boolean hasVar() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public StmtPiqi.var getVar() {
        if (varBuilder_ == null) {
          return var_;
        } else {
          return varBuilder_.getMessage();
        }
      }
      public Builder setVar(StmtPiqi.var value) {
        if (varBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          var_ = value;
          onChanged();
        } else {
          varBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      public Builder setVar(
          StmtPiqi.var.Builder builderForValue) {
        if (varBuilder_ == null) {
          var_ = builderForValue.build();
          onChanged();
        } else {
          varBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      public Builder mergeVar(StmtPiqi.var value) {
        if (varBuilder_ == null) {
          if (((bitField0_ & 0x00000010) == 0x00000010) &&
              var_ != StmtPiqi.var.getDefaultInstance()) {
            var_ =
              StmtPiqi.var.newBuilder(var_).mergeFrom(value).buildPartial();
          } else {
            var_ = value;
          }
          onChanged();
        } else {
          varBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      public Builder clearVar() {
        if (varBuilder_ == null) {
          var_ = StmtPiqi.var.getDefaultInstance();
          onChanged();
        } else {
          varBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      public StmtPiqi.var.Builder getVarBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getVarFieldBuilder().getBuilder();
      }
      public StmtPiqi.varOrBuilder getVarOrBuilder() {
        if (varBuilder_ != null) {
          return varBuilder_.getMessageOrBuilder();
        } else {
          return var_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.var, StmtPiqi.var.Builder, StmtPiqi.varOrBuilder> 
          getVarFieldBuilder() {
        if (varBuilder_ == null) {
          varBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.var, StmtPiqi.var.Builder, StmtPiqi.varOrBuilder>(
                  var_,
                  getParentForChildren(),
                  isClean());
          var_ = null;
        }
        return varBuilder_;
      }
      
      // optional string lab = 6;
      private java.lang.Object lab_ = "";
      public boolean hasLab() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      public String getLab() {
        java.lang.Object ref = lab_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          lab_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setLab(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        lab_ = value;
        onChanged();
        return this;
      }
      public Builder clearLab() {
        bitField0_ = (bitField0_ & ~0x00000020);
        lab_ = getDefaultInstance().getLab();
        onChanged();
        return this;
      }
      void setLab(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000020;
        lab_ = value;
        onChanged();
      }
      
      // optional .inte inte = 7;
      private StmtPiqi.inte inte_ = StmtPiqi.inte.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.inte, StmtPiqi.inte.Builder, StmtPiqi.inteOrBuilder> inteBuilder_;
      public boolean hasInte() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      public StmtPiqi.inte getInte() {
        if (inteBuilder_ == null) {
          return inte_;
        } else {
          return inteBuilder_.getMessage();
        }
      }
      public Builder setInte(StmtPiqi.inte value) {
        if (inteBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          inte_ = value;
          onChanged();
        } else {
          inteBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      public Builder setInte(
          StmtPiqi.inte.Builder builderForValue) {
        if (inteBuilder_ == null) {
          inte_ = builderForValue.build();
          onChanged();
        } else {
          inteBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      public Builder mergeInte(StmtPiqi.inte value) {
        if (inteBuilder_ == null) {
          if (((bitField0_ & 0x00000040) == 0x00000040) &&
              inte_ != StmtPiqi.inte.getDefaultInstance()) {
            inte_ =
              StmtPiqi.inte.newBuilder(inte_).mergeFrom(value).buildPartial();
          } else {
            inte_ = value;
          }
          onChanged();
        } else {
          inteBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      public Builder clearInte() {
        if (inteBuilder_ == null) {
          inte_ = StmtPiqi.inte.getDefaultInstance();
          onChanged();
        } else {
          inteBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }
      public StmtPiqi.inte.Builder getInteBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getInteFieldBuilder().getBuilder();
      }
      public StmtPiqi.inteOrBuilder getInteOrBuilder() {
        if (inteBuilder_ != null) {
          return inteBuilder_.getMessageOrBuilder();
        } else {
          return inte_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.inte, StmtPiqi.inte.Builder, StmtPiqi.inteOrBuilder> 
          getInteFieldBuilder() {
        if (inteBuilder_ == null) {
          inteBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.inte, StmtPiqi.inte.Builder, StmtPiqi.inteOrBuilder>(
                  inte_,
                  getParentForChildren(),
                  isClean());
          inte_ = null;
        }
        return inteBuilder_;
      }
      
      // optional .cast cast = 8;
      private StmtPiqi.cast cast_ = StmtPiqi.cast.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.cast, StmtPiqi.cast.Builder, StmtPiqi.castOrBuilder> castBuilder_;
      public boolean hasCast() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      public StmtPiqi.cast getCast() {
        if (castBuilder_ == null) {
          return cast_;
        } else {
          return castBuilder_.getMessage();
        }
      }
      public Builder setCast(StmtPiqi.cast value) {
        if (castBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          cast_ = value;
          onChanged();
        } else {
          castBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      public Builder setCast(
          StmtPiqi.cast.Builder builderForValue) {
        if (castBuilder_ == null) {
          cast_ = builderForValue.build();
          onChanged();
        } else {
          castBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      public Builder mergeCast(StmtPiqi.cast value) {
        if (castBuilder_ == null) {
          if (((bitField0_ & 0x00000080) == 0x00000080) &&
              cast_ != StmtPiqi.cast.getDefaultInstance()) {
            cast_ =
              StmtPiqi.cast.newBuilder(cast_).mergeFrom(value).buildPartial();
          } else {
            cast_ = value;
          }
          onChanged();
        } else {
          castBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      public Builder clearCast() {
        if (castBuilder_ == null) {
          cast_ = StmtPiqi.cast.getDefaultInstance();
          onChanged();
        } else {
          castBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }
      public StmtPiqi.cast.Builder getCastBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getCastFieldBuilder().getBuilder();
      }
      public StmtPiqi.castOrBuilder getCastOrBuilder() {
        if (castBuilder_ != null) {
          return castBuilder_.getMessageOrBuilder();
        } else {
          return cast_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.cast, StmtPiqi.cast.Builder, StmtPiqi.castOrBuilder> 
          getCastFieldBuilder() {
        if (castBuilder_ == null) {
          castBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.cast, StmtPiqi.cast.Builder, StmtPiqi.castOrBuilder>(
                  cast_,
                  getParentForChildren(),
                  isClean());
          cast_ = null;
        }
        return castBuilder_;
      }
      
      // optional .let_exp let_exp = 9;
      private StmtPiqi.let_exp letExp_ = StmtPiqi.let_exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.let_exp, StmtPiqi.let_exp.Builder, StmtPiqi.let_expOrBuilder> letExpBuilder_;
      public boolean hasLetExp() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      public StmtPiqi.let_exp getLetExp() {
        if (letExpBuilder_ == null) {
          return letExp_;
        } else {
          return letExpBuilder_.getMessage();
        }
      }
      public Builder setLetExp(StmtPiqi.let_exp value) {
        if (letExpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          letExp_ = value;
          onChanged();
        } else {
          letExpBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      public Builder setLetExp(
          StmtPiqi.let_exp.Builder builderForValue) {
        if (letExpBuilder_ == null) {
          letExp_ = builderForValue.build();
          onChanged();
        } else {
          letExpBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      public Builder mergeLetExp(StmtPiqi.let_exp value) {
        if (letExpBuilder_ == null) {
          if (((bitField0_ & 0x00000100) == 0x00000100) &&
              letExp_ != StmtPiqi.let_exp.getDefaultInstance()) {
            letExp_ =
              StmtPiqi.let_exp.newBuilder(letExp_).mergeFrom(value).buildPartial();
          } else {
            letExp_ = value;
          }
          onChanged();
        } else {
          letExpBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      public Builder clearLetExp() {
        if (letExpBuilder_ == null) {
          letExp_ = StmtPiqi.let_exp.getDefaultInstance();
          onChanged();
        } else {
          letExpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        return this;
      }
      public StmtPiqi.let_exp.Builder getLetExpBuilder() {
        bitField0_ |= 0x00000100;
        onChanged();
        return getLetExpFieldBuilder().getBuilder();
      }
      public StmtPiqi.let_expOrBuilder getLetExpOrBuilder() {
        if (letExpBuilder_ != null) {
          return letExpBuilder_.getMessageOrBuilder();
        } else {
          return letExp_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.let_exp, StmtPiqi.let_exp.Builder, StmtPiqi.let_expOrBuilder> 
          getLetExpFieldBuilder() {
        if (letExpBuilder_ == null) {
          letExpBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.let_exp, StmtPiqi.let_exp.Builder, StmtPiqi.let_expOrBuilder>(
                  letExp_,
                  getParentForChildren(),
                  isClean());
          letExp_ = null;
        }
        return letExpBuilder_;
      }
      
      // optional .unknown unknown = 10;
      private StmtPiqi.unknown unknown_ = StmtPiqi.unknown.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.unknown, StmtPiqi.unknown.Builder, StmtPiqi.unknownOrBuilder> unknownBuilder_;
      public boolean hasUnknown() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      public StmtPiqi.unknown getUnknown() {
        if (unknownBuilder_ == null) {
          return unknown_;
        } else {
          return unknownBuilder_.getMessage();
        }
      }
      public Builder setUnknown(StmtPiqi.unknown value) {
        if (unknownBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          unknown_ = value;
          onChanged();
        } else {
          unknownBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000200;
        return this;
      }
      public Builder setUnknown(
          StmtPiqi.unknown.Builder builderForValue) {
        if (unknownBuilder_ == null) {
          unknown_ = builderForValue.build();
          onChanged();
        } else {
          unknownBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000200;
        return this;
      }
      public Builder mergeUnknown(StmtPiqi.unknown value) {
        if (unknownBuilder_ == null) {
          if (((bitField0_ & 0x00000200) == 0x00000200) &&
              unknown_ != StmtPiqi.unknown.getDefaultInstance()) {
            unknown_ =
              StmtPiqi.unknown.newBuilder(unknown_).mergeFrom(value).buildPartial();
          } else {
            unknown_ = value;
          }
          onChanged();
        } else {
          unknownBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000200;
        return this;
      }
      public Builder clearUnknown() {
        if (unknownBuilder_ == null) {
          unknown_ = StmtPiqi.unknown.getDefaultInstance();
          onChanged();
        } else {
          unknownBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000200);
        return this;
      }
      public StmtPiqi.unknown.Builder getUnknownBuilder() {
        bitField0_ |= 0x00000200;
        onChanged();
        return getUnknownFieldBuilder().getBuilder();
      }
      public StmtPiqi.unknownOrBuilder getUnknownOrBuilder() {
        if (unknownBuilder_ != null) {
          return unknownBuilder_.getMessageOrBuilder();
        } else {
          return unknown_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.unknown, StmtPiqi.unknown.Builder, StmtPiqi.unknownOrBuilder> 
          getUnknownFieldBuilder() {
        if (unknownBuilder_ == null) {
          unknownBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.unknown, StmtPiqi.unknown.Builder, StmtPiqi.unknownOrBuilder>(
                  unknown_,
                  getParentForChildren(),
                  isClean());
          unknown_ = null;
        }
        return unknownBuilder_;
      }
      
      // optional .ite ite = 11;
      private StmtPiqi.ite ite_ = StmtPiqi.ite.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.ite, StmtPiqi.ite.Builder, StmtPiqi.iteOrBuilder> iteBuilder_;
      public boolean hasIte() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      public StmtPiqi.ite getIte() {
        if (iteBuilder_ == null) {
          return ite_;
        } else {
          return iteBuilder_.getMessage();
        }
      }
      public Builder setIte(StmtPiqi.ite value) {
        if (iteBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ite_ = value;
          onChanged();
        } else {
          iteBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000400;
        return this;
      }
      public Builder setIte(
          StmtPiqi.ite.Builder builderForValue) {
        if (iteBuilder_ == null) {
          ite_ = builderForValue.build();
          onChanged();
        } else {
          iteBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000400;
        return this;
      }
      public Builder mergeIte(StmtPiqi.ite value) {
        if (iteBuilder_ == null) {
          if (((bitField0_ & 0x00000400) == 0x00000400) &&
              ite_ != StmtPiqi.ite.getDefaultInstance()) {
            ite_ =
              StmtPiqi.ite.newBuilder(ite_).mergeFrom(value).buildPartial();
          } else {
            ite_ = value;
          }
          onChanged();
        } else {
          iteBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000400;
        return this;
      }
      public Builder clearIte() {
        if (iteBuilder_ == null) {
          ite_ = StmtPiqi.ite.getDefaultInstance();
          onChanged();
        } else {
          iteBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000400);
        return this;
      }
      public StmtPiqi.ite.Builder getIteBuilder() {
        bitField0_ |= 0x00000400;
        onChanged();
        return getIteFieldBuilder().getBuilder();
      }
      public StmtPiqi.iteOrBuilder getIteOrBuilder() {
        if (iteBuilder_ != null) {
          return iteBuilder_.getMessageOrBuilder();
        } else {
          return ite_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.ite, StmtPiqi.ite.Builder, StmtPiqi.iteOrBuilder> 
          getIteFieldBuilder() {
        if (iteBuilder_ == null) {
          iteBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.ite, StmtPiqi.ite.Builder, StmtPiqi.iteOrBuilder>(
                  ite_,
                  getParentForChildren(),
                  isClean());
          ite_ = null;
        }
        return iteBuilder_;
      }
      
      // optional .extract extract = 12;
      private StmtPiqi.extract extract_ = StmtPiqi.extract.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.extract, StmtPiqi.extract.Builder, StmtPiqi.extractOrBuilder> extractBuilder_;
      public boolean hasExtract() {
        return ((bitField0_ & 0x00000800) == 0x00000800);
      }
      public StmtPiqi.extract getExtract() {
        if (extractBuilder_ == null) {
          return extract_;
        } else {
          return extractBuilder_.getMessage();
        }
      }
      public Builder setExtract(StmtPiqi.extract value) {
        if (extractBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          extract_ = value;
          onChanged();
        } else {
          extractBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000800;
        return this;
      }
      public Builder setExtract(
          StmtPiqi.extract.Builder builderForValue) {
        if (extractBuilder_ == null) {
          extract_ = builderForValue.build();
          onChanged();
        } else {
          extractBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000800;
        return this;
      }
      public Builder mergeExtract(StmtPiqi.extract value) {
        if (extractBuilder_ == null) {
          if (((bitField0_ & 0x00000800) == 0x00000800) &&
              extract_ != StmtPiqi.extract.getDefaultInstance()) {
            extract_ =
              StmtPiqi.extract.newBuilder(extract_).mergeFrom(value).buildPartial();
          } else {
            extract_ = value;
          }
          onChanged();
        } else {
          extractBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000800;
        return this;
      }
      public Builder clearExtract() {
        if (extractBuilder_ == null) {
          extract_ = StmtPiqi.extract.getDefaultInstance();
          onChanged();
        } else {
          extractBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000800);
        return this;
      }
      public StmtPiqi.extract.Builder getExtractBuilder() {
        bitField0_ |= 0x00000800;
        onChanged();
        return getExtractFieldBuilder().getBuilder();
      }
      public StmtPiqi.extractOrBuilder getExtractOrBuilder() {
        if (extractBuilder_ != null) {
          return extractBuilder_.getMessageOrBuilder();
        } else {
          return extract_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.extract, StmtPiqi.extract.Builder, StmtPiqi.extractOrBuilder> 
          getExtractFieldBuilder() {
        if (extractBuilder_ == null) {
          extractBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.extract, StmtPiqi.extract.Builder, StmtPiqi.extractOrBuilder>(
                  extract_,
                  getParentForChildren(),
                  isClean());
          extract_ = null;
        }
        return extractBuilder_;
      }
      
      // optional .concat concat = 13;
      private StmtPiqi.concat concat_ = StmtPiqi.concat.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.concat, StmtPiqi.concat.Builder, StmtPiqi.concatOrBuilder> concatBuilder_;
      public boolean hasConcat() {
        return ((bitField0_ & 0x00001000) == 0x00001000);
      }
      public StmtPiqi.concat getConcat() {
        if (concatBuilder_ == null) {
          return concat_;
        } else {
          return concatBuilder_.getMessage();
        }
      }
      public Builder setConcat(StmtPiqi.concat value) {
        if (concatBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          concat_ = value;
          onChanged();
        } else {
          concatBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00001000;
        return this;
      }
      public Builder setConcat(
          StmtPiqi.concat.Builder builderForValue) {
        if (concatBuilder_ == null) {
          concat_ = builderForValue.build();
          onChanged();
        } else {
          concatBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00001000;
        return this;
      }
      public Builder mergeConcat(StmtPiqi.concat value) {
        if (concatBuilder_ == null) {
          if (((bitField0_ & 0x00001000) == 0x00001000) &&
              concat_ != StmtPiqi.concat.getDefaultInstance()) {
            concat_ =
              StmtPiqi.concat.newBuilder(concat_).mergeFrom(value).buildPartial();
          } else {
            concat_ = value;
          }
          onChanged();
        } else {
          concatBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00001000;
        return this;
      }
      public Builder clearConcat() {
        if (concatBuilder_ == null) {
          concat_ = StmtPiqi.concat.getDefaultInstance();
          onChanged();
        } else {
          concatBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00001000);
        return this;
      }
      public StmtPiqi.concat.Builder getConcatBuilder() {
        bitField0_ |= 0x00001000;
        onChanged();
        return getConcatFieldBuilder().getBuilder();
      }
      public StmtPiqi.concatOrBuilder getConcatOrBuilder() {
        if (concatBuilder_ != null) {
          return concatBuilder_.getMessageOrBuilder();
        } else {
          return concat_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.concat, StmtPiqi.concat.Builder, StmtPiqi.concatOrBuilder> 
          getConcatFieldBuilder() {
        if (concatBuilder_ == null) {
          concatBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.concat, StmtPiqi.concat.Builder, StmtPiqi.concatOrBuilder>(
                  concat_,
                  getParentForChildren(),
                  isClean());
          concat_ = null;
        }
        return concatBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:exp)
    }
    
    static {
      defaultInstance = new exp(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:exp)
  }
  
  public interface loadOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .exp memory = 1;
    boolean hasMemory();
    StmtPiqi.exp getMemory();
    StmtPiqi.expOrBuilder getMemoryOrBuilder();
    
    // required .exp address = 2;
    boolean hasAddress();
    StmtPiqi.exp getAddress();
    StmtPiqi.expOrBuilder getAddressOrBuilder();
    
    // required .exp endian = 3;
    boolean hasEndian();
    StmtPiqi.exp getEndian();
    StmtPiqi.expOrBuilder getEndianOrBuilder();
    
    // required .typ typ = 4;
    boolean hasTyp();
    StmtPiqi.typ getTyp();
    StmtPiqi.typOrBuilder getTypOrBuilder();
  }
  public static final class load extends
      com.google.protobuf.GeneratedMessage
      implements loadOrBuilder {
    // Use load.newBuilder() to construct.
    private load(Builder builder) {
      super(builder);
    }
    private load(boolean noInit) {}
    
    private static final load defaultInstance;
    public static load getDefaultInstance() {
      return defaultInstance;
    }
    
    public load getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_load_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_load_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required .exp memory = 1;
    public static final int MEMORY_FIELD_NUMBER = 1;
    private StmtPiqi.exp memory_;
    public boolean hasMemory() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.exp getMemory() {
      return memory_;
    }
    public StmtPiqi.expOrBuilder getMemoryOrBuilder() {
      return memory_;
    }
    
    // required .exp address = 2;
    public static final int ADDRESS_FIELD_NUMBER = 2;
    private StmtPiqi.exp address_;
    public boolean hasAddress() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.exp getAddress() {
      return address_;
    }
    public StmtPiqi.expOrBuilder getAddressOrBuilder() {
      return address_;
    }
    
    // required .exp endian = 3;
    public static final int ENDIAN_FIELD_NUMBER = 3;
    private StmtPiqi.exp endian_;
    public boolean hasEndian() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public StmtPiqi.exp getEndian() {
      return endian_;
    }
    public StmtPiqi.expOrBuilder getEndianOrBuilder() {
      return endian_;
    }
    
    // required .typ typ = 4;
    public static final int TYP_FIELD_NUMBER = 4;
    private StmtPiqi.typ typ_;
    public boolean hasTyp() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    public StmtPiqi.typ getTyp() {
      return typ_;
    }
    public StmtPiqi.typOrBuilder getTypOrBuilder() {
      return typ_;
    }
    
    private void initFields() {
      memory_ = StmtPiqi.exp.getDefaultInstance();
      address_ = StmtPiqi.exp.getDefaultInstance();
      endian_ = StmtPiqi.exp.getDefaultInstance();
      typ_ = StmtPiqi.typ.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasMemory()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAddress()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasEndian()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTyp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getMemory().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getAddress().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getEndian().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTyp().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, memory_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, address_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, endian_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, typ_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, memory_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, address_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, endian_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, typ_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.load parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.load parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.load parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.load parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.load parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.load parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.load parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.load parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.load parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.load parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.load prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.loadOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_load_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_load_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.load.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getMemoryFieldBuilder();
          getAddressFieldBuilder();
          getEndianFieldBuilder();
          getTypFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (memoryBuilder_ == null) {
          memory_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          memoryBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (addressBuilder_ == null) {
          address_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          addressBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (endianBuilder_ == null) {
          endian_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          endianBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (typBuilder_ == null) {
          typ_ = StmtPiqi.typ.getDefaultInstance();
        } else {
          typBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.load.getDescriptor();
      }
      
      public StmtPiqi.load getDefaultInstanceForType() {
        return StmtPiqi.load.getDefaultInstance();
      }
      
      public StmtPiqi.load build() {
        StmtPiqi.load result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.load buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.load result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.load buildPartial() {
        StmtPiqi.load result = new StmtPiqi.load(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (memoryBuilder_ == null) {
          result.memory_ = memory_;
        } else {
          result.memory_ = memoryBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (addressBuilder_ == null) {
          result.address_ = address_;
        } else {
          result.address_ = addressBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (endianBuilder_ == null) {
          result.endian_ = endian_;
        } else {
          result.endian_ = endianBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        if (typBuilder_ == null) {
          result.typ_ = typ_;
        } else {
          result.typ_ = typBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.load) {
          return mergeFrom((StmtPiqi.load)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.load other) {
        if (other == StmtPiqi.load.getDefaultInstance()) return this;
        if (other.hasMemory()) {
          mergeMemory(other.getMemory());
        }
        if (other.hasAddress()) {
          mergeAddress(other.getAddress());
        }
        if (other.hasEndian()) {
          mergeEndian(other.getEndian());
        }
        if (other.hasTyp()) {
          mergeTyp(other.getTyp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasMemory()) {
          
          return false;
        }
        if (!hasAddress()) {
          
          return false;
        }
        if (!hasEndian()) {
          
          return false;
        }
        if (!hasTyp()) {
          
          return false;
        }
        if (!getMemory().isInitialized()) {
          
          return false;
        }
        if (!getAddress().isInitialized()) {
          
          return false;
        }
        if (!getEndian().isInitialized()) {
          
          return false;
        }
        if (!getTyp().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasMemory()) {
                subBuilder.mergeFrom(getMemory());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setMemory(subBuilder.buildPartial());
              break;
            }
            case 18: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasAddress()) {
                subBuilder.mergeFrom(getAddress());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setAddress(subBuilder.buildPartial());
              break;
            }
            case 26: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasEndian()) {
                subBuilder.mergeFrom(getEndian());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setEndian(subBuilder.buildPartial());
              break;
            }
            case 34: {
              StmtPiqi.typ.Builder subBuilder = StmtPiqi.typ.newBuilder();
              if (hasTyp()) {
                subBuilder.mergeFrom(getTyp());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setTyp(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .exp memory = 1;
      private StmtPiqi.exp memory_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> memoryBuilder_;
      public boolean hasMemory() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.exp getMemory() {
        if (memoryBuilder_ == null) {
          return memory_;
        } else {
          return memoryBuilder_.getMessage();
        }
      }
      public Builder setMemory(StmtPiqi.exp value) {
        if (memoryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          memory_ = value;
          onChanged();
        } else {
          memoryBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setMemory(
          StmtPiqi.exp.Builder builderForValue) {
        if (memoryBuilder_ == null) {
          memory_ = builderForValue.build();
          onChanged();
        } else {
          memoryBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeMemory(StmtPiqi.exp value) {
        if (memoryBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              memory_ != StmtPiqi.exp.getDefaultInstance()) {
            memory_ =
              StmtPiqi.exp.newBuilder(memory_).mergeFrom(value).buildPartial();
          } else {
            memory_ = value;
          }
          onChanged();
        } else {
          memoryBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearMemory() {
        if (memoryBuilder_ == null) {
          memory_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          memoryBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public StmtPiqi.exp.Builder getMemoryBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getMemoryFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getMemoryOrBuilder() {
        if (memoryBuilder_ != null) {
          return memoryBuilder_.getMessageOrBuilder();
        } else {
          return memory_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getMemoryFieldBuilder() {
        if (memoryBuilder_ == null) {
          memoryBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  memory_,
                  getParentForChildren(),
                  isClean());
          memory_ = null;
        }
        return memoryBuilder_;
      }
      
      // required .exp address = 2;
      private StmtPiqi.exp address_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> addressBuilder_;
      public boolean hasAddress() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.exp getAddress() {
        if (addressBuilder_ == null) {
          return address_;
        } else {
          return addressBuilder_.getMessage();
        }
      }
      public Builder setAddress(StmtPiqi.exp value) {
        if (addressBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          address_ = value;
          onChanged();
        } else {
          addressBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setAddress(
          StmtPiqi.exp.Builder builderForValue) {
        if (addressBuilder_ == null) {
          address_ = builderForValue.build();
          onChanged();
        } else {
          addressBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeAddress(StmtPiqi.exp value) {
        if (addressBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              address_ != StmtPiqi.exp.getDefaultInstance()) {
            address_ =
              StmtPiqi.exp.newBuilder(address_).mergeFrom(value).buildPartial();
          } else {
            address_ = value;
          }
          onChanged();
        } else {
          addressBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearAddress() {
        if (addressBuilder_ == null) {
          address_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          addressBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.exp.Builder getAddressBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getAddressFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getAddressOrBuilder() {
        if (addressBuilder_ != null) {
          return addressBuilder_.getMessageOrBuilder();
        } else {
          return address_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getAddressFieldBuilder() {
        if (addressBuilder_ == null) {
          addressBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  address_,
                  getParentForChildren(),
                  isClean());
          address_ = null;
        }
        return addressBuilder_;
      }
      
      // required .exp endian = 3;
      private StmtPiqi.exp endian_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> endianBuilder_;
      public boolean hasEndian() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public StmtPiqi.exp getEndian() {
        if (endianBuilder_ == null) {
          return endian_;
        } else {
          return endianBuilder_.getMessage();
        }
      }
      public Builder setEndian(StmtPiqi.exp value) {
        if (endianBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          endian_ = value;
          onChanged();
        } else {
          endianBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder setEndian(
          StmtPiqi.exp.Builder builderForValue) {
        if (endianBuilder_ == null) {
          endian_ = builderForValue.build();
          onChanged();
        } else {
          endianBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder mergeEndian(StmtPiqi.exp value) {
        if (endianBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              endian_ != StmtPiqi.exp.getDefaultInstance()) {
            endian_ =
              StmtPiqi.exp.newBuilder(endian_).mergeFrom(value).buildPartial();
          } else {
            endian_ = value;
          }
          onChanged();
        } else {
          endianBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder clearEndian() {
        if (endianBuilder_ == null) {
          endian_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          endianBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      public StmtPiqi.exp.Builder getEndianBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getEndianFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getEndianOrBuilder() {
        if (endianBuilder_ != null) {
          return endianBuilder_.getMessageOrBuilder();
        } else {
          return endian_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getEndianFieldBuilder() {
        if (endianBuilder_ == null) {
          endianBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  endian_,
                  getParentForChildren(),
                  isClean());
          endian_ = null;
        }
        return endianBuilder_;
      }
      
      // required .typ typ = 4;
      private StmtPiqi.typ typ_ = StmtPiqi.typ.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder> typBuilder_;
      public boolean hasTyp() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public StmtPiqi.typ getTyp() {
        if (typBuilder_ == null) {
          return typ_;
        } else {
          return typBuilder_.getMessage();
        }
      }
      public Builder setTyp(StmtPiqi.typ value) {
        if (typBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          typ_ = value;
          onChanged();
        } else {
          typBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder setTyp(
          StmtPiqi.typ.Builder builderForValue) {
        if (typBuilder_ == null) {
          typ_ = builderForValue.build();
          onChanged();
        } else {
          typBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder mergeTyp(StmtPiqi.typ value) {
        if (typBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008) &&
              typ_ != StmtPiqi.typ.getDefaultInstance()) {
            typ_ =
              StmtPiqi.typ.newBuilder(typ_).mergeFrom(value).buildPartial();
          } else {
            typ_ = value;
          }
          onChanged();
        } else {
          typBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder clearTyp() {
        if (typBuilder_ == null) {
          typ_ = StmtPiqi.typ.getDefaultInstance();
          onChanged();
        } else {
          typBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      public StmtPiqi.typ.Builder getTypBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getTypFieldBuilder().getBuilder();
      }
      public StmtPiqi.typOrBuilder getTypOrBuilder() {
        if (typBuilder_ != null) {
          return typBuilder_.getMessageOrBuilder();
        } else {
          return typ_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder> 
          getTypFieldBuilder() {
        if (typBuilder_ == null) {
          typBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder>(
                  typ_,
                  getParentForChildren(),
                  isClean());
          typ_ = null;
        }
        return typBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:load)
    }
    
    static {
      defaultInstance = new load(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:load)
  }
  
  public interface storeOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .exp memory = 1;
    boolean hasMemory();
    StmtPiqi.exp getMemory();
    StmtPiqi.expOrBuilder getMemoryOrBuilder();
    
    // required .exp address = 2;
    boolean hasAddress();
    StmtPiqi.exp getAddress();
    StmtPiqi.expOrBuilder getAddressOrBuilder();
    
    // required .exp value = 3;
    boolean hasValue();
    StmtPiqi.exp getValue();
    StmtPiqi.expOrBuilder getValueOrBuilder();
    
    // required .exp endian = 4;
    boolean hasEndian();
    StmtPiqi.exp getEndian();
    StmtPiqi.expOrBuilder getEndianOrBuilder();
    
    // required .typ typ = 5;
    boolean hasTyp();
    StmtPiqi.typ getTyp();
    StmtPiqi.typOrBuilder getTypOrBuilder();
  }
  public static final class store extends
      com.google.protobuf.GeneratedMessage
      implements storeOrBuilder {
    // Use store.newBuilder() to construct.
    private store(Builder builder) {
      super(builder);
    }
    private store(boolean noInit) {}
    
    private static final store defaultInstance;
    public static store getDefaultInstance() {
      return defaultInstance;
    }
    
    public store getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_store_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_store_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required .exp memory = 1;
    public static final int MEMORY_FIELD_NUMBER = 1;
    private StmtPiqi.exp memory_;
    public boolean hasMemory() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.exp getMemory() {
      return memory_;
    }
    public StmtPiqi.expOrBuilder getMemoryOrBuilder() {
      return memory_;
    }
    
    // required .exp address = 2;
    public static final int ADDRESS_FIELD_NUMBER = 2;
    private StmtPiqi.exp address_;
    public boolean hasAddress() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.exp getAddress() {
      return address_;
    }
    public StmtPiqi.expOrBuilder getAddressOrBuilder() {
      return address_;
    }
    
    // required .exp value = 3;
    public static final int VALUE_FIELD_NUMBER = 3;
    private StmtPiqi.exp value_;
    public boolean hasValue() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public StmtPiqi.exp getValue() {
      return value_;
    }
    public StmtPiqi.expOrBuilder getValueOrBuilder() {
      return value_;
    }
    
    // required .exp endian = 4;
    public static final int ENDIAN_FIELD_NUMBER = 4;
    private StmtPiqi.exp endian_;
    public boolean hasEndian() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    public StmtPiqi.exp getEndian() {
      return endian_;
    }
    public StmtPiqi.expOrBuilder getEndianOrBuilder() {
      return endian_;
    }
    
    // required .typ typ = 5;
    public static final int TYP_FIELD_NUMBER = 5;
    private StmtPiqi.typ typ_;
    public boolean hasTyp() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    public StmtPiqi.typ getTyp() {
      return typ_;
    }
    public StmtPiqi.typOrBuilder getTypOrBuilder() {
      return typ_;
    }
    
    private void initFields() {
      memory_ = StmtPiqi.exp.getDefaultInstance();
      address_ = StmtPiqi.exp.getDefaultInstance();
      value_ = StmtPiqi.exp.getDefaultInstance();
      endian_ = StmtPiqi.exp.getDefaultInstance();
      typ_ = StmtPiqi.typ.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasMemory()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAddress()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasValue()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasEndian()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTyp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getMemory().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getAddress().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getValue().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getEndian().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTyp().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, memory_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, address_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, value_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, endian_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(5, typ_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, memory_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, address_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, value_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, endian_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, typ_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.store parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.store parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.store parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.store parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.store parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.store parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.store parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.store parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.store parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.store parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.store prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.storeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_store_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_store_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.store.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getMemoryFieldBuilder();
          getAddressFieldBuilder();
          getValueFieldBuilder();
          getEndianFieldBuilder();
          getTypFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (memoryBuilder_ == null) {
          memory_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          memoryBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (addressBuilder_ == null) {
          address_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          addressBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (valueBuilder_ == null) {
          value_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          valueBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (endianBuilder_ == null) {
          endian_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          endianBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        if (typBuilder_ == null) {
          typ_ = StmtPiqi.typ.getDefaultInstance();
        } else {
          typBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.store.getDescriptor();
      }
      
      public StmtPiqi.store getDefaultInstanceForType() {
        return StmtPiqi.store.getDefaultInstance();
      }
      
      public StmtPiqi.store build() {
        StmtPiqi.store result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.store buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.store result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.store buildPartial() {
        StmtPiqi.store result = new StmtPiqi.store(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (memoryBuilder_ == null) {
          result.memory_ = memory_;
        } else {
          result.memory_ = memoryBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (addressBuilder_ == null) {
          result.address_ = address_;
        } else {
          result.address_ = addressBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (valueBuilder_ == null) {
          result.value_ = value_;
        } else {
          result.value_ = valueBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        if (endianBuilder_ == null) {
          result.endian_ = endian_;
        } else {
          result.endian_ = endianBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        if (typBuilder_ == null) {
          result.typ_ = typ_;
        } else {
          result.typ_ = typBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.store) {
          return mergeFrom((StmtPiqi.store)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.store other) {
        if (other == StmtPiqi.store.getDefaultInstance()) return this;
        if (other.hasMemory()) {
          mergeMemory(other.getMemory());
        }
        if (other.hasAddress()) {
          mergeAddress(other.getAddress());
        }
        if (other.hasValue()) {
          mergeValue(other.getValue());
        }
        if (other.hasEndian()) {
          mergeEndian(other.getEndian());
        }
        if (other.hasTyp()) {
          mergeTyp(other.getTyp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasMemory()) {
          
          return false;
        }
        if (!hasAddress()) {
          
          return false;
        }
        if (!hasValue()) {
          
          return false;
        }
        if (!hasEndian()) {
          
          return false;
        }
        if (!hasTyp()) {
          
          return false;
        }
        if (!getMemory().isInitialized()) {
          
          return false;
        }
        if (!getAddress().isInitialized()) {
          
          return false;
        }
        if (!getValue().isInitialized()) {
          
          return false;
        }
        if (!getEndian().isInitialized()) {
          
          return false;
        }
        if (!getTyp().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasMemory()) {
                subBuilder.mergeFrom(getMemory());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setMemory(subBuilder.buildPartial());
              break;
            }
            case 18: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasAddress()) {
                subBuilder.mergeFrom(getAddress());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setAddress(subBuilder.buildPartial());
              break;
            }
            case 26: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasValue()) {
                subBuilder.mergeFrom(getValue());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setValue(subBuilder.buildPartial());
              break;
            }
            case 34: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasEndian()) {
                subBuilder.mergeFrom(getEndian());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setEndian(subBuilder.buildPartial());
              break;
            }
            case 42: {
              StmtPiqi.typ.Builder subBuilder = StmtPiqi.typ.newBuilder();
              if (hasTyp()) {
                subBuilder.mergeFrom(getTyp());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setTyp(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .exp memory = 1;
      private StmtPiqi.exp memory_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> memoryBuilder_;
      public boolean hasMemory() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.exp getMemory() {
        if (memoryBuilder_ == null) {
          return memory_;
        } else {
          return memoryBuilder_.getMessage();
        }
      }
      public Builder setMemory(StmtPiqi.exp value) {
        if (memoryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          memory_ = value;
          onChanged();
        } else {
          memoryBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setMemory(
          StmtPiqi.exp.Builder builderForValue) {
        if (memoryBuilder_ == null) {
          memory_ = builderForValue.build();
          onChanged();
        } else {
          memoryBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeMemory(StmtPiqi.exp value) {
        if (memoryBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              memory_ != StmtPiqi.exp.getDefaultInstance()) {
            memory_ =
              StmtPiqi.exp.newBuilder(memory_).mergeFrom(value).buildPartial();
          } else {
            memory_ = value;
          }
          onChanged();
        } else {
          memoryBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearMemory() {
        if (memoryBuilder_ == null) {
          memory_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          memoryBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public StmtPiqi.exp.Builder getMemoryBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getMemoryFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getMemoryOrBuilder() {
        if (memoryBuilder_ != null) {
          return memoryBuilder_.getMessageOrBuilder();
        } else {
          return memory_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getMemoryFieldBuilder() {
        if (memoryBuilder_ == null) {
          memoryBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  memory_,
                  getParentForChildren(),
                  isClean());
          memory_ = null;
        }
        return memoryBuilder_;
      }
      
      // required .exp address = 2;
      private StmtPiqi.exp address_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> addressBuilder_;
      public boolean hasAddress() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.exp getAddress() {
        if (addressBuilder_ == null) {
          return address_;
        } else {
          return addressBuilder_.getMessage();
        }
      }
      public Builder setAddress(StmtPiqi.exp value) {
        if (addressBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          address_ = value;
          onChanged();
        } else {
          addressBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setAddress(
          StmtPiqi.exp.Builder builderForValue) {
        if (addressBuilder_ == null) {
          address_ = builderForValue.build();
          onChanged();
        } else {
          addressBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeAddress(StmtPiqi.exp value) {
        if (addressBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              address_ != StmtPiqi.exp.getDefaultInstance()) {
            address_ =
              StmtPiqi.exp.newBuilder(address_).mergeFrom(value).buildPartial();
          } else {
            address_ = value;
          }
          onChanged();
        } else {
          addressBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearAddress() {
        if (addressBuilder_ == null) {
          address_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          addressBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.exp.Builder getAddressBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getAddressFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getAddressOrBuilder() {
        if (addressBuilder_ != null) {
          return addressBuilder_.getMessageOrBuilder();
        } else {
          return address_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getAddressFieldBuilder() {
        if (addressBuilder_ == null) {
          addressBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  address_,
                  getParentForChildren(),
                  isClean());
          address_ = null;
        }
        return addressBuilder_;
      }
      
      // required .exp value = 3;
      private StmtPiqi.exp value_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> valueBuilder_;
      public boolean hasValue() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public StmtPiqi.exp getValue() {
        if (valueBuilder_ == null) {
          return value_;
        } else {
          return valueBuilder_.getMessage();
        }
      }
      public Builder setValue(StmtPiqi.exp value) {
        if (valueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          valueBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder setValue(
          StmtPiqi.exp.Builder builderForValue) {
        if (valueBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          valueBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder mergeValue(StmtPiqi.exp value) {
        if (valueBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              value_ != StmtPiqi.exp.getDefaultInstance()) {
            value_ =
              StmtPiqi.exp.newBuilder(value_).mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          valueBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder clearValue() {
        if (valueBuilder_ == null) {
          value_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          valueBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      public StmtPiqi.exp.Builder getValueBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getValueFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getValueOrBuilder() {
        if (valueBuilder_ != null) {
          return valueBuilder_.getMessageOrBuilder();
        } else {
          return value_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getValueFieldBuilder() {
        if (valueBuilder_ == null) {
          valueBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  value_,
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        return valueBuilder_;
      }
      
      // required .exp endian = 4;
      private StmtPiqi.exp endian_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> endianBuilder_;
      public boolean hasEndian() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public StmtPiqi.exp getEndian() {
        if (endianBuilder_ == null) {
          return endian_;
        } else {
          return endianBuilder_.getMessage();
        }
      }
      public Builder setEndian(StmtPiqi.exp value) {
        if (endianBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          endian_ = value;
          onChanged();
        } else {
          endianBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder setEndian(
          StmtPiqi.exp.Builder builderForValue) {
        if (endianBuilder_ == null) {
          endian_ = builderForValue.build();
          onChanged();
        } else {
          endianBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder mergeEndian(StmtPiqi.exp value) {
        if (endianBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008) &&
              endian_ != StmtPiqi.exp.getDefaultInstance()) {
            endian_ =
              StmtPiqi.exp.newBuilder(endian_).mergeFrom(value).buildPartial();
          } else {
            endian_ = value;
          }
          onChanged();
        } else {
          endianBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder clearEndian() {
        if (endianBuilder_ == null) {
          endian_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          endianBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      public StmtPiqi.exp.Builder getEndianBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getEndianFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getEndianOrBuilder() {
        if (endianBuilder_ != null) {
          return endianBuilder_.getMessageOrBuilder();
        } else {
          return endian_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getEndianFieldBuilder() {
        if (endianBuilder_ == null) {
          endianBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  endian_,
                  getParentForChildren(),
                  isClean());
          endian_ = null;
        }
        return endianBuilder_;
      }
      
      // required .typ typ = 5;
      private StmtPiqi.typ typ_ = StmtPiqi.typ.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder> typBuilder_;
      public boolean hasTyp() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public StmtPiqi.typ getTyp() {
        if (typBuilder_ == null) {
          return typ_;
        } else {
          return typBuilder_.getMessage();
        }
      }
      public Builder setTyp(StmtPiqi.typ value) {
        if (typBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          typ_ = value;
          onChanged();
        } else {
          typBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      public Builder setTyp(
          StmtPiqi.typ.Builder builderForValue) {
        if (typBuilder_ == null) {
          typ_ = builderForValue.build();
          onChanged();
        } else {
          typBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      public Builder mergeTyp(StmtPiqi.typ value) {
        if (typBuilder_ == null) {
          if (((bitField0_ & 0x00000010) == 0x00000010) &&
              typ_ != StmtPiqi.typ.getDefaultInstance()) {
            typ_ =
              StmtPiqi.typ.newBuilder(typ_).mergeFrom(value).buildPartial();
          } else {
            typ_ = value;
          }
          onChanged();
        } else {
          typBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      public Builder clearTyp() {
        if (typBuilder_ == null) {
          typ_ = StmtPiqi.typ.getDefaultInstance();
          onChanged();
        } else {
          typBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      public StmtPiqi.typ.Builder getTypBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getTypFieldBuilder().getBuilder();
      }
      public StmtPiqi.typOrBuilder getTypOrBuilder() {
        if (typBuilder_ != null) {
          return typBuilder_.getMessageOrBuilder();
        } else {
          return typ_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder> 
          getTypFieldBuilder() {
        if (typBuilder_ == null) {
          typBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder>(
                  typ_,
                  getParentForChildren(),
                  isClean());
          typ_ = null;
        }
        return typBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:store)
    }
    
    static {
      defaultInstance = new store(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:store)
  }
  
  public interface binopOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .binop_type binop_type = 1;
    boolean hasBinopType();
    StmtPiqi.binop_type getBinopType();
    
    // required .exp lexp = 2;
    boolean hasLexp();
    StmtPiqi.exp getLexp();
    StmtPiqi.expOrBuilder getLexpOrBuilder();
    
    // required .exp rexp = 3;
    boolean hasRexp();
    StmtPiqi.exp getRexp();
    StmtPiqi.expOrBuilder getRexpOrBuilder();
  }
  public static final class binop extends
      com.google.protobuf.GeneratedMessage
      implements binopOrBuilder {
    // Use binop.newBuilder() to construct.
    private binop(Builder builder) {
      super(builder);
    }
    private binop(boolean noInit) {}
    
    private static final binop defaultInstance;
    public static binop getDefaultInstance() {
      return defaultInstance;
    }
    
    public binop getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_binop_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_binop_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required .binop_type binop_type = 1;
    public static final int BINOP_TYPE_FIELD_NUMBER = 1;
    private StmtPiqi.binop_type binopType_;
    public boolean hasBinopType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.binop_type getBinopType() {
      return binopType_;
    }
    
    // required .exp lexp = 2;
    public static final int LEXP_FIELD_NUMBER = 2;
    private StmtPiqi.exp lexp_;
    public boolean hasLexp() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.exp getLexp() {
      return lexp_;
    }
    public StmtPiqi.expOrBuilder getLexpOrBuilder() {
      return lexp_;
    }
    
    // required .exp rexp = 3;
    public static final int REXP_FIELD_NUMBER = 3;
    private StmtPiqi.exp rexp_;
    public boolean hasRexp() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public StmtPiqi.exp getRexp() {
      return rexp_;
    }
    public StmtPiqi.expOrBuilder getRexpOrBuilder() {
      return rexp_;
    }
    
    private void initFields() {
      binopType_ = StmtPiqi.binop_type.plus;
      lexp_ = StmtPiqi.exp.getDefaultInstance();
      rexp_ = StmtPiqi.exp.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasBinopType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasLexp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasRexp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getLexp().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getRexp().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeEnum(1, binopType_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, lexp_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, rexp_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, binopType_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, lexp_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, rexp_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.binop parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.binop parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.binop parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.binop parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.binop parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.binop parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.binop parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.binop parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.binop parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.binop parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.binop prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.binopOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_binop_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_binop_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.binop.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getLexpFieldBuilder();
          getRexpFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        binopType_ = StmtPiqi.binop_type.plus;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (lexpBuilder_ == null) {
          lexp_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          lexpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (rexpBuilder_ == null) {
          rexp_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          rexpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.binop.getDescriptor();
      }
      
      public StmtPiqi.binop getDefaultInstanceForType() {
        return StmtPiqi.binop.getDefaultInstance();
      }
      
      public StmtPiqi.binop build() {
        StmtPiqi.binop result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.binop buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.binop result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.binop buildPartial() {
        StmtPiqi.binop result = new StmtPiqi.binop(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.binopType_ = binopType_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (lexpBuilder_ == null) {
          result.lexp_ = lexp_;
        } else {
          result.lexp_ = lexpBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (rexpBuilder_ == null) {
          result.rexp_ = rexp_;
        } else {
          result.rexp_ = rexpBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.binop) {
          return mergeFrom((StmtPiqi.binop)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.binop other) {
        if (other == StmtPiqi.binop.getDefaultInstance()) return this;
        if (other.hasBinopType()) {
          setBinopType(other.getBinopType());
        }
        if (other.hasLexp()) {
          mergeLexp(other.getLexp());
        }
        if (other.hasRexp()) {
          mergeRexp(other.getRexp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasBinopType()) {
          
          return false;
        }
        if (!hasLexp()) {
          
          return false;
        }
        if (!hasRexp()) {
          
          return false;
        }
        if (!getLexp().isInitialized()) {
          
          return false;
        }
        if (!getRexp().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              StmtPiqi.binop_type value = StmtPiqi.binop_type.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                bitField0_ |= 0x00000001;
                binopType_ = value;
              }
              break;
            }
            case 18: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasLexp()) {
                subBuilder.mergeFrom(getLexp());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setLexp(subBuilder.buildPartial());
              break;
            }
            case 26: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasRexp()) {
                subBuilder.mergeFrom(getRexp());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setRexp(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .binop_type binop_type = 1;
      private StmtPiqi.binop_type binopType_ = StmtPiqi.binop_type.plus;
      public boolean hasBinopType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.binop_type getBinopType() {
        return binopType_;
      }
      public Builder setBinopType(StmtPiqi.binop_type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        binopType_ = value;
        onChanged();
        return this;
      }
      public Builder clearBinopType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        binopType_ = StmtPiqi.binop_type.plus;
        onChanged();
        return this;
      }
      
      // required .exp lexp = 2;
      private StmtPiqi.exp lexp_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> lexpBuilder_;
      public boolean hasLexp() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.exp getLexp() {
        if (lexpBuilder_ == null) {
          return lexp_;
        } else {
          return lexpBuilder_.getMessage();
        }
      }
      public Builder setLexp(StmtPiqi.exp value) {
        if (lexpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          lexp_ = value;
          onChanged();
        } else {
          lexpBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setLexp(
          StmtPiqi.exp.Builder builderForValue) {
        if (lexpBuilder_ == null) {
          lexp_ = builderForValue.build();
          onChanged();
        } else {
          lexpBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeLexp(StmtPiqi.exp value) {
        if (lexpBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              lexp_ != StmtPiqi.exp.getDefaultInstance()) {
            lexp_ =
              StmtPiqi.exp.newBuilder(lexp_).mergeFrom(value).buildPartial();
          } else {
            lexp_ = value;
          }
          onChanged();
        } else {
          lexpBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearLexp() {
        if (lexpBuilder_ == null) {
          lexp_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          lexpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.exp.Builder getLexpBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getLexpFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getLexpOrBuilder() {
        if (lexpBuilder_ != null) {
          return lexpBuilder_.getMessageOrBuilder();
        } else {
          return lexp_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getLexpFieldBuilder() {
        if (lexpBuilder_ == null) {
          lexpBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  lexp_,
                  getParentForChildren(),
                  isClean());
          lexp_ = null;
        }
        return lexpBuilder_;
      }
      
      // required .exp rexp = 3;
      private StmtPiqi.exp rexp_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> rexpBuilder_;
      public boolean hasRexp() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public StmtPiqi.exp getRexp() {
        if (rexpBuilder_ == null) {
          return rexp_;
        } else {
          return rexpBuilder_.getMessage();
        }
      }
      public Builder setRexp(StmtPiqi.exp value) {
        if (rexpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rexp_ = value;
          onChanged();
        } else {
          rexpBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder setRexp(
          StmtPiqi.exp.Builder builderForValue) {
        if (rexpBuilder_ == null) {
          rexp_ = builderForValue.build();
          onChanged();
        } else {
          rexpBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder mergeRexp(StmtPiqi.exp value) {
        if (rexpBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              rexp_ != StmtPiqi.exp.getDefaultInstance()) {
            rexp_ =
              StmtPiqi.exp.newBuilder(rexp_).mergeFrom(value).buildPartial();
          } else {
            rexp_ = value;
          }
          onChanged();
        } else {
          rexpBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder clearRexp() {
        if (rexpBuilder_ == null) {
          rexp_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          rexpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      public StmtPiqi.exp.Builder getRexpBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getRexpFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getRexpOrBuilder() {
        if (rexpBuilder_ != null) {
          return rexpBuilder_.getMessageOrBuilder();
        } else {
          return rexp_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getRexpFieldBuilder() {
        if (rexpBuilder_ == null) {
          rexpBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  rexp_,
                  getParentForChildren(),
                  isClean());
          rexp_ = null;
        }
        return rexpBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:binop)
    }
    
    static {
      defaultInstance = new binop(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:binop)
  }
  
  public interface unopOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .unop_type unop_type = 1;
    boolean hasUnopType();
    StmtPiqi.unop_type getUnopType();
    
    // required .exp exp = 2;
    boolean hasExp();
    StmtPiqi.exp getExp();
    StmtPiqi.expOrBuilder getExpOrBuilder();
  }
  public static final class unop extends
      com.google.protobuf.GeneratedMessage
      implements unopOrBuilder {
    // Use unop.newBuilder() to construct.
    private unop(Builder builder) {
      super(builder);
    }
    private unop(boolean noInit) {}
    
    private static final unop defaultInstance;
    public static unop getDefaultInstance() {
      return defaultInstance;
    }
    
    public unop getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_unop_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_unop_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required .unop_type unop_type = 1;
    public static final int UNOP_TYPE_FIELD_NUMBER = 1;
    private StmtPiqi.unop_type unopType_;
    public boolean hasUnopType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.unop_type getUnopType() {
      return unopType_;
    }
    
    // required .exp exp = 2;
    public static final int EXP_FIELD_NUMBER = 2;
    private StmtPiqi.exp exp_;
    public boolean hasExp() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.exp getExp() {
      return exp_;
    }
    public StmtPiqi.expOrBuilder getExpOrBuilder() {
      return exp_;
    }
    
    private void initFields() {
      unopType_ = StmtPiqi.unop_type.uneg;
      exp_ = StmtPiqi.exp.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasUnopType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasExp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getExp().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeEnum(1, unopType_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, exp_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, unopType_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, exp_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.unop parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.unop parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.unop parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.unop parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.unop parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.unop parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.unop parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.unop parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.unop parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.unop parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.unop prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.unopOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_unop_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_unop_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.unop.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getExpFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        unopType_ = StmtPiqi.unop_type.uneg;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (expBuilder_ == null) {
          exp_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          expBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.unop.getDescriptor();
      }
      
      public StmtPiqi.unop getDefaultInstanceForType() {
        return StmtPiqi.unop.getDefaultInstance();
      }
      
      public StmtPiqi.unop build() {
        StmtPiqi.unop result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.unop buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.unop result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.unop buildPartial() {
        StmtPiqi.unop result = new StmtPiqi.unop(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.unopType_ = unopType_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (expBuilder_ == null) {
          result.exp_ = exp_;
        } else {
          result.exp_ = expBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.unop) {
          return mergeFrom((StmtPiqi.unop)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.unop other) {
        if (other == StmtPiqi.unop.getDefaultInstance()) return this;
        if (other.hasUnopType()) {
          setUnopType(other.getUnopType());
        }
        if (other.hasExp()) {
          mergeExp(other.getExp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasUnopType()) {
          
          return false;
        }
        if (!hasExp()) {
          
          return false;
        }
        if (!getExp().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              StmtPiqi.unop_type value = StmtPiqi.unop_type.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                bitField0_ |= 0x00000001;
                unopType_ = value;
              }
              break;
            }
            case 18: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasExp()) {
                subBuilder.mergeFrom(getExp());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setExp(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .unop_type unop_type = 1;
      private StmtPiqi.unop_type unopType_ = StmtPiqi.unop_type.uneg;
      public boolean hasUnopType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.unop_type getUnopType() {
        return unopType_;
      }
      public Builder setUnopType(StmtPiqi.unop_type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        unopType_ = value;
        onChanged();
        return this;
      }
      public Builder clearUnopType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        unopType_ = StmtPiqi.unop_type.uneg;
        onChanged();
        return this;
      }
      
      // required .exp exp = 2;
      private StmtPiqi.exp exp_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> expBuilder_;
      public boolean hasExp() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.exp getExp() {
        if (expBuilder_ == null) {
          return exp_;
        } else {
          return expBuilder_.getMessage();
        }
      }
      public Builder setExp(StmtPiqi.exp value) {
        if (expBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          exp_ = value;
          onChanged();
        } else {
          expBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setExp(
          StmtPiqi.exp.Builder builderForValue) {
        if (expBuilder_ == null) {
          exp_ = builderForValue.build();
          onChanged();
        } else {
          expBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeExp(StmtPiqi.exp value) {
        if (expBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              exp_ != StmtPiqi.exp.getDefaultInstance()) {
            exp_ =
              StmtPiqi.exp.newBuilder(exp_).mergeFrom(value).buildPartial();
          } else {
            exp_ = value;
          }
          onChanged();
        } else {
          expBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearExp() {
        if (expBuilder_ == null) {
          exp_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          expBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.exp.Builder getExpBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getExpFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getExpOrBuilder() {
        if (expBuilder_ != null) {
          return expBuilder_.getMessageOrBuilder();
        } else {
          return exp_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getExpFieldBuilder() {
        if (expBuilder_ == null) {
          expBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  exp_,
                  getParentForChildren(),
                  isClean());
          exp_ = null;
        }
        return expBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:unop)
    }
    
    static {
      defaultInstance = new unop(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:unop)
  }
  
  public interface inteOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required string int = 1;
    boolean hasInt();
    String getInt();
    
    // required .typ typ = 2;
    boolean hasTyp();
    StmtPiqi.typ getTyp();
    StmtPiqi.typOrBuilder getTypOrBuilder();
  }
  public static final class inte extends
      com.google.protobuf.GeneratedMessage
      implements inteOrBuilder {
    // Use inte.newBuilder() to construct.
    private inte(Builder builder) {
      super(builder);
    }
    private inte(boolean noInit) {}
    
    private static final inte defaultInstance;
    public static inte getDefaultInstance() {
      return defaultInstance;
    }
    
    public inte getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_inte_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_inte_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required string int = 1;
    public static final int INT_FIELD_NUMBER = 1;
    private java.lang.Object int_;
    public boolean hasInt() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getInt() {
      java.lang.Object ref = int_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          int_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getIntBytes() {
      java.lang.Object ref = int_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        int_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // required .typ typ = 2;
    public static final int TYP_FIELD_NUMBER = 2;
    private StmtPiqi.typ typ_;
    public boolean hasTyp() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.typ getTyp() {
      return typ_;
    }
    public StmtPiqi.typOrBuilder getTypOrBuilder() {
      return typ_;
    }
    
    private void initFields() {
      int_ = "";
      typ_ = StmtPiqi.typ.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasInt()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTyp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTyp().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getIntBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, typ_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getIntBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, typ_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.inte parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.inte parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.inte parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.inte parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.inte parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.inte parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.inte parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.inte parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.inte parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.inte parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.inte prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.inteOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_inte_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_inte_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.inte.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getTypFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        int_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (typBuilder_ == null) {
          typ_ = StmtPiqi.typ.getDefaultInstance();
        } else {
          typBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.inte.getDescriptor();
      }
      
      public StmtPiqi.inte getDefaultInstanceForType() {
        return StmtPiqi.inte.getDefaultInstance();
      }
      
      public StmtPiqi.inte build() {
        StmtPiqi.inte result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.inte buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.inte result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.inte buildPartial() {
        StmtPiqi.inte result = new StmtPiqi.inte(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.int_ = int_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (typBuilder_ == null) {
          result.typ_ = typ_;
        } else {
          result.typ_ = typBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.inte) {
          return mergeFrom((StmtPiqi.inte)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.inte other) {
        if (other == StmtPiqi.inte.getDefaultInstance()) return this;
        if (other.hasInt()) {
          setInt(other.getInt());
        }
        if (other.hasTyp()) {
          mergeTyp(other.getTyp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasInt()) {
          
          return false;
        }
        if (!hasTyp()) {
          
          return false;
        }
        if (!getTyp().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              int_ = input.readBytes();
              break;
            }
            case 18: {
              StmtPiqi.typ.Builder subBuilder = StmtPiqi.typ.newBuilder();
              if (hasTyp()) {
                subBuilder.mergeFrom(getTyp());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setTyp(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required string int = 1;
      private java.lang.Object int_ = "";
      public boolean hasInt() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getInt() {
        java.lang.Object ref = int_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          int_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setInt(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        int_ = value;
        onChanged();
        return this;
      }
      public Builder clearInt() {
        bitField0_ = (bitField0_ & ~0x00000001);
        int_ = getDefaultInstance().getInt();
        onChanged();
        return this;
      }
      void setInt(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        int_ = value;
        onChanged();
      }
      
      // required .typ typ = 2;
      private StmtPiqi.typ typ_ = StmtPiqi.typ.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder> typBuilder_;
      public boolean hasTyp() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.typ getTyp() {
        if (typBuilder_ == null) {
          return typ_;
        } else {
          return typBuilder_.getMessage();
        }
      }
      public Builder setTyp(StmtPiqi.typ value) {
        if (typBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          typ_ = value;
          onChanged();
        } else {
          typBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setTyp(
          StmtPiqi.typ.Builder builderForValue) {
        if (typBuilder_ == null) {
          typ_ = builderForValue.build();
          onChanged();
        } else {
          typBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeTyp(StmtPiqi.typ value) {
        if (typBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              typ_ != StmtPiqi.typ.getDefaultInstance()) {
            typ_ =
              StmtPiqi.typ.newBuilder(typ_).mergeFrom(value).buildPartial();
          } else {
            typ_ = value;
          }
          onChanged();
        } else {
          typBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearTyp() {
        if (typBuilder_ == null) {
          typ_ = StmtPiqi.typ.getDefaultInstance();
          onChanged();
        } else {
          typBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.typ.Builder getTypBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getTypFieldBuilder().getBuilder();
      }
      public StmtPiqi.typOrBuilder getTypOrBuilder() {
        if (typBuilder_ != null) {
          return typBuilder_.getMessageOrBuilder();
        } else {
          return typ_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder> 
          getTypFieldBuilder() {
        if (typBuilder_ == null) {
          typBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder>(
                  typ_,
                  getParentForChildren(),
                  isClean());
          typ_ = null;
        }
        return typBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:inte)
    }
    
    static {
      defaultInstance = new inte(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:inte)
  }
  
  public interface castOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .cast_type cast_type = 1;
    boolean hasCastType();
    StmtPiqi.cast_type getCastType();
    
    // required .typ new_type = 2;
    boolean hasNewType();
    StmtPiqi.typ getNewType();
    StmtPiqi.typOrBuilder getNewTypeOrBuilder();
    
    // required .exp exp = 3;
    boolean hasExp();
    StmtPiqi.exp getExp();
    StmtPiqi.expOrBuilder getExpOrBuilder();
  }
  public static final class cast extends
      com.google.protobuf.GeneratedMessage
      implements castOrBuilder {
    // Use cast.newBuilder() to construct.
    private cast(Builder builder) {
      super(builder);
    }
    private cast(boolean noInit) {}
    
    private static final cast defaultInstance;
    public static cast getDefaultInstance() {
      return defaultInstance;
    }
    
    public cast getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_cast_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_cast_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required .cast_type cast_type = 1;
    public static final int CAST_TYPE_FIELD_NUMBER = 1;
    private StmtPiqi.cast_type castType_;
    public boolean hasCastType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.cast_type getCastType() {
      return castType_;
    }
    
    // required .typ new_type = 2;
    public static final int NEW_TYPE_FIELD_NUMBER = 2;
    private StmtPiqi.typ newType_;
    public boolean hasNewType() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.typ getNewType() {
      return newType_;
    }
    public StmtPiqi.typOrBuilder getNewTypeOrBuilder() {
      return newType_;
    }
    
    // required .exp exp = 3;
    public static final int EXP_FIELD_NUMBER = 3;
    private StmtPiqi.exp exp_;
    public boolean hasExp() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public StmtPiqi.exp getExp() {
      return exp_;
    }
    public StmtPiqi.expOrBuilder getExpOrBuilder() {
      return exp_;
    }
    
    private void initFields() {
      castType_ = StmtPiqi.cast_type.cast_unsigned;
      newType_ = StmtPiqi.typ.getDefaultInstance();
      exp_ = StmtPiqi.exp.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasCastType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasNewType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasExp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getNewType().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getExp().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeEnum(1, castType_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, newType_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, exp_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, castType_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, newType_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, exp_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.cast parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.cast parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.cast parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.cast parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.cast parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.cast parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.cast parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.cast parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.cast parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.cast parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.cast prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.castOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_cast_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_cast_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.cast.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getNewTypeFieldBuilder();
          getExpFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        castType_ = StmtPiqi.cast_type.cast_unsigned;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (newTypeBuilder_ == null) {
          newType_ = StmtPiqi.typ.getDefaultInstance();
        } else {
          newTypeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (expBuilder_ == null) {
          exp_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          expBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.cast.getDescriptor();
      }
      
      public StmtPiqi.cast getDefaultInstanceForType() {
        return StmtPiqi.cast.getDefaultInstance();
      }
      
      public StmtPiqi.cast build() {
        StmtPiqi.cast result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.cast buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.cast result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.cast buildPartial() {
        StmtPiqi.cast result = new StmtPiqi.cast(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.castType_ = castType_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (newTypeBuilder_ == null) {
          result.newType_ = newType_;
        } else {
          result.newType_ = newTypeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (expBuilder_ == null) {
          result.exp_ = exp_;
        } else {
          result.exp_ = expBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.cast) {
          return mergeFrom((StmtPiqi.cast)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.cast other) {
        if (other == StmtPiqi.cast.getDefaultInstance()) return this;
        if (other.hasCastType()) {
          setCastType(other.getCastType());
        }
        if (other.hasNewType()) {
          mergeNewType(other.getNewType());
        }
        if (other.hasExp()) {
          mergeExp(other.getExp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasCastType()) {
          
          return false;
        }
        if (!hasNewType()) {
          
          return false;
        }
        if (!hasExp()) {
          
          return false;
        }
        if (!getNewType().isInitialized()) {
          
          return false;
        }
        if (!getExp().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              StmtPiqi.cast_type value = StmtPiqi.cast_type.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                bitField0_ |= 0x00000001;
                castType_ = value;
              }
              break;
            }
            case 18: {
              StmtPiqi.typ.Builder subBuilder = StmtPiqi.typ.newBuilder();
              if (hasNewType()) {
                subBuilder.mergeFrom(getNewType());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setNewType(subBuilder.buildPartial());
              break;
            }
            case 26: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasExp()) {
                subBuilder.mergeFrom(getExp());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setExp(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .cast_type cast_type = 1;
      private StmtPiqi.cast_type castType_ = StmtPiqi.cast_type.cast_unsigned;
      public boolean hasCastType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.cast_type getCastType() {
        return castType_;
      }
      public Builder setCastType(StmtPiqi.cast_type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        castType_ = value;
        onChanged();
        return this;
      }
      public Builder clearCastType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        castType_ = StmtPiqi.cast_type.cast_unsigned;
        onChanged();
        return this;
      }
      
      // required .typ new_type = 2;
      private StmtPiqi.typ newType_ = StmtPiqi.typ.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder> newTypeBuilder_;
      public boolean hasNewType() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.typ getNewType() {
        if (newTypeBuilder_ == null) {
          return newType_;
        } else {
          return newTypeBuilder_.getMessage();
        }
      }
      public Builder setNewType(StmtPiqi.typ value) {
        if (newTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          newType_ = value;
          onChanged();
        } else {
          newTypeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setNewType(
          StmtPiqi.typ.Builder builderForValue) {
        if (newTypeBuilder_ == null) {
          newType_ = builderForValue.build();
          onChanged();
        } else {
          newTypeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeNewType(StmtPiqi.typ value) {
        if (newTypeBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              newType_ != StmtPiqi.typ.getDefaultInstance()) {
            newType_ =
              StmtPiqi.typ.newBuilder(newType_).mergeFrom(value).buildPartial();
          } else {
            newType_ = value;
          }
          onChanged();
        } else {
          newTypeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearNewType() {
        if (newTypeBuilder_ == null) {
          newType_ = StmtPiqi.typ.getDefaultInstance();
          onChanged();
        } else {
          newTypeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.typ.Builder getNewTypeBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getNewTypeFieldBuilder().getBuilder();
      }
      public StmtPiqi.typOrBuilder getNewTypeOrBuilder() {
        if (newTypeBuilder_ != null) {
          return newTypeBuilder_.getMessageOrBuilder();
        } else {
          return newType_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder> 
          getNewTypeFieldBuilder() {
        if (newTypeBuilder_ == null) {
          newTypeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder>(
                  newType_,
                  getParentForChildren(),
                  isClean());
          newType_ = null;
        }
        return newTypeBuilder_;
      }
      
      // required .exp exp = 3;
      private StmtPiqi.exp exp_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> expBuilder_;
      public boolean hasExp() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public StmtPiqi.exp getExp() {
        if (expBuilder_ == null) {
          return exp_;
        } else {
          return expBuilder_.getMessage();
        }
      }
      public Builder setExp(StmtPiqi.exp value) {
        if (expBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          exp_ = value;
          onChanged();
        } else {
          expBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder setExp(
          StmtPiqi.exp.Builder builderForValue) {
        if (expBuilder_ == null) {
          exp_ = builderForValue.build();
          onChanged();
        } else {
          expBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder mergeExp(StmtPiqi.exp value) {
        if (expBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              exp_ != StmtPiqi.exp.getDefaultInstance()) {
            exp_ =
              StmtPiqi.exp.newBuilder(exp_).mergeFrom(value).buildPartial();
          } else {
            exp_ = value;
          }
          onChanged();
        } else {
          expBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder clearExp() {
        if (expBuilder_ == null) {
          exp_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          expBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      public StmtPiqi.exp.Builder getExpBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getExpFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getExpOrBuilder() {
        if (expBuilder_ != null) {
          return expBuilder_.getMessageOrBuilder();
        } else {
          return exp_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getExpFieldBuilder() {
        if (expBuilder_ == null) {
          expBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  exp_,
                  getParentForChildren(),
                  isClean());
          exp_ = null;
        }
        return expBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:cast)
    }
    
    static {
      defaultInstance = new cast(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:cast)
  }
  
  public interface let_expOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .var var = 1;
    boolean hasVar();
    StmtPiqi.var getVar();
    StmtPiqi.varOrBuilder getVarOrBuilder();
    
    // required .exp e1 = 2;
    boolean hasE1();
    StmtPiqi.exp getE1();
    StmtPiqi.expOrBuilder getE1OrBuilder();
    
    // required .exp e2 = 3;
    boolean hasE2();
    StmtPiqi.exp getE2();
    StmtPiqi.expOrBuilder getE2OrBuilder();
  }
  public static final class let_exp extends
      com.google.protobuf.GeneratedMessage
      implements let_expOrBuilder {
    // Use let_exp.newBuilder() to construct.
    private let_exp(Builder builder) {
      super(builder);
    }
    private let_exp(boolean noInit) {}
    
    private static final let_exp defaultInstance;
    public static let_exp getDefaultInstance() {
      return defaultInstance;
    }
    
    public let_exp getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_let_exp_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_let_exp_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required .var var = 1;
    public static final int VAR_FIELD_NUMBER = 1;
    private StmtPiqi.var var_;
    public boolean hasVar() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.var getVar() {
      return var_;
    }
    public StmtPiqi.varOrBuilder getVarOrBuilder() {
      return var_;
    }
    
    // required .exp e1 = 2;
    public static final int E1_FIELD_NUMBER = 2;
    private StmtPiqi.exp e1_;
    public boolean hasE1() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.exp getE1() {
      return e1_;
    }
    public StmtPiqi.expOrBuilder getE1OrBuilder() {
      return e1_;
    }
    
    // required .exp e2 = 3;
    public static final int E2_FIELD_NUMBER = 3;
    private StmtPiqi.exp e2_;
    public boolean hasE2() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public StmtPiqi.exp getE2() {
      return e2_;
    }
    public StmtPiqi.expOrBuilder getE2OrBuilder() {
      return e2_;
    }
    
    private void initFields() {
      var_ = StmtPiqi.var.getDefaultInstance();
      e1_ = StmtPiqi.exp.getDefaultInstance();
      e2_ = StmtPiqi.exp.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasVar()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasE1()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasE2()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getVar().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getE1().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getE2().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, var_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, e1_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, e2_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, var_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, e1_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, e2_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.let_exp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.let_exp parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.let_exp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.let_exp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.let_exp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.let_exp parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.let_exp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.let_exp parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.let_exp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.let_exp parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.let_exp prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.let_expOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_let_exp_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_let_exp_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.let_exp.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getVarFieldBuilder();
          getE1FieldBuilder();
          getE2FieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (varBuilder_ == null) {
          var_ = StmtPiqi.var.getDefaultInstance();
        } else {
          varBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (e1Builder_ == null) {
          e1_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          e1Builder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (e2Builder_ == null) {
          e2_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          e2Builder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.let_exp.getDescriptor();
      }
      
      public StmtPiqi.let_exp getDefaultInstanceForType() {
        return StmtPiqi.let_exp.getDefaultInstance();
      }
      
      public StmtPiqi.let_exp build() {
        StmtPiqi.let_exp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.let_exp buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.let_exp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.let_exp buildPartial() {
        StmtPiqi.let_exp result = new StmtPiqi.let_exp(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (varBuilder_ == null) {
          result.var_ = var_;
        } else {
          result.var_ = varBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (e1Builder_ == null) {
          result.e1_ = e1_;
        } else {
          result.e1_ = e1Builder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (e2Builder_ == null) {
          result.e2_ = e2_;
        } else {
          result.e2_ = e2Builder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.let_exp) {
          return mergeFrom((StmtPiqi.let_exp)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.let_exp other) {
        if (other == StmtPiqi.let_exp.getDefaultInstance()) return this;
        if (other.hasVar()) {
          mergeVar(other.getVar());
        }
        if (other.hasE1()) {
          mergeE1(other.getE1());
        }
        if (other.hasE2()) {
          mergeE2(other.getE2());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasVar()) {
          
          return false;
        }
        if (!hasE1()) {
          
          return false;
        }
        if (!hasE2()) {
          
          return false;
        }
        if (!getVar().isInitialized()) {
          
          return false;
        }
        if (!getE1().isInitialized()) {
          
          return false;
        }
        if (!getE2().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.var.Builder subBuilder = StmtPiqi.var.newBuilder();
              if (hasVar()) {
                subBuilder.mergeFrom(getVar());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setVar(subBuilder.buildPartial());
              break;
            }
            case 18: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasE1()) {
                subBuilder.mergeFrom(getE1());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setE1(subBuilder.buildPartial());
              break;
            }
            case 26: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasE2()) {
                subBuilder.mergeFrom(getE2());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setE2(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .var var = 1;
      private StmtPiqi.var var_ = StmtPiqi.var.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.var, StmtPiqi.var.Builder, StmtPiqi.varOrBuilder> varBuilder_;
      public boolean hasVar() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.var getVar() {
        if (varBuilder_ == null) {
          return var_;
        } else {
          return varBuilder_.getMessage();
        }
      }
      public Builder setVar(StmtPiqi.var value) {
        if (varBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          var_ = value;
          onChanged();
        } else {
          varBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setVar(
          StmtPiqi.var.Builder builderForValue) {
        if (varBuilder_ == null) {
          var_ = builderForValue.build();
          onChanged();
        } else {
          varBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeVar(StmtPiqi.var value) {
        if (varBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              var_ != StmtPiqi.var.getDefaultInstance()) {
            var_ =
              StmtPiqi.var.newBuilder(var_).mergeFrom(value).buildPartial();
          } else {
            var_ = value;
          }
          onChanged();
        } else {
          varBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearVar() {
        if (varBuilder_ == null) {
          var_ = StmtPiqi.var.getDefaultInstance();
          onChanged();
        } else {
          varBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public StmtPiqi.var.Builder getVarBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getVarFieldBuilder().getBuilder();
      }
      public StmtPiqi.varOrBuilder getVarOrBuilder() {
        if (varBuilder_ != null) {
          return varBuilder_.getMessageOrBuilder();
        } else {
          return var_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.var, StmtPiqi.var.Builder, StmtPiqi.varOrBuilder> 
          getVarFieldBuilder() {
        if (varBuilder_ == null) {
          varBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.var, StmtPiqi.var.Builder, StmtPiqi.varOrBuilder>(
                  var_,
                  getParentForChildren(),
                  isClean());
          var_ = null;
        }
        return varBuilder_;
      }
      
      // required .exp e1 = 2;
      private StmtPiqi.exp e1_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> e1Builder_;
      public boolean hasE1() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.exp getE1() {
        if (e1Builder_ == null) {
          return e1_;
        } else {
          return e1Builder_.getMessage();
        }
      }
      public Builder setE1(StmtPiqi.exp value) {
        if (e1Builder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          e1_ = value;
          onChanged();
        } else {
          e1Builder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setE1(
          StmtPiqi.exp.Builder builderForValue) {
        if (e1Builder_ == null) {
          e1_ = builderForValue.build();
          onChanged();
        } else {
          e1Builder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeE1(StmtPiqi.exp value) {
        if (e1Builder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              e1_ != StmtPiqi.exp.getDefaultInstance()) {
            e1_ =
              StmtPiqi.exp.newBuilder(e1_).mergeFrom(value).buildPartial();
          } else {
            e1_ = value;
          }
          onChanged();
        } else {
          e1Builder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearE1() {
        if (e1Builder_ == null) {
          e1_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          e1Builder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.exp.Builder getE1Builder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getE1FieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getE1OrBuilder() {
        if (e1Builder_ != null) {
          return e1Builder_.getMessageOrBuilder();
        } else {
          return e1_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getE1FieldBuilder() {
        if (e1Builder_ == null) {
          e1Builder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  e1_,
                  getParentForChildren(),
                  isClean());
          e1_ = null;
        }
        return e1Builder_;
      }
      
      // required .exp e2 = 3;
      private StmtPiqi.exp e2_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> e2Builder_;
      public boolean hasE2() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public StmtPiqi.exp getE2() {
        if (e2Builder_ == null) {
          return e2_;
        } else {
          return e2Builder_.getMessage();
        }
      }
      public Builder setE2(StmtPiqi.exp value) {
        if (e2Builder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          e2_ = value;
          onChanged();
        } else {
          e2Builder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder setE2(
          StmtPiqi.exp.Builder builderForValue) {
        if (e2Builder_ == null) {
          e2_ = builderForValue.build();
          onChanged();
        } else {
          e2Builder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder mergeE2(StmtPiqi.exp value) {
        if (e2Builder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              e2_ != StmtPiqi.exp.getDefaultInstance()) {
            e2_ =
              StmtPiqi.exp.newBuilder(e2_).mergeFrom(value).buildPartial();
          } else {
            e2_ = value;
          }
          onChanged();
        } else {
          e2Builder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder clearE2() {
        if (e2Builder_ == null) {
          e2_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          e2Builder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      public StmtPiqi.exp.Builder getE2Builder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getE2FieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getE2OrBuilder() {
        if (e2Builder_ != null) {
          return e2Builder_.getMessageOrBuilder();
        } else {
          return e2_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getE2FieldBuilder() {
        if (e2Builder_ == null) {
          e2Builder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  e2_,
                  getParentForChildren(),
                  isClean());
          e2_ = null;
        }
        return e2Builder_;
      }
      
      // @@protoc_insertion_point(builder_scope:let_exp)
    }
    
    static {
      defaultInstance = new let_exp(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:let_exp)
  }
  
  public interface unknownOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required string string = 1;
    boolean hasString();
    String getString();
    
    // required .typ typ = 2;
    boolean hasTyp();
    StmtPiqi.typ getTyp();
    StmtPiqi.typOrBuilder getTypOrBuilder();
  }
  public static final class unknown extends
      com.google.protobuf.GeneratedMessage
      implements unknownOrBuilder {
    // Use unknown.newBuilder() to construct.
    private unknown(Builder builder) {
      super(builder);
    }
    private unknown(boolean noInit) {}
    
    private static final unknown defaultInstance;
    public static unknown getDefaultInstance() {
      return defaultInstance;
    }
    
    public unknown getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_unknown_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_unknown_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required string string = 1;
    public static final int STRING_FIELD_NUMBER = 1;
    private java.lang.Object string_;
    public boolean hasString() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getString() {
      java.lang.Object ref = string_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          string_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getStringBytes() {
      java.lang.Object ref = string_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        string_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // required .typ typ = 2;
    public static final int TYP_FIELD_NUMBER = 2;
    private StmtPiqi.typ typ_;
    public boolean hasTyp() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.typ getTyp() {
      return typ_;
    }
    public StmtPiqi.typOrBuilder getTypOrBuilder() {
      return typ_;
    }
    
    private void initFields() {
      string_ = "";
      typ_ = StmtPiqi.typ.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasString()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTyp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTyp().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getStringBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, typ_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getStringBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, typ_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.unknown parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.unknown parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.unknown parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.unknown parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.unknown parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.unknown parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.unknown parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.unknown parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.unknown parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.unknown parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.unknown prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.unknownOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_unknown_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_unknown_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.unknown.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getTypFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        string_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (typBuilder_ == null) {
          typ_ = StmtPiqi.typ.getDefaultInstance();
        } else {
          typBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.unknown.getDescriptor();
      }
      
      public StmtPiqi.unknown getDefaultInstanceForType() {
        return StmtPiqi.unknown.getDefaultInstance();
      }
      
      public StmtPiqi.unknown build() {
        StmtPiqi.unknown result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.unknown buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.unknown result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.unknown buildPartial() {
        StmtPiqi.unknown result = new StmtPiqi.unknown(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.string_ = string_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (typBuilder_ == null) {
          result.typ_ = typ_;
        } else {
          result.typ_ = typBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.unknown) {
          return mergeFrom((StmtPiqi.unknown)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.unknown other) {
        if (other == StmtPiqi.unknown.getDefaultInstance()) return this;
        if (other.hasString()) {
          setString(other.getString());
        }
        if (other.hasTyp()) {
          mergeTyp(other.getTyp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasString()) {
          
          return false;
        }
        if (!hasTyp()) {
          
          return false;
        }
        if (!getTyp().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              string_ = input.readBytes();
              break;
            }
            case 18: {
              StmtPiqi.typ.Builder subBuilder = StmtPiqi.typ.newBuilder();
              if (hasTyp()) {
                subBuilder.mergeFrom(getTyp());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setTyp(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required string string = 1;
      private java.lang.Object string_ = "";
      public boolean hasString() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getString() {
        java.lang.Object ref = string_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          string_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setString(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        string_ = value;
        onChanged();
        return this;
      }
      public Builder clearString() {
        bitField0_ = (bitField0_ & ~0x00000001);
        string_ = getDefaultInstance().getString();
        onChanged();
        return this;
      }
      void setString(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        string_ = value;
        onChanged();
      }
      
      // required .typ typ = 2;
      private StmtPiqi.typ typ_ = StmtPiqi.typ.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder> typBuilder_;
      public boolean hasTyp() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.typ getTyp() {
        if (typBuilder_ == null) {
          return typ_;
        } else {
          return typBuilder_.getMessage();
        }
      }
      public Builder setTyp(StmtPiqi.typ value) {
        if (typBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          typ_ = value;
          onChanged();
        } else {
          typBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setTyp(
          StmtPiqi.typ.Builder builderForValue) {
        if (typBuilder_ == null) {
          typ_ = builderForValue.build();
          onChanged();
        } else {
          typBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeTyp(StmtPiqi.typ value) {
        if (typBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              typ_ != StmtPiqi.typ.getDefaultInstance()) {
            typ_ =
              StmtPiqi.typ.newBuilder(typ_).mergeFrom(value).buildPartial();
          } else {
            typ_ = value;
          }
          onChanged();
        } else {
          typBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearTyp() {
        if (typBuilder_ == null) {
          typ_ = StmtPiqi.typ.getDefaultInstance();
          onChanged();
        } else {
          typBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.typ.Builder getTypBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getTypFieldBuilder().getBuilder();
      }
      public StmtPiqi.typOrBuilder getTypOrBuilder() {
        if (typBuilder_ != null) {
          return typBuilder_.getMessageOrBuilder();
        } else {
          return typ_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder> 
          getTypFieldBuilder() {
        if (typBuilder_ == null) {
          typBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.typ, StmtPiqi.typ.Builder, StmtPiqi.typOrBuilder>(
                  typ_,
                  getParentForChildren(),
                  isClean());
          typ_ = null;
        }
        return typBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:unknown)
    }
    
    static {
      defaultInstance = new unknown(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:unknown)
  }
  
  public interface iteOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .exp condition = 1;
    boolean hasCondition();
    StmtPiqi.exp getCondition();
    StmtPiqi.expOrBuilder getConditionOrBuilder();
    
    // required .exp iftrue = 2;
    boolean hasIftrue();
    StmtPiqi.exp getIftrue();
    StmtPiqi.expOrBuilder getIftrueOrBuilder();
    
    // required .exp iffalse = 3;
    boolean hasIffalse();
    StmtPiqi.exp getIffalse();
    StmtPiqi.expOrBuilder getIffalseOrBuilder();
  }
  public static final class ite extends
      com.google.protobuf.GeneratedMessage
      implements iteOrBuilder {
    // Use ite.newBuilder() to construct.
    private ite(Builder builder) {
      super(builder);
    }
    private ite(boolean noInit) {}
    
    private static final ite defaultInstance;
    public static ite getDefaultInstance() {
      return defaultInstance;
    }
    
    public ite getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_ite_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_ite_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required .exp condition = 1;
    public static final int CONDITION_FIELD_NUMBER = 1;
    private StmtPiqi.exp condition_;
    public boolean hasCondition() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.exp getCondition() {
      return condition_;
    }
    public StmtPiqi.expOrBuilder getConditionOrBuilder() {
      return condition_;
    }
    
    // required .exp iftrue = 2;
    public static final int IFTRUE_FIELD_NUMBER = 2;
    private StmtPiqi.exp iftrue_;
    public boolean hasIftrue() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.exp getIftrue() {
      return iftrue_;
    }
    public StmtPiqi.expOrBuilder getIftrueOrBuilder() {
      return iftrue_;
    }
    
    // required .exp iffalse = 3;
    public static final int IFFALSE_FIELD_NUMBER = 3;
    private StmtPiqi.exp iffalse_;
    public boolean hasIffalse() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public StmtPiqi.exp getIffalse() {
      return iffalse_;
    }
    public StmtPiqi.expOrBuilder getIffalseOrBuilder() {
      return iffalse_;
    }
    
    private void initFields() {
      condition_ = StmtPiqi.exp.getDefaultInstance();
      iftrue_ = StmtPiqi.exp.getDefaultInstance();
      iffalse_ = StmtPiqi.exp.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasCondition()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIftrue()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIffalse()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getCondition().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getIftrue().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getIffalse().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, condition_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, iftrue_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, iffalse_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, condition_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, iftrue_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, iffalse_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.ite parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.ite parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.ite parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.ite parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.ite parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.ite parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.ite parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.ite parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.ite parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.ite parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.ite prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.iteOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_ite_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_ite_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.ite.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getConditionFieldBuilder();
          getIftrueFieldBuilder();
          getIffalseFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (conditionBuilder_ == null) {
          condition_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          conditionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (iftrueBuilder_ == null) {
          iftrue_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          iftrueBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (iffalseBuilder_ == null) {
          iffalse_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          iffalseBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.ite.getDescriptor();
      }
      
      public StmtPiqi.ite getDefaultInstanceForType() {
        return StmtPiqi.ite.getDefaultInstance();
      }
      
      public StmtPiqi.ite build() {
        StmtPiqi.ite result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.ite buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.ite result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.ite buildPartial() {
        StmtPiqi.ite result = new StmtPiqi.ite(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (conditionBuilder_ == null) {
          result.condition_ = condition_;
        } else {
          result.condition_ = conditionBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (iftrueBuilder_ == null) {
          result.iftrue_ = iftrue_;
        } else {
          result.iftrue_ = iftrueBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (iffalseBuilder_ == null) {
          result.iffalse_ = iffalse_;
        } else {
          result.iffalse_ = iffalseBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.ite) {
          return mergeFrom((StmtPiqi.ite)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.ite other) {
        if (other == StmtPiqi.ite.getDefaultInstance()) return this;
        if (other.hasCondition()) {
          mergeCondition(other.getCondition());
        }
        if (other.hasIftrue()) {
          mergeIftrue(other.getIftrue());
        }
        if (other.hasIffalse()) {
          mergeIffalse(other.getIffalse());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasCondition()) {
          
          return false;
        }
        if (!hasIftrue()) {
          
          return false;
        }
        if (!hasIffalse()) {
          
          return false;
        }
        if (!getCondition().isInitialized()) {
          
          return false;
        }
        if (!getIftrue().isInitialized()) {
          
          return false;
        }
        if (!getIffalse().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasCondition()) {
                subBuilder.mergeFrom(getCondition());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setCondition(subBuilder.buildPartial());
              break;
            }
            case 18: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasIftrue()) {
                subBuilder.mergeFrom(getIftrue());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setIftrue(subBuilder.buildPartial());
              break;
            }
            case 26: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasIffalse()) {
                subBuilder.mergeFrom(getIffalse());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setIffalse(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .exp condition = 1;
      private StmtPiqi.exp condition_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> conditionBuilder_;
      public boolean hasCondition() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.exp getCondition() {
        if (conditionBuilder_ == null) {
          return condition_;
        } else {
          return conditionBuilder_.getMessage();
        }
      }
      public Builder setCondition(StmtPiqi.exp value) {
        if (conditionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          condition_ = value;
          onChanged();
        } else {
          conditionBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setCondition(
          StmtPiqi.exp.Builder builderForValue) {
        if (conditionBuilder_ == null) {
          condition_ = builderForValue.build();
          onChanged();
        } else {
          conditionBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeCondition(StmtPiqi.exp value) {
        if (conditionBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              condition_ != StmtPiqi.exp.getDefaultInstance()) {
            condition_ =
              StmtPiqi.exp.newBuilder(condition_).mergeFrom(value).buildPartial();
          } else {
            condition_ = value;
          }
          onChanged();
        } else {
          conditionBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearCondition() {
        if (conditionBuilder_ == null) {
          condition_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          conditionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public StmtPiqi.exp.Builder getConditionBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getConditionFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getConditionOrBuilder() {
        if (conditionBuilder_ != null) {
          return conditionBuilder_.getMessageOrBuilder();
        } else {
          return condition_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getConditionFieldBuilder() {
        if (conditionBuilder_ == null) {
          conditionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  condition_,
                  getParentForChildren(),
                  isClean());
          condition_ = null;
        }
        return conditionBuilder_;
      }
      
      // required .exp iftrue = 2;
      private StmtPiqi.exp iftrue_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> iftrueBuilder_;
      public boolean hasIftrue() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.exp getIftrue() {
        if (iftrueBuilder_ == null) {
          return iftrue_;
        } else {
          return iftrueBuilder_.getMessage();
        }
      }
      public Builder setIftrue(StmtPiqi.exp value) {
        if (iftrueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          iftrue_ = value;
          onChanged();
        } else {
          iftrueBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setIftrue(
          StmtPiqi.exp.Builder builderForValue) {
        if (iftrueBuilder_ == null) {
          iftrue_ = builderForValue.build();
          onChanged();
        } else {
          iftrueBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeIftrue(StmtPiqi.exp value) {
        if (iftrueBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              iftrue_ != StmtPiqi.exp.getDefaultInstance()) {
            iftrue_ =
              StmtPiqi.exp.newBuilder(iftrue_).mergeFrom(value).buildPartial();
          } else {
            iftrue_ = value;
          }
          onChanged();
        } else {
          iftrueBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearIftrue() {
        if (iftrueBuilder_ == null) {
          iftrue_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          iftrueBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.exp.Builder getIftrueBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getIftrueFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getIftrueOrBuilder() {
        if (iftrueBuilder_ != null) {
          return iftrueBuilder_.getMessageOrBuilder();
        } else {
          return iftrue_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getIftrueFieldBuilder() {
        if (iftrueBuilder_ == null) {
          iftrueBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  iftrue_,
                  getParentForChildren(),
                  isClean());
          iftrue_ = null;
        }
        return iftrueBuilder_;
      }
      
      // required .exp iffalse = 3;
      private StmtPiqi.exp iffalse_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> iffalseBuilder_;
      public boolean hasIffalse() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public StmtPiqi.exp getIffalse() {
        if (iffalseBuilder_ == null) {
          return iffalse_;
        } else {
          return iffalseBuilder_.getMessage();
        }
      }
      public Builder setIffalse(StmtPiqi.exp value) {
        if (iffalseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          iffalse_ = value;
          onChanged();
        } else {
          iffalseBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder setIffalse(
          StmtPiqi.exp.Builder builderForValue) {
        if (iffalseBuilder_ == null) {
          iffalse_ = builderForValue.build();
          onChanged();
        } else {
          iffalseBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder mergeIffalse(StmtPiqi.exp value) {
        if (iffalseBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              iffalse_ != StmtPiqi.exp.getDefaultInstance()) {
            iffalse_ =
              StmtPiqi.exp.newBuilder(iffalse_).mergeFrom(value).buildPartial();
          } else {
            iffalse_ = value;
          }
          onChanged();
        } else {
          iffalseBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder clearIffalse() {
        if (iffalseBuilder_ == null) {
          iffalse_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          iffalseBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      public StmtPiqi.exp.Builder getIffalseBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getIffalseFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getIffalseOrBuilder() {
        if (iffalseBuilder_ != null) {
          return iffalseBuilder_.getMessageOrBuilder();
        } else {
          return iffalse_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getIffalseFieldBuilder() {
        if (iffalseBuilder_ == null) {
          iffalseBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  iffalse_,
                  getParentForChildren(),
                  isClean());
          iffalse_ = null;
        }
        return iffalseBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:ite)
    }
    
    static {
      defaultInstance = new ite(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:ite)
  }
  
  public interface extractOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required sint32 hbit = 1;
    boolean hasHbit();
    int getHbit();
    
    // required sint32 lbit = 2;
    boolean hasLbit();
    int getLbit();
    
    // required .exp exp = 3;
    boolean hasExp();
    StmtPiqi.exp getExp();
    StmtPiqi.expOrBuilder getExpOrBuilder();
  }
  public static final class extract extends
      com.google.protobuf.GeneratedMessage
      implements extractOrBuilder {
    // Use extract.newBuilder() to construct.
    private extract(Builder builder) {
      super(builder);
    }
    private extract(boolean noInit) {}
    
    private static final extract defaultInstance;
    public static extract getDefaultInstance() {
      return defaultInstance;
    }
    
    public extract getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_extract_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_extract_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required sint32 hbit = 1;
    public static final int HBIT_FIELD_NUMBER = 1;
    private int hbit_;
    public boolean hasHbit() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public int getHbit() {
      return hbit_;
    }
    
    // required sint32 lbit = 2;
    public static final int LBIT_FIELD_NUMBER = 2;
    private int lbit_;
    public boolean hasLbit() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public int getLbit() {
      return lbit_;
    }
    
    // required .exp exp = 3;
    public static final int EXP_FIELD_NUMBER = 3;
    private StmtPiqi.exp exp_;
    public boolean hasExp() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public StmtPiqi.exp getExp() {
      return exp_;
    }
    public StmtPiqi.expOrBuilder getExpOrBuilder() {
      return exp_;
    }
    
    private void initFields() {
      hbit_ = 0;
      lbit_ = 0;
      exp_ = StmtPiqi.exp.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasHbit()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasLbit()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasExp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getExp().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeSInt32(1, hbit_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeSInt32(2, lbit_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, exp_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeSInt32Size(1, hbit_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeSInt32Size(2, lbit_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, exp_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.extract parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.extract parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.extract parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.extract parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.extract parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.extract parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.extract parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.extract parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.extract parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.extract parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.extract prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.extractOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_extract_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_extract_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.extract.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getExpFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        hbit_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        lbit_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (expBuilder_ == null) {
          exp_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          expBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.extract.getDescriptor();
      }
      
      public StmtPiqi.extract getDefaultInstanceForType() {
        return StmtPiqi.extract.getDefaultInstance();
      }
      
      public StmtPiqi.extract build() {
        StmtPiqi.extract result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.extract buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.extract result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.extract buildPartial() {
        StmtPiqi.extract result = new StmtPiqi.extract(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.hbit_ = hbit_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.lbit_ = lbit_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (expBuilder_ == null) {
          result.exp_ = exp_;
        } else {
          result.exp_ = expBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.extract) {
          return mergeFrom((StmtPiqi.extract)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.extract other) {
        if (other == StmtPiqi.extract.getDefaultInstance()) return this;
        if (other.hasHbit()) {
          setHbit(other.getHbit());
        }
        if (other.hasLbit()) {
          setLbit(other.getLbit());
        }
        if (other.hasExp()) {
          mergeExp(other.getExp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasHbit()) {
          
          return false;
        }
        if (!hasLbit()) {
          
          return false;
        }
        if (!hasExp()) {
          
          return false;
        }
        if (!getExp().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              hbit_ = input.readSInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              lbit_ = input.readSInt32();
              break;
            }
            case 26: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasExp()) {
                subBuilder.mergeFrom(getExp());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setExp(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required sint32 hbit = 1;
      private int hbit_ ;
      public boolean hasHbit() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public int getHbit() {
        return hbit_;
      }
      public Builder setHbit(int value) {
        bitField0_ |= 0x00000001;
        hbit_ = value;
        onChanged();
        return this;
      }
      public Builder clearHbit() {
        bitField0_ = (bitField0_ & ~0x00000001);
        hbit_ = 0;
        onChanged();
        return this;
      }
      
      // required sint32 lbit = 2;
      private int lbit_ ;
      public boolean hasLbit() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public int getLbit() {
        return lbit_;
      }
      public Builder setLbit(int value) {
        bitField0_ |= 0x00000002;
        lbit_ = value;
        onChanged();
        return this;
      }
      public Builder clearLbit() {
        bitField0_ = (bitField0_ & ~0x00000002);
        lbit_ = 0;
        onChanged();
        return this;
      }
      
      // required .exp exp = 3;
      private StmtPiqi.exp exp_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> expBuilder_;
      public boolean hasExp() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public StmtPiqi.exp getExp() {
        if (expBuilder_ == null) {
          return exp_;
        } else {
          return expBuilder_.getMessage();
        }
      }
      public Builder setExp(StmtPiqi.exp value) {
        if (expBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          exp_ = value;
          onChanged();
        } else {
          expBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder setExp(
          StmtPiqi.exp.Builder builderForValue) {
        if (expBuilder_ == null) {
          exp_ = builderForValue.build();
          onChanged();
        } else {
          expBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder mergeExp(StmtPiqi.exp value) {
        if (expBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              exp_ != StmtPiqi.exp.getDefaultInstance()) {
            exp_ =
              StmtPiqi.exp.newBuilder(exp_).mergeFrom(value).buildPartial();
          } else {
            exp_ = value;
          }
          onChanged();
        } else {
          expBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder clearExp() {
        if (expBuilder_ == null) {
          exp_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          expBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      public StmtPiqi.exp.Builder getExpBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getExpFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getExpOrBuilder() {
        if (expBuilder_ != null) {
          return expBuilder_.getMessageOrBuilder();
        } else {
          return exp_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getExpFieldBuilder() {
        if (expBuilder_ == null) {
          expBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  exp_,
                  getParentForChildren(),
                  isClean());
          exp_ = null;
        }
        return expBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:extract)
    }
    
    static {
      defaultInstance = new extract(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:extract)
  }
  
  public interface concatOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required .exp le = 1;
    boolean hasLe();
    StmtPiqi.exp getLe();
    StmtPiqi.expOrBuilder getLeOrBuilder();
    
    // required .exp re = 2;
    boolean hasRe();
    StmtPiqi.exp getRe();
    StmtPiqi.expOrBuilder getReOrBuilder();
  }
  public static final class concat extends
      com.google.protobuf.GeneratedMessage
      implements concatOrBuilder {
    // Use concat.newBuilder() to construct.
    private concat(Builder builder) {
      super(builder);
    }
    private concat(boolean noInit) {}
    
    private static final concat defaultInstance;
    public static concat getDefaultInstance() {
      return defaultInstance;
    }
    
    public concat getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return StmtPiqi.internal_static_concat_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return StmtPiqi.internal_static_concat_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required .exp le = 1;
    public static final int LE_FIELD_NUMBER = 1;
    private StmtPiqi.exp le_;
    public boolean hasLe() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public StmtPiqi.exp getLe() {
      return le_;
    }
    public StmtPiqi.expOrBuilder getLeOrBuilder() {
      return le_;
    }
    
    // required .exp re = 2;
    public static final int RE_FIELD_NUMBER = 2;
    private StmtPiqi.exp re_;
    public boolean hasRe() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public StmtPiqi.exp getRe() {
      return re_;
    }
    public StmtPiqi.expOrBuilder getReOrBuilder() {
      return re_;
    }
    
    private void initFields() {
      le_ = StmtPiqi.exp.getDefaultInstance();
      re_ = StmtPiqi.exp.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasLe()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasRe()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getLe().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getRe().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, le_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, re_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, le_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, re_);
      }
      size += getUnknownFields().getSerializedSize();
      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 StmtPiqi.concat parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.concat parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.concat parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static StmtPiqi.concat parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.concat parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.concat parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static StmtPiqi.concat parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.concat parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static StmtPiqi.concat parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static StmtPiqi.concat parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(StmtPiqi.concat prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements StmtPiqi.concatOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return StmtPiqi.internal_static_concat_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return StmtPiqi.internal_static_concat_fieldAccessorTable;
      }
      
      // Construct using StmtPiqi.concat.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getLeFieldBuilder();
          getReFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (leBuilder_ == null) {
          le_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          leBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (reBuilder_ == null) {
          re_ = StmtPiqi.exp.getDefaultInstance();
        } else {
          reBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return StmtPiqi.concat.getDescriptor();
      }
      
      public StmtPiqi.concat getDefaultInstanceForType() {
        return StmtPiqi.concat.getDefaultInstance();
      }
      
      public StmtPiqi.concat build() {
        StmtPiqi.concat result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private StmtPiqi.concat buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        StmtPiqi.concat result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public StmtPiqi.concat buildPartial() {
        StmtPiqi.concat result = new StmtPiqi.concat(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (leBuilder_ == null) {
          result.le_ = le_;
        } else {
          result.le_ = leBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (reBuilder_ == null) {
          result.re_ = re_;
        } else {
          result.re_ = reBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof StmtPiqi.concat) {
          return mergeFrom((StmtPiqi.concat)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(StmtPiqi.concat other) {
        if (other == StmtPiqi.concat.getDefaultInstance()) return this;
        if (other.hasLe()) {
          mergeLe(other.getLe());
        }
        if (other.hasRe()) {
          mergeRe(other.getRe());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasLe()) {
          
          return false;
        }
        if (!hasRe()) {
          
          return false;
        }
        if (!getLe().isInitialized()) {
          
          return false;
        }
        if (!getRe().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasLe()) {
                subBuilder.mergeFrom(getLe());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setLe(subBuilder.buildPartial());
              break;
            }
            case 18: {
              StmtPiqi.exp.Builder subBuilder = StmtPiqi.exp.newBuilder();
              if (hasRe()) {
                subBuilder.mergeFrom(getRe());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setRe(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required .exp le = 1;
      private StmtPiqi.exp le_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> leBuilder_;
      public boolean hasLe() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public StmtPiqi.exp getLe() {
        if (leBuilder_ == null) {
          return le_;
        } else {
          return leBuilder_.getMessage();
        }
      }
      public Builder setLe(StmtPiqi.exp value) {
        if (leBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          le_ = value;
          onChanged();
        } else {
          leBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setLe(
          StmtPiqi.exp.Builder builderForValue) {
        if (leBuilder_ == null) {
          le_ = builderForValue.build();
          onChanged();
        } else {
          leBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeLe(StmtPiqi.exp value) {
        if (leBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              le_ != StmtPiqi.exp.getDefaultInstance()) {
            le_ =
              StmtPiqi.exp.newBuilder(le_).mergeFrom(value).buildPartial();
          } else {
            le_ = value;
          }
          onChanged();
        } else {
          leBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearLe() {
        if (leBuilder_ == null) {
          le_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          leBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public StmtPiqi.exp.Builder getLeBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getLeFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getLeOrBuilder() {
        if (leBuilder_ != null) {
          return leBuilder_.getMessageOrBuilder();
        } else {
          return le_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getLeFieldBuilder() {
        if (leBuilder_ == null) {
          leBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  le_,
                  getParentForChildren(),
                  isClean());
          le_ = null;
        }
        return leBuilder_;
      }
      
      // required .exp re = 2;
      private StmtPiqi.exp re_ = StmtPiqi.exp.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> reBuilder_;
      public boolean hasRe() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public StmtPiqi.exp getRe() {
        if (reBuilder_ == null) {
          return re_;
        } else {
          return reBuilder_.getMessage();
        }
      }
      public Builder setRe(StmtPiqi.exp value) {
        if (reBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          re_ = value;
          onChanged();
        } else {
          reBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setRe(
          StmtPiqi.exp.Builder builderForValue) {
        if (reBuilder_ == null) {
          re_ = builderForValue.build();
          onChanged();
        } else {
          reBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeRe(StmtPiqi.exp value) {
        if (reBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              re_ != StmtPiqi.exp.getDefaultInstance()) {
            re_ =
              StmtPiqi.exp.newBuilder(re_).mergeFrom(value).buildPartial();
          } else {
            re_ = value;
          }
          onChanged();
        } else {
          reBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearRe() {
        if (reBuilder_ == null) {
          re_ = StmtPiqi.exp.getDefaultInstance();
          onChanged();
        } else {
          reBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public StmtPiqi.exp.Builder getReBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getReFieldBuilder().getBuilder();
      }
      public StmtPiqi.expOrBuilder getReOrBuilder() {
        if (reBuilder_ != null) {
          return reBuilder_.getMessageOrBuilder();
        } else {
          return re_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder> 
          getReFieldBuilder() {
        if (reBuilder_ == null) {
          reBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              StmtPiqi.exp, StmtPiqi.exp.Builder, StmtPiqi.expOrBuilder>(
                  re_,
                  getParentForChildren(),
                  isClean());
          re_ = null;
        }
        return reBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:concat)
    }
    
    static {
      defaultInstance = new concat(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:concat)
  }
  
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_program_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_program_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_stmt_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_stmt_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_move_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_move_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_jmp_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_jmp_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_cjmp_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_cjmp_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_label_stmt_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_label_stmt_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_halt_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_halt_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_assert_stmt_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_assert_stmt_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_assume_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_assume_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_comment_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_comment_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_special_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_special_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_typ_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_typ_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_tmem_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_tmem_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_array_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_array_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_label_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_label_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_var_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_var_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_vars_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_vars_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_defuse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_defuse_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_attribute_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_attribute_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_attributes_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_attributes_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_liveout_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_liveout_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_synthetic_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_synthetic_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_operand_info_specific_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_operand_info_specific_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_reg_operand_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_reg_operand_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_operand_usage_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_operand_usage_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_mem_operand_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_mem_operand_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_taint_info_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_taint_info_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_context_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_context_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_exp_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_exp_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_load_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_load_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_store_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_store_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_binop_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_binop_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_unop_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_unop_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_inte_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_inte_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_cast_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_cast_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_let_exp_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_let_exp_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_unknown_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_unknown_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_ite_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_ite_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_extract_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_extract_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_concat_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_concat_fieldAccessorTable;
  
  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\017stmt.piqi.proto\"\036\n\007program\022\023\n\004elem\030\001 \003" +
      "(\0132\005.stmt\"\353\001\n\004stmt\022\023\n\004move\030\001 \001(\0132\005.move\022" +
      "\021\n\003jmp\030\002 \001(\0132\004.jmp\022\023\n\004cjmp\030\003 \001(\0132\005.cjmp\022" +
      "\037\n\nlabel_stmt\030\004 \001(\0132\013.label_stmt\022\023\n\004halt" +
      "\030\005 \001(\0132\005.halt\022!\n\013assert_stmt\030\006 \001(\0132\014.ass" +
      "ert_stmt\022\027\n\006assume\030\007 \001(\0132\007.assume\022\031\n\007com" +
      "ment\030\010 \001(\0132\010.comment\022\031\n\007special\030\t \001(\0132\010." +
      "special\"M\n\004move\022\021\n\003var\030\001 \002(\0132\004.var\022\021\n\003ex" +
      "p\030\002 \002(\0132\004.exp\022\037\n\nattributes\030\003 \002(\0132\013.attr" +
      "ibutes\"9\n\003jmp\022\021\n\003exp\030\001 \002(\0132\004.exp\022\037\n\nattr",
      "ibutes\030\002 \002(\0132\013.attributes\"h\n\004cjmp\022\022\n\004con" +
      "d\030\001 \002(\0132\004.exp\022\024\n\006iftrue\030\002 \002(\0132\004.exp\022\025\n\007i" +
      "ffalse\030\003 \002(\0132\004.exp\022\037\n\nattributes\030\004 \002(\0132\013" +
      ".attributes\"D\n\nlabel_stmt\022\025\n\005label\030\001 \002(\013" +
      "2\006.label\022\037\n\nattributes\030\002 \002(\0132\013.attribute" +
      "s\":\n\004halt\022\021\n\003exp\030\001 \002(\0132\004.exp\022\037\n\nattribut" +
      "es\030\002 \002(\0132\013.attributes\"A\n\013assert_stmt\022\021\n\003" +
      "exp\030\001 \002(\0132\004.exp\022\037\n\nattributes\030\002 \002(\0132\013.at" +
      "tributes\"<\n\006assume\022\021\n\003exp\030\001 \002(\0132\004.exp\022\037\n" +
      "\nattributes\030\002 \002(\0132\013.attributes\":\n\007commen",
      "t\022\016\n\006string\030\001 \002(\t\022\037\n\nattributes\030\002 \002(\0132\013." +
      "attributes\"S\n\007special\022\016\n\006string\030\001 \002(\t\022\027\n" +
      "\006defuse\030\002 \001(\0132\007.defuse\022\037\n\nattributes\030\003 \002" +
      "(\0132\013.attributes\">\n\003typ\022\013\n\003reg\030\001 \001(\021\022\023\n\004t" +
      "mem\030\002 \001(\0132\005.tmem\022\025\n\005array\030\003 \001(\0132\006.array\"" +
      "<\n\004tmem\022\030\n\nindex_type\030\001 \002(\0132\004.typ\022\032\n\014ele" +
      "ment_type\030\002 \002(\0132\004.typ\"=\n\005array\022\030\n\nindex_" +
      "type\030\001 \002(\0132\004.typ\022\032\n\014element_type\030\002 \002(\0132\004" +
      ".typ\"#\n\005label\022\014\n\004name\030\001 \001(\t\022\014\n\004addr\030\002 \001(" +
      "\022\"2\n\003var\022\014\n\004name\030\001 \002(\t\022\n\n\002id\030\002 \002(\021\022\021\n\003ty",
      "p\030\003 \002(\0132\004.typ\"\032\n\004vars\022\022\n\004elem\030\001 \003(\0132\004.va" +
      "r\"2\n\006defuse\022\023\n\004defs\030\001 \002(\0132\005.vars\022\023\n\004uses" +
      "\030\002 \002(\0132\005.vars\"\261\001\n\tattribute\022\013\n\003asm\030\001 \001(\t" +
      "\022\017\n\007address\030\002 \001(\022\022\031\n\007liveout\030\003 \001(\0132\010.liv" +
      "eout\022\017\n\007strattr\030\004 \001(\t\022\031\n\007context\030\005 \001(\0132\010" +
      ".context\022\021\n\tthread_id\030\006 \001(\004\022\035\n\tsynthetic" +
      "\030\007 \001(\0132\n.synthetic\022\r\n\005other\030\010 \001(\t\"&\n\natt" +
      "ributes\022\030\n\004elem\030\001 \003(\0132\n.attribute\"\t\n\007liv" +
      "eout\"\013\n\tsynthetic\"]\n\025operand_info_specif" +
      "ic\022!\n\013mem_operand\030\001 \001(\0132\014.mem_operand\022!\n",
      "\013reg_operand\030\002 \001(\0132\014.reg_operand\"\033\n\013reg_" +
      "operand\022\014\n\004name\030\001 \002(\t\"K\n\roperand_usage\022\014" +
      "\n\004read\030\001 \002(\010\022\017\n\007written\030\002 \002(\010\022\r\n\005index\030\003" +
      " \002(\010\022\014\n\004base\030\004 \002(\010\"\036\n\013mem_operand\022\017\n\007add" +
      "ress\030\001 \002(\022\"H\n\ntaint_info\022\020\n\010no_taint\030\001 \001" +
      "(\010\022\020\n\010taint_id\030\002 \001(\004\022\026\n\016taint_multiple\030\003" +
      " \001(\010\"\253\001\n\007context\0225\n\025operand_info_specifi" +
      "c\030\001 \002(\0132\026.operand_info_specific\022\022\n\nbit_l" +
      "ength\030\002 \002(\021\022%\n\roperand_usage\030\003 \002(\0132\016.ope" +
      "rand_usage\022\037\n\ntaint_info\030\004 \002(\0132\013.taint_i",
      "nfo\022\r\n\005value\030\005 \002(\t\"\244\002\n\003exp\022\023\n\004load\030\001 \001(\013" +
      "2\005.load\022\025\n\005store\030\002 \001(\0132\006.store\022\025\n\005binop\030" +
      "\003 \001(\0132\006.binop\022\023\n\004unop\030\004 \001(\0132\005.unop\022\021\n\003va" +
      "r\030\005 \001(\0132\004.var\022\013\n\003lab\030\006 \001(\t\022\023\n\004inte\030\007 \001(\013" +
      "2\005.inte\022\023\n\004cast\030\010 \001(\0132\005.cast\022\031\n\007let_exp\030" +
      "\t \001(\0132\010.let_exp\022\031\n\007unknown\030\n \001(\0132\010.unkno" +
      "wn\022\021\n\003ite\030\013 \001(\0132\004.ite\022\031\n\007extract\030\014 \001(\0132\010" +
      ".extract\022\027\n\006concat\030\r \001(\0132\007.concat\"\\\n\004loa" +
      "d\022\024\n\006memory\030\001 \002(\0132\004.exp\022\025\n\007address\030\002 \002(\013" +
      "2\004.exp\022\024\n\006endian\030\003 \002(\0132\004.exp\022\021\n\003typ\030\004 \002(",
      "\0132\004.typ\"r\n\005store\022\024\n\006memory\030\001 \002(\0132\004.exp\022\025" +
      "\n\007address\030\002 \002(\0132\004.exp\022\023\n\005value\030\003 \002(\0132\004.e" +
      "xp\022\024\n\006endian\030\004 \002(\0132\004.exp\022\021\n\003typ\030\005 \002(\0132\004." +
      "typ\"P\n\005binop\022\037\n\nbinop_type\030\001 \002(\0162\013.binop" +
      "_type\022\022\n\004lexp\030\002 \002(\0132\004.exp\022\022\n\004rexp\030\003 \002(\0132" +
      "\004.exp\"8\n\004unop\022\035\n\tunop_type\030\001 \002(\0162\n.unop_" +
      "type\022\021\n\003exp\030\002 \002(\0132\004.exp\"&\n\004inte\022\013\n\003int\030\001" +
      " \002(\t\022\021\n\003typ\030\002 \002(\0132\004.typ\"P\n\004cast\022\035\n\tcast_" +
      "type\030\001 \002(\0162\n.cast_type\022\026\n\010new_type\030\002 \002(\013" +
      "2\004.typ\022\021\n\003exp\030\003 \002(\0132\004.exp\"@\n\007let_exp\022\021\n\003",
      "var\030\001 \002(\0132\004.var\022\020\n\002e1\030\002 \002(\0132\004.exp\022\020\n\002e2\030" +
      "\003 \002(\0132\004.exp\",\n\007unknown\022\016\n\006string\030\001 \002(\t\022\021" +
      "\n\003typ\030\002 \002(\0132\004.typ\"K\n\003ite\022\027\n\tcondition\030\001 " +
      "\002(\0132\004.exp\022\024\n\006iftrue\030\002 \002(\0132\004.exp\022\025\n\007iffal" +
      "se\030\003 \002(\0132\004.exp\"8\n\007extract\022\014\n\004hbit\030\001 \002(\021\022" +
      "\014\n\004lbit\030\002 \002(\021\022\021\n\003exp\030\003 \002(\0132\004.exp\",\n\006conc" +
      "at\022\020\n\002le\030\001 \002(\0132\004.exp\022\020\n\002re\030\002 \002(\0132\004.exp*L" +
      "\n\tcast_type\022\021\n\rcast_unsigned\020\001\022\017\n\013cast_s" +
      "igned\020\002\022\r\n\tcast_high\020\003\022\014\n\010cast_low\020\004*\323\001\n" +
      "\nbinop_type\022\010\n\004plus\020\001\022\t\n\005minus\020\002\022\t\n\005time",
      "s\020\003\022\n\n\006divide\020\004\022\013\n\007sdivide\020\005\022\n\n\006modbop\020\006" +
      "\022\010\n\004smod\020\007\022\n\n\006lshift\020\010\022\n\n\006rshift\020\t\022\013\n\007ar" +
      "shift\020\n\022\n\n\006andbop\020\013\022\t\n\005orbop\020\014\022\007\n\003xor\020\r\022" +
      "\006\n\002eq\020\016\022\007\n\003neq\020\017\022\006\n\002lt\020\020\022\006\n\002le\020\021\022\007\n\003slt\020" +
      "\022\022\007\n\003sle\020\023*\037\n\tunop_type\022\010\n\004uneg\020\001\022\010\n\004uno" +
      "t\020\002"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
        public com.google.protobuf.ExtensionRegistry assignDescriptors(
            com.google.protobuf.Descriptors.FileDescriptor root) {
          descriptor = root;
          internal_static_program_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_program_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_program_descriptor,
              new java.lang.String[] { "Elem", },
              StmtPiqi.program.class,
              StmtPiqi.program.Builder.class);
          internal_static_stmt_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_stmt_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_stmt_descriptor,
              new java.lang.String[] { "Move", "Jmp", "Cjmp", "LabelStmt", "Halt", "AssertStmt", "Assume", "Comment", "Special", },
              StmtPiqi.stmt.class,
              StmtPiqi.stmt.Builder.class);
          internal_static_move_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_move_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_move_descriptor,
              new java.lang.String[] { "Var", "Exp", "Attributes", },
              StmtPiqi.move.class,
              StmtPiqi.move.Builder.class);
          internal_static_jmp_descriptor =
            getDescriptor().getMessageTypes().get(3);
          internal_static_jmp_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_jmp_descriptor,
              new java.lang.String[] { "Exp", "Attributes", },
              StmtPiqi.jmp.class,
              StmtPiqi.jmp.Builder.class);
          internal_static_cjmp_descriptor =
            getDescriptor().getMessageTypes().get(4);
          internal_static_cjmp_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_cjmp_descriptor,
              new java.lang.String[] { "Cond", "Iftrue", "Iffalse", "Attributes", },
              StmtPiqi.cjmp.class,
              StmtPiqi.cjmp.Builder.class);
          internal_static_label_stmt_descriptor =
            getDescriptor().getMessageTypes().get(5);
          internal_static_label_stmt_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_label_stmt_descriptor,
              new java.lang.String[] { "Label", "Attributes", },
              StmtPiqi.label_stmt.class,
              StmtPiqi.label_stmt.Builder.class);
          internal_static_halt_descriptor =
            getDescriptor().getMessageTypes().get(6);
          internal_static_halt_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_halt_descriptor,
              new java.lang.String[] { "Exp", "Attributes", },
              StmtPiqi.halt.class,
              StmtPiqi.halt.Builder.class);
          internal_static_assert_stmt_descriptor =
            getDescriptor().getMessageTypes().get(7);
          internal_static_assert_stmt_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_assert_stmt_descriptor,
              new java.lang.String[] { "Exp", "Attributes", },
              StmtPiqi.assert_stmt.class,
              StmtPiqi.assert_stmt.Builder.class);
          internal_static_assume_descriptor =
            getDescriptor().getMessageTypes().get(8);
          internal_static_assume_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_assume_descriptor,
              new java.lang.String[] { "Exp", "Attributes", },
              StmtPiqi.assume.class,
              StmtPiqi.assume.Builder.class);
          internal_static_comment_descriptor =
            getDescriptor().getMessageTypes().get(9);
          internal_static_comment_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_comment_descriptor,
              new java.lang.String[] { "String", "Attributes", },
              StmtPiqi.comment.class,
              StmtPiqi.comment.Builder.class);
          internal_static_special_descriptor =
            getDescriptor().getMessageTypes().get(10);
          internal_static_special_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_special_descriptor,
              new java.lang.String[] { "String", "Defuse", "Attributes", },
              StmtPiqi.special.class,
              StmtPiqi.special.Builder.class);
          internal_static_typ_descriptor =
            getDescriptor().getMessageTypes().get(11);
          internal_static_typ_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_typ_descriptor,
              new java.lang.String[] { "Reg", "Tmem", "Array", },
              StmtPiqi.typ.class,
              StmtPiqi.typ.Builder.class);
          internal_static_tmem_descriptor =
            getDescriptor().getMessageTypes().get(12);
          internal_static_tmem_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_tmem_descriptor,
              new java.lang.String[] { "IndexType", "ElementType", },
              StmtPiqi.tmem.class,
              StmtPiqi.tmem.Builder.class);
          internal_static_array_descriptor =
            getDescriptor().getMessageTypes().get(13);
          internal_static_array_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_array_descriptor,
              new java.lang.String[] { "IndexType", "ElementType", },
              StmtPiqi.array.class,
              StmtPiqi.array.Builder.class);
          internal_static_label_descriptor =
            getDescriptor().getMessageTypes().get(14);
          internal_static_label_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_label_descriptor,
              new java.lang.String[] { "Name", "Addr", },
              StmtPiqi.label.class,
              StmtPiqi.label.Builder.class);
          internal_static_var_descriptor =
            getDescriptor().getMessageTypes().get(15);
          internal_static_var_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_var_descriptor,
              new java.lang.String[] { "Name", "Id", "Typ", },
              StmtPiqi.var.class,
              StmtPiqi.var.Builder.class);
          internal_static_vars_descriptor =
            getDescriptor().getMessageTypes().get(16);
          internal_static_vars_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_vars_descriptor,
              new java.lang.String[] { "Elem", },
              StmtPiqi.vars.class,
              StmtPiqi.vars.Builder.class);
          internal_static_defuse_descriptor =
            getDescriptor().getMessageTypes().get(17);
          internal_static_defuse_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_defuse_descriptor,
              new java.lang.String[] { "Defs", "Uses", },
              StmtPiqi.defuse.class,
              StmtPiqi.defuse.Builder.class);
          internal_static_attribute_descriptor =
            getDescriptor().getMessageTypes().get(18);
          internal_static_attribute_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_attribute_descriptor,
              new java.lang.String[] { "Asm", "Address", "Liveout", "Strattr", "Context", "ThreadId", "Synthetic", "Other", },
              StmtPiqi.attribute.class,
              StmtPiqi.attribute.Builder.class);
          internal_static_attributes_descriptor =
            getDescriptor().getMessageTypes().get(19);
          internal_static_attributes_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_attributes_descriptor,
              new java.lang.String[] { "Elem", },
              StmtPiqi.attributes.class,
              StmtPiqi.attributes.Builder.class);
          internal_static_liveout_descriptor =
            getDescriptor().getMessageTypes().get(20);
          internal_static_liveout_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_liveout_descriptor,
              new java.lang.String[] { },
              StmtPiqi.liveout.class,
              StmtPiqi.liveout.Builder.class);
          internal_static_synthetic_descriptor =
            getDescriptor().getMessageTypes().get(21);
          internal_static_synthetic_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_synthetic_descriptor,
              new java.lang.String[] { },
              StmtPiqi.synthetic.class,
              StmtPiqi.synthetic.Builder.class);
          internal_static_operand_info_specific_descriptor =
            getDescriptor().getMessageTypes().get(22);
          internal_static_operand_info_specific_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_operand_info_specific_descriptor,
              new java.lang.String[] { "MemOperand", "RegOperand", },
              StmtPiqi.operand_info_specific.class,
              StmtPiqi.operand_info_specific.Builder.class);
          internal_static_reg_operand_descriptor =
            getDescriptor().getMessageTypes().get(23);
          internal_static_reg_operand_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_reg_operand_descriptor,
              new java.lang.String[] { "Name", },
              StmtPiqi.reg_operand.class,
              StmtPiqi.reg_operand.Builder.class);
          internal_static_operand_usage_descriptor =
            getDescriptor().getMessageTypes().get(24);
          internal_static_operand_usage_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_operand_usage_descriptor,
              new java.lang.String[] { "Read", "Written", "Index", "Base", },
              StmtPiqi.operand_usage.class,
              StmtPiqi.operand_usage.Builder.class);
          internal_static_mem_operand_descriptor =
            getDescriptor().getMessageTypes().get(25);
          internal_static_mem_operand_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_mem_operand_descriptor,
              new java.lang.String[] { "Address", },
              StmtPiqi.mem_operand.class,
              StmtPiqi.mem_operand.Builder.class);
          internal_static_taint_info_descriptor =
            getDescriptor().getMessageTypes().get(26);
          internal_static_taint_info_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_taint_info_descriptor,
              new java.lang.String[] { "NoTaint", "TaintId", "TaintMultiple", },
              StmtPiqi.taint_info.class,
              StmtPiqi.taint_info.Builder.class);
          internal_static_context_descriptor =
            getDescriptor().getMessageTypes().get(27);
          internal_static_context_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_context_descriptor,
              new java.lang.String[] { "OperandInfoSpecific", "BitLength", "OperandUsage", "TaintInfo", "Value", },
              StmtPiqi.context.class,
              StmtPiqi.context.Builder.class);
          internal_static_exp_descriptor =
            getDescriptor().getMessageTypes().get(28);
          internal_static_exp_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_exp_descriptor,
              new java.lang.String[] { "Load", "Store", "Binop", "Unop", "Var", "Lab", "Inte", "Cast", "LetExp", "Unknown", "Ite", "Extract", "Concat", },
              StmtPiqi.exp.class,
              StmtPiqi.exp.Builder.class);
          internal_static_load_descriptor =
            getDescriptor().getMessageTypes().get(29);
          internal_static_load_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_load_descriptor,
              new java.lang.String[] { "Memory", "Address", "Endian", "Typ", },
              StmtPiqi.load.class,
              StmtPiqi.load.Builder.class);
          internal_static_store_descriptor =
            getDescriptor().getMessageTypes().get(30);
          internal_static_store_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_store_descriptor,
              new java.lang.String[] { "Memory", "Address", "Value", "Endian", "Typ", },
              StmtPiqi.store.class,
              StmtPiqi.store.Builder.class);
          internal_static_binop_descriptor =
            getDescriptor().getMessageTypes().get(31);
          internal_static_binop_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_binop_descriptor,
              new java.lang.String[] { "BinopType", "Lexp", "Rexp", },
              StmtPiqi.binop.class,
              StmtPiqi.binop.Builder.class);
          internal_static_unop_descriptor =
            getDescriptor().getMessageTypes().get(32);
          internal_static_unop_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_unop_descriptor,
              new java.lang.String[] { "UnopType", "Exp", },
              StmtPiqi.unop.class,
              StmtPiqi.unop.Builder.class);
          internal_static_inte_descriptor =
            getDescriptor().getMessageTypes().get(33);
          internal_static_inte_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_inte_descriptor,
              new java.lang.String[] { "Int", "Typ", },
              StmtPiqi.inte.class,
              StmtPiqi.inte.Builder.class);
          internal_static_cast_descriptor =
            getDescriptor().getMessageTypes().get(34);
          internal_static_cast_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_cast_descriptor,
              new java.lang.String[] { "CastType", "NewType", "Exp", },
              StmtPiqi.cast.class,
              StmtPiqi.cast.Builder.class);
          internal_static_let_exp_descriptor =
            getDescriptor().getMessageTypes().get(35);
          internal_static_let_exp_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_let_exp_descriptor,
              new java.lang.String[] { "Var", "E1", "E2", },
              StmtPiqi.let_exp.class,
              StmtPiqi.let_exp.Builder.class);
          internal_static_unknown_descriptor =
            getDescriptor().getMessageTypes().get(36);
          internal_static_unknown_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_unknown_descriptor,
              new java.lang.String[] { "String", "Typ", },
              StmtPiqi.unknown.class,
              StmtPiqi.unknown.Builder.class);
          internal_static_ite_descriptor =
            getDescriptor().getMessageTypes().get(37);
          internal_static_ite_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_ite_descriptor,
              new java.lang.String[] { "Condition", "Iftrue", "Iffalse", },
              StmtPiqi.ite.class,
              StmtPiqi.ite.Builder.class);
          internal_static_extract_descriptor =
            getDescriptor().getMessageTypes().get(38);
          internal_static_extract_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_extract_descriptor,
              new java.lang.String[] { "Hbit", "Lbit", "Exp", },
              StmtPiqi.extract.class,
              StmtPiqi.extract.Builder.class);
          internal_static_concat_descriptor =
            getDescriptor().getMessageTypes().get(39);
          internal_static_concat_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_concat_descriptor,
              new java.lang.String[] { "Le", "Re", },
              StmtPiqi.concat.class,
              StmtPiqi.concat.Builder.class);
          return null;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
  }
  
  // @@protoc_insertion_point(outer_class_scope)
}
