content: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: common/expression.proto
  
  package apsara.odps;
  
  public final class ExpressionProtos {
    private ExpressionProtos() {}
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistry registry) {
    }
    public interface ReferenceOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required string Name = 1;
      boolean hasName();
      String getName();
      
      // optional string From = 2;
      boolean hasFrom();
      String getFrom();
    }
    public static final class Reference extends
        com.google.protobuf.GeneratedMessage
        implements ReferenceOrBuilder {
      // Use Reference.newBuilder() to construct.
      private Reference(Builder builder) {
        super(builder);
      }
      private Reference(boolean noInit) {}
      
      private static final Reference defaultInstance;
      public static Reference getDefaultInstance() {
        return defaultInstance;
      }
      
      public Reference getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ExpressionProtos.internal_static_apsara_odps_Reference_descriptor;
      }
      
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ExpressionProtos.internal_static_apsara_odps_Reference_fieldAccessorTable;
      }
      
      private int bitField0_;
      // required string Name = 1;
      public static final int NAME_FIELD_NUMBER = 1;
      private Object name_;
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getName() {
        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() {
        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 string From = 2;
      public static final int FROM_FIELD_NUMBER = 2;
      private Object from_;
      public boolean hasFrom() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getFrom() {
        Object ref = from_;
        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)) {
            from_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getFromBytes() {
        Object ref = from_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          from_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      private void initFields() {
        name_ = "";
        from_ = "";
      }
      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());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getFromBytes());
        }
        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
            .computeBytesSize(2, getFromBytes());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      private static final long serialVersionUID = 0L;
      @Override
      protected Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }
      
      public static Reference parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static Reference parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static Reference parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static Reference parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static Reference parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static Reference parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static Reference parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static Reference 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 Reference parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static Reference 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(Reference prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      @Override
      protected Builder newBuilderForType(
          BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements ReferenceOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ExpressionProtos.internal_static_apsara_odps_Reference_descriptor;
        }
        
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ExpressionProtos.internal_static_apsara_odps_Reference_fieldAccessorTable;
        }
        
        // Construct using apsara.odps.ExpressionProtos.Reference.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);
          from_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return Reference.getDescriptor();
        }
        
        public Reference getDefaultInstanceForType() {
          return Reference.getDefaultInstance();
        }
        
        public Reference build() {
          Reference result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private Reference buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          Reference result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public Reference buildPartial() {
          Reference result = new Reference(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.from_ = from_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof Reference) {
            return mergeFrom((Reference)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(Reference other) {
          if (other == Reference.getDefaultInstance()) return this;
          if (other.hasName()) {
            setName(other.getName());
          }
          if (other.hasFrom()) {
            setFrom(other.getFrom());
          }
          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;
              }
              case 18: {
                bitField0_ |= 0x00000002;
                from_ = input.readBytes();
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // required string Name = 1;
        private Object name_ = "";
        public boolean hasName() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public String getName() {
          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 string From = 2;
        private Object from_ = "";
        public boolean hasFrom() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public String getFrom() {
          Object ref = from_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            from_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setFrom(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          from_ = value;
          onChanged();
          return this;
        }
        public Builder clearFrom() {
          bitField0_ = (bitField0_ & ~0x00000002);
          from_ = getDefaultInstance().getFrom();
          onChanged();
          return this;
        }
        void setFrom(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000002;
          from_ = value;
          onChanged();
        }
        
        // @@protoc_insertion_point(builder_scope:apsara.odps.Reference)
      }
      
      static {
        defaultInstance = new Reference(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:apsara.odps.Reference)
    }
    
    public interface NullOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
    }
    public static final class Null extends
        com.google.protobuf.GeneratedMessage
        implements NullOrBuilder {
      // Use Null.newBuilder() to construct.
      private Null(Builder builder) {
        super(builder);
      }
      private Null(boolean noInit) {}
      
      private static final Null defaultInstance;
      public static Null getDefaultInstance() {
        return defaultInstance;
      }
      
      public Null getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ExpressionProtos.internal_static_apsara_odps_Null_descriptor;
      }
      
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ExpressionProtos.internal_static_apsara_odps_Null_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;
      @Override
      protected Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }
      
      public static Null parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static Null parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static Null parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static Null parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static Null parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static Null parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static Null parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static Null 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 Null parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static Null 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(Null prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      @Override
      protected Builder newBuilderForType(
          BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements NullOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ExpressionProtos.internal_static_apsara_odps_Null_descriptor;
        }
        
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ExpressionProtos.internal_static_apsara_odps_Null_fieldAccessorTable;
        }
        
        // Construct using apsara.odps.ExpressionProtos.Null.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 Null.getDescriptor();
        }
        
        public Null getDefaultInstanceForType() {
          return Null.getDefaultInstance();
        }
        
        public Null build() {
          Null result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private Null buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          Null result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public Null buildPartial() {
          Null result = new Null(this);
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof Null) {
            return mergeFrom((Null)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(Null other) {
          if (other == Null.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:apsara.odps.Null)
      }
      
      static {
        defaultInstance = new Null(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:apsara.odps.Null)
    }
    
    public interface ArrayAnyOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // repeated .apsara.odps.ArrayAny.ArrayItem Item = 1;
      java.util.List<ArrayAny.ArrayItem>
          getItemList();
      ArrayAny.ArrayItem getItem(int index);
      int getItemCount();
      java.util.List<? extends ArrayAny.ArrayItemOrBuilder>
          getItemOrBuilderList();
      ArrayAny.ArrayItemOrBuilder getItemOrBuilder(
          int index);
    }
    public static final class ArrayAny extends
        com.google.protobuf.GeneratedMessage
        implements ArrayAnyOrBuilder {
      // Use ArrayAny.newBuilder() to construct.
      private ArrayAny(Builder builder) {
        super(builder);
      }
      private ArrayAny(boolean noInit) {}
      
      private static final ArrayAny defaultInstance;
      public static ArrayAny getDefaultInstance() {
        return defaultInstance;
      }
      
      public ArrayAny getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ExpressionProtos.internal_static_apsara_odps_ArrayAny_descriptor;
      }
      
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ExpressionProtos.internal_static_apsara_odps_ArrayAny_fieldAccessorTable;
      }
      
      public interface ArrayItemOrBuilder
          extends com.google.protobuf.MessageOrBuilder {
        
        // optional int64 ArrayInteger = 1;
        boolean hasArrayInteger();
        long getArrayInteger();
        
        // optional double ArrayDouble = 2;
        boolean hasArrayDouble();
        double getArrayDouble();
        
        // optional string ArrayString = 3;
        boolean hasArrayString();
        String getArrayString();
        
        // optional int64 ArrayDatetime = 4;
        boolean hasArrayDatetime();
        long getArrayDatetime();
        
        // optional bool ArrayBool = 5;
        boolean hasArrayBool();
        boolean getArrayBool();
        
        // optional string ArrayDecimal = 6;
        boolean hasArrayDecimal();
        String getArrayDecimal();
        
        // optional .apsara.odps.Null ArrayNull = 7;
        boolean hasArrayNull();
        Null getArrayNull();
        NullOrBuilder getArrayNullOrBuilder();
      }
      public static final class ArrayItem extends
          com.google.protobuf.GeneratedMessage
          implements ArrayItemOrBuilder {
        // Use ArrayItem.newBuilder() to construct.
        private ArrayItem(Builder builder) {
          super(builder);
        }
        private ArrayItem(boolean noInit) {}
        
        private static final ArrayItem defaultInstance;
        public static ArrayItem getDefaultInstance() {
          return defaultInstance;
        }
        
        public ArrayItem getDefaultInstanceForType() {
          return defaultInstance;
        }
        
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ExpressionProtos.internal_static_apsara_odps_ArrayAny_ArrayItem_descriptor;
        }
        
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ExpressionProtos.internal_static_apsara_odps_ArrayAny_ArrayItem_fieldAccessorTable;
        }
        
        private int bitField0_;
        // optional int64 ArrayInteger = 1;
        public static final int ARRAYINTEGER_FIELD_NUMBER = 1;
        private long arrayInteger_;
        public boolean hasArrayInteger() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public long getArrayInteger() {
          return arrayInteger_;
        }
        
        // optional double ArrayDouble = 2;
        public static final int ARRAYDOUBLE_FIELD_NUMBER = 2;
        private double arrayDouble_;
        public boolean hasArrayDouble() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public double getArrayDouble() {
          return arrayDouble_;
        }
        
        // optional string ArrayString = 3;
        public static final int ARRAYSTRING_FIELD_NUMBER = 3;
        private Object arrayString_;
        public boolean hasArrayString() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public String getArrayString() {
          Object ref = arrayString_;
          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)) {
              arrayString_ = s;
            }
            return s;
          }
        }
        private com.google.protobuf.ByteString getArrayStringBytes() {
          Object ref = arrayString_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8((String) ref);
            arrayString_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        
        // optional int64 ArrayDatetime = 4;
        public static final int ARRAYDATETIME_FIELD_NUMBER = 4;
        private long arrayDatetime_;
        public boolean hasArrayDatetime() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public long getArrayDatetime() {
          return arrayDatetime_;
        }
        
        // optional bool ArrayBool = 5;
        public static final int ARRAYBOOL_FIELD_NUMBER = 5;
        private boolean arrayBool_;
        public boolean hasArrayBool() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        public boolean getArrayBool() {
          return arrayBool_;
        }
        
        // optional string ArrayDecimal = 6;
        public static final int ARRAYDECIMAL_FIELD_NUMBER = 6;
        private Object arrayDecimal_;
        public boolean hasArrayDecimal() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        public String getArrayDecimal() {
          Object ref = arrayDecimal_;
          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)) {
              arrayDecimal_ = s;
            }
            return s;
          }
        }
        private com.google.protobuf.ByteString getArrayDecimalBytes() {
          Object ref = arrayDecimal_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8((String) ref);
            arrayDecimal_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        
        // optional .apsara.odps.Null ArrayNull = 7;
        public static final int ARRAYNULL_FIELD_NUMBER = 7;
        private Null arrayNull_;
        public boolean hasArrayNull() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        public Null getArrayNull() {
          return arrayNull_;
        }
        public NullOrBuilder getArrayNullOrBuilder() {
          return arrayNull_;
        }
        
        private void initFields() {
          arrayInteger_ = 0L;
          arrayDouble_ = 0D;
          arrayString_ = "";
          arrayDatetime_ = 0L;
          arrayBool_ = false;
          arrayDecimal_ = "";
          arrayNull_ = Null.getDefaultInstance();
        }
        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.writeInt64(1, arrayInteger_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeDouble(2, arrayDouble_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeBytes(3, getArrayStringBytes());
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeInt64(4, arrayDatetime_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            output.writeBool(5, arrayBool_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            output.writeBytes(6, getArrayDecimalBytes());
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            output.writeMessage(7, arrayNull_);
          }
          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
              .computeInt64Size(1, arrayInteger_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeDoubleSize(2, arrayDouble_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBytesSize(3, getArrayStringBytes());
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt64Size(4, arrayDatetime_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(5, arrayBool_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBytesSize(6, getArrayDecimalBytes());
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(7, arrayNull_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSerializedSize = size;
          return size;
        }
        
        private static final long serialVersionUID = 0L;
        @Override
        protected Object writeReplace()
            throws java.io.ObjectStreamException {
          return super.writeReplace();
        }
        
        public static ArrayItem parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return newBuilder().mergeFrom(data).buildParsed();
        }
        public static ArrayItem parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return newBuilder().mergeFrom(data, extensionRegistry)
                   .buildParsed();
        }
        public static ArrayItem parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return newBuilder().mergeFrom(data).buildParsed();
        }
        public static ArrayItem parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return newBuilder().mergeFrom(data, extensionRegistry)
                   .buildParsed();
        }
        public static ArrayItem parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return newBuilder().mergeFrom(input).buildParsed();
        }
        public static ArrayItem parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return newBuilder().mergeFrom(input, extensionRegistry)
                   .buildParsed();
        }
        public static ArrayItem parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          Builder builder = newBuilder();
          if (builder.mergeDelimitedFrom(input)) {
            return builder.buildParsed();
          } else {
            return null;
          }
        }
        public static ArrayItem 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 ArrayItem parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return newBuilder().mergeFrom(input).buildParsed();
        }
        public static ArrayItem 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(ArrayItem prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }
        
        @Override
        protected Builder newBuilderForType(
            BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder<Builder>
           implements ArrayItemOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return ExpressionProtos.internal_static_apsara_odps_ArrayAny_ArrayItem_descriptor;
          }
          
          protected FieldAccessorTable
              internalGetFieldAccessorTable() {
            return ExpressionProtos.internal_static_apsara_odps_ArrayAny_ArrayItem_fieldAccessorTable;
          }
          
          // Construct using apsara.odps.ExpressionProtos.ArrayAny.ArrayItem.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }
          
          private Builder(BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
              getArrayNullFieldBuilder();
            }
          }
          private static Builder create() {
            return new Builder();
          }
          
          public Builder clear() {
            super.clear();
            arrayInteger_ = 0L;
            bitField0_ = (bitField0_ & ~0x00000001);
            arrayDouble_ = 0D;
            bitField0_ = (bitField0_ & ~0x00000002);
            arrayString_ = "";
            bitField0_ = (bitField0_ & ~0x00000004);
            arrayDatetime_ = 0L;
            bitField0_ = (bitField0_ & ~0x00000008);
            arrayBool_ = false;
            bitField0_ = (bitField0_ & ~0x00000010);
            arrayDecimal_ = "";
            bitField0_ = (bitField0_ & ~0x00000020);
            if (arrayNullBuilder_ == null) {
              arrayNull_ = Null.getDefaultInstance();
            } else {
              arrayNullBuilder_.clear();
            }
            bitField0_ = (bitField0_ & ~0x00000040);
            return this;
          }
          
          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }
          
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return ArrayItem.getDescriptor();
          }
          
          public ArrayItem getDefaultInstanceForType() {
            return ArrayItem.getDefaultInstance();
          }
          
          public ArrayItem build() {
            ArrayItem result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
          
          private ArrayItem buildParsed()
              throws com.google.protobuf.InvalidProtocolBufferException {
            ArrayItem result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(
                result).asInvalidProtocolBufferException();
            }
            return result;
          }
          
          public ArrayItem buildPartial() {
            ArrayItem result = new ArrayItem(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.arrayInteger_ = arrayInteger_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.arrayDouble_ = arrayDouble_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.arrayString_ = arrayString_;
            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x00000008;
            }
            result.arrayDatetime_ = arrayDatetime_;
            if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
              to_bitField0_ |= 0x00000010;
            }
            result.arrayBool_ = arrayBool_;
            if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
              to_bitField0_ |= 0x00000020;
            }
            result.arrayDecimal_ = arrayDecimal_;
            if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
              to_bitField0_ |= 0x00000040;
            }
            if (arrayNullBuilder_ == null) {
              result.arrayNull_ = arrayNull_;
            } else {
              result.arrayNull_ = arrayNullBuilder_.build();
            }
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }
          
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof ArrayItem) {
              return mergeFrom((ArrayItem)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
          
          public Builder mergeFrom(ArrayItem other) {
            if (other == ArrayItem.getDefaultInstance()) return this;
            if (other.hasArrayInteger()) {
              setArrayInteger(other.getArrayInteger());
            }
            if (other.hasArrayDouble()) {
              setArrayDouble(other.getArrayDouble());
            }
            if (other.hasArrayString()) {
              setArrayString(other.getArrayString());
            }
            if (other.hasArrayDatetime()) {
              setArrayDatetime(other.getArrayDatetime());
            }
            if (other.hasArrayBool()) {
              setArrayBool(other.getArrayBool());
            }
            if (other.hasArrayDecimal()) {
              setArrayDecimal(other.getArrayDecimal());
            }
            if (other.hasArrayNull()) {
              mergeArrayNull(other.getArrayNull());
            }
            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;
                  arrayInteger_ = input.readInt64();
                  break;
                }
                case 17: {
                  bitField0_ |= 0x00000002;
                  arrayDouble_ = input.readDouble();
                  break;
                }
                case 26: {
                  bitField0_ |= 0x00000004;
                  arrayString_ = input.readBytes();
                  break;
                }
                case 32: {
                  bitField0_ |= 0x00000008;
                  arrayDatetime_ = input.readInt64();
                  break;
                }
                case 40: {
                  bitField0_ |= 0x00000010;
                  arrayBool_ = input.readBool();
                  break;
                }
                case 50: {
                  bitField0_ |= 0x00000020;
                  arrayDecimal_ = input.readBytes();
                  break;
                }
                case 58: {
                  Null.Builder subBuilder = Null.newBuilder();
                  if (hasArrayNull()) {
                    subBuilder.mergeFrom(getArrayNull());
                  }
                  input.readMessage(subBuilder, extensionRegistry);
                  setArrayNull(subBuilder.buildPartial());
                  break;
                }
              }
            }
          }
          
          private int bitField0_;
          
          // optional int64 ArrayInteger = 1;
          private long arrayInteger_ ;
          public boolean hasArrayInteger() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          public long getArrayInteger() {
            return arrayInteger_;
          }
          public Builder setArrayInteger(long value) {
            bitField0_ |= 0x00000001;
            arrayInteger_ = value;
            onChanged();
            return this;
          }
          public Builder clearArrayInteger() {
            bitField0_ = (bitField0_ & ~0x00000001);
            arrayInteger_ = 0L;
            onChanged();
            return this;
          }
          
          // optional double ArrayDouble = 2;
          private double arrayDouble_ ;
          public boolean hasArrayDouble() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          public double getArrayDouble() {
            return arrayDouble_;
          }
          public Builder setArrayDouble(double value) {
            bitField0_ |= 0x00000002;
            arrayDouble_ = value;
            onChanged();
            return this;
          }
          public Builder clearArrayDouble() {
            bitField0_ = (bitField0_ & ~0x00000002);
            arrayDouble_ = 0D;
            onChanged();
            return this;
          }
          
          // optional string ArrayString = 3;
          private Object arrayString_ = "";
          public boolean hasArrayString() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          public String getArrayString() {
            Object ref = arrayString_;
            if (!(ref instanceof String)) {
              String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
              arrayString_ = s;
              return s;
            } else {
              return (String) ref;
            }
          }
          public Builder setArrayString(String value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
            arrayString_ = value;
            onChanged();
            return this;
          }
          public Builder clearArrayString() {
            bitField0_ = (bitField0_ & ~0x00000004);
            arrayString_ = getDefaultInstance().getArrayString();
            onChanged();
            return this;
          }
          void setArrayString(com.google.protobuf.ByteString value) {
            bitField0_ |= 0x00000004;
            arrayString_ = value;
            onChanged();
          }
          
          // optional int64 ArrayDatetime = 4;
          private long arrayDatetime_ ;
          public boolean hasArrayDatetime() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          public long getArrayDatetime() {
            return arrayDatetime_;
          }
          public Builder setArrayDatetime(long value) {
            bitField0_ |= 0x00000008;
            arrayDatetime_ = value;
            onChanged();
            return this;
          }
          public Builder clearArrayDatetime() {
            bitField0_ = (bitField0_ & ~0x00000008);
            arrayDatetime_ = 0L;
            onChanged();
            return this;
          }
          
          // optional bool ArrayBool = 5;
          private boolean arrayBool_ ;
          public boolean hasArrayBool() {
            return ((bitField0_ & 0x00000010) == 0x00000010);
          }
          public boolean getArrayBool() {
            return arrayBool_;
          }
          public Builder setArrayBool(boolean value) {
            bitField0_ |= 0x00000010;
            arrayBool_ = value;
            onChanged();
            return this;
          }
          public Builder clearArrayBool() {
            bitField0_ = (bitField0_ & ~0x00000010);
            arrayBool_ = false;
            onChanged();
            return this;
          }
          
          // optional string ArrayDecimal = 6;
          private Object arrayDecimal_ = "";
          public boolean hasArrayDecimal() {
            return ((bitField0_ & 0x00000020) == 0x00000020);
          }
          public String getArrayDecimal() {
            Object ref = arrayDecimal_;
            if (!(ref instanceof String)) {
              String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
              arrayDecimal_ = s;
              return s;
            } else {
              return (String) ref;
            }
          }
          public Builder setArrayDecimal(String value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000020;
            arrayDecimal_ = value;
            onChanged();
            return this;
          }
          public Builder clearArrayDecimal() {
            bitField0_ = (bitField0_ & ~0x00000020);
            arrayDecimal_ = getDefaultInstance().getArrayDecimal();
            onChanged();
            return this;
          }
          void setArrayDecimal(com.google.protobuf.ByteString value) {
            bitField0_ |= 0x00000020;
            arrayDecimal_ = value;
            onChanged();
          }
          
          // optional .apsara.odps.Null ArrayNull = 7;
          private Null arrayNull_ = Null.getDefaultInstance();
          private com.google.protobuf.SingleFieldBuilder<
              Null, Null.Builder, NullOrBuilder> arrayNullBuilder_;
          public boolean hasArrayNull() {
            return ((bitField0_ & 0x00000040) == 0x00000040);
          }
          public Null getArrayNull() {
            if (arrayNullBuilder_ == null) {
              return arrayNull_;
            } else {
              return arrayNullBuilder_.getMessage();
            }
          }
          public Builder setArrayNull(Null value) {
            if (arrayNullBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              arrayNull_ = value;
              onChanged();
            } else {
              arrayNullBuilder_.setMessage(value);
            }
            bitField0_ |= 0x00000040;
            return this;
          }
          public Builder setArrayNull(
              Null.Builder builderForValue) {
            if (arrayNullBuilder_ == null) {
              arrayNull_ = builderForValue.build();
              onChanged();
            } else {
              arrayNullBuilder_.setMessage(builderForValue.build());
            }
            bitField0_ |= 0x00000040;
            return this;
          }
          public Builder mergeArrayNull(Null value) {
            if (arrayNullBuilder_ == null) {
              if (((bitField0_ & 0x00000040) == 0x00000040) &&
                  arrayNull_ != Null.getDefaultInstance()) {
                arrayNull_ =
                  Null.newBuilder(arrayNull_).mergeFrom(value).buildPartial();
              } else {
                arrayNull_ = value;
              }
              onChanged();
            } else {
              arrayNullBuilder_.mergeFrom(value);
            }
            bitField0_ |= 0x00000040;
            return this;
          }
          public Builder clearArrayNull() {
            if (arrayNullBuilder_ == null) {
              arrayNull_ = Null.getDefaultInstance();
              onChanged();
            } else {
              arrayNullBuilder_.clear();
            }
            bitField0_ = (bitField0_ & ~0x00000040);
            return this;
          }
          public Null.Builder getArrayNullBuilder() {
            bitField0_ |= 0x00000040;
            onChanged();
            return getArrayNullFieldBuilder().getBuilder();
          }
          public NullOrBuilder getArrayNullOrBuilder() {
            if (arrayNullBuilder_ != null) {
              return arrayNullBuilder_.getMessageOrBuilder();
            } else {
              return arrayNull_;
            }
          }
          private com.google.protobuf.SingleFieldBuilder<
              Null, Null.Builder, NullOrBuilder>
              getArrayNullFieldBuilder() {
            if (arrayNullBuilder_ == null) {
              arrayNullBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                  Null, Null.Builder, NullOrBuilder>(
                      arrayNull_,
                      getParentForChildren(),
                      isClean());
              arrayNull_ = null;
            }
            return arrayNullBuilder_;
          }
          
          // @@protoc_insertion_point(builder_scope:apsara.odps.ArrayAny.ArrayItem)
        }
        
        static {
          defaultInstance = new ArrayItem(true);
          defaultInstance.initFields();
        }
        
        // @@protoc_insertion_point(class_scope:apsara.odps.ArrayAny.ArrayItem)
      }
      
      // repeated .apsara.odps.ArrayAny.ArrayItem Item = 1;
      public static final int ITEM_FIELD_NUMBER = 1;
      private java.util.List<ArrayItem> item_;
      public java.util.List<ArrayItem> getItemList() {
        return item_;
      }
      public java.util.List<? extends ArrayItemOrBuilder>
          getItemOrBuilderList() {
        return item_;
      }
      public int getItemCount() {
        return item_.size();
      }
      public ArrayItem getItem(int index) {
        return item_.get(index);
      }
      public ArrayItemOrBuilder getItemOrBuilder(
          int index) {
        return item_.get(index);
      }
      
      private void initFields() {
        item_ = java.util.Collections.emptyList();
      }
      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();
        for (int i = 0; i < item_.size(); i++) {
          output.writeMessage(1, item_.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 < item_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, item_.get(i));
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      private static final long serialVersionUID = 0L;
      @Override
      protected Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }
      
      public static ArrayAny parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static ArrayAny parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static ArrayAny parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static ArrayAny parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static ArrayAny parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static ArrayAny parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static ArrayAny parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static ArrayAny 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 ArrayAny parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static ArrayAny 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(ArrayAny prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      @Override
      protected Builder newBuilderForType(
          BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements ArrayAnyOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ExpressionProtos.internal_static_apsara_odps_ArrayAny_descriptor;
        }
        
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ExpressionProtos.internal_static_apsara_odps_ArrayAny_fieldAccessorTable;
        }
        
        // Construct using apsara.odps.ExpressionProtos.ArrayAny.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getItemFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          if (itemBuilder_ == null) {
            item_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            itemBuilder_.clear();
          }
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ArrayAny.getDescriptor();
        }
        
        public ArrayAny getDefaultInstanceForType() {
          return ArrayAny.getDefaultInstance();
        }
        
        public ArrayAny build() {
          ArrayAny result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private ArrayAny buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          ArrayAny result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public ArrayAny buildPartial() {
          ArrayAny result = new ArrayAny(this);
          int from_bitField0_ = bitField0_;
          if (itemBuilder_ == null) {
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              item_ = java.util.Collections.unmodifiableList(item_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.item_ = item_;
          } else {
            result.item_ = itemBuilder_.build();
          }
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ArrayAny) {
            return mergeFrom((ArrayAny)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(ArrayAny other) {
          if (other == ArrayAny.getDefaultInstance()) return this;
          if (itemBuilder_ == null) {
            if (!other.item_.isEmpty()) {
              if (item_.isEmpty()) {
                item_ = other.item_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureItemIsMutable();
                item_.addAll(other.item_);
              }
              onChanged();
            }
          } else {
            if (!other.item_.isEmpty()) {
              if (itemBuilder_.isEmpty()) {
                itemBuilder_.dispose();
                itemBuilder_ = null;
                item_ = other.item_;
                bitField0_ = (bitField0_ & ~0x00000001);
                itemBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getItemFieldBuilder() : null;
              } else {
                itemBuilder_.addAllMessages(other.item_);
              }
            }
          }
          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: {
                ArrayItem.Builder subBuilder = ArrayItem.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addItem(subBuilder.buildPartial());
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // repeated .apsara.odps.ArrayAny.ArrayItem Item = 1;
        private java.util.List<ArrayItem> item_ =
          java.util.Collections.emptyList();
        private void ensureItemIsMutable() {
          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
            item_ = new java.util.ArrayList<ArrayItem>(item_);
            bitField0_ |= 0x00000001;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            ArrayItem, ArrayItem.Builder, ArrayItemOrBuilder> itemBuilder_;
        
        public java.util.List<ArrayItem> getItemList() {
          if (itemBuilder_ == null) {
            return java.util.Collections.unmodifiableList(item_);
          } else {
            return itemBuilder_.getMessageList();
          }
        }
        public int getItemCount() {
          if (itemBuilder_ == null) {
            return item_.size();
          } else {
            return itemBuilder_.getCount();
          }
        }
        public ArrayItem getItem(int index) {
          if (itemBuilder_ == null) {
            return item_.get(index);
          } else {
            return itemBuilder_.getMessage(index);
          }
        }
        public Builder setItem(
            int index, ArrayItem value) {
          if (itemBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureItemIsMutable();
            item_.set(index, value);
            onChanged();
          } else {
            itemBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setItem(
            int index, ArrayItem.Builder builderForValue) {
          if (itemBuilder_ == null) {
            ensureItemIsMutable();
            item_.set(index, builderForValue.build());
            onChanged();
          } else {
            itemBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addItem(ArrayItem value) {
          if (itemBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureItemIsMutable();
            item_.add(value);
            onChanged();
          } else {
            itemBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addItem(
            int index, ArrayItem value) {
          if (itemBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureItemIsMutable();
            item_.add(index, value);
            onChanged();
          } else {
            itemBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addItem(
            ArrayItem.Builder builderForValue) {
          if (itemBuilder_ == null) {
            ensureItemIsMutable();
            item_.add(builderForValue.build());
            onChanged();
          } else {
            itemBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addItem(
            int index, ArrayItem.Builder builderForValue) {
          if (itemBuilder_ == null) {
            ensureItemIsMutable();
            item_.add(index, builderForValue.build());
            onChanged();
          } else {
            itemBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllItem(
            Iterable<? extends ArrayItem> values) {
          if (itemBuilder_ == null) {
            ensureItemIsMutable();
            super.addAll(values, item_);
            onChanged();
          } else {
            itemBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearItem() {
          if (itemBuilder_ == null) {
            item_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
          } else {
            itemBuilder_.clear();
          }
          return this;
        }
        public Builder removeItem(int index) {
          if (itemBuilder_ == null) {
            ensureItemIsMutable();
            item_.remove(index);
            onChanged();
          } else {
            itemBuilder_.remove(index);
          }
          return this;
        }
        public ArrayItem.Builder getItemBuilder(
            int index) {
          return getItemFieldBuilder().getBuilder(index);
        }
        public ArrayItemOrBuilder getItemOrBuilder(
            int index) {
          if (itemBuilder_ == null) {
            return item_.get(index);  } else {
            return itemBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends ArrayItemOrBuilder>
             getItemOrBuilderList() {
          if (itemBuilder_ != null) {
            return itemBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(item_);
          }
        }
        public ArrayItem.Builder addItemBuilder() {
          return getItemFieldBuilder().addBuilder(
              ArrayItem.getDefaultInstance());
        }
        public ArrayItem.Builder addItemBuilder(
            int index) {
          return getItemFieldBuilder().addBuilder(
              index, ArrayItem.getDefaultInstance());
        }
        public java.util.List<ArrayItem.Builder>
             getItemBuilderList() {
          return getItemFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            ArrayItem, ArrayItem.Builder, ArrayItemOrBuilder>
            getItemFieldBuilder() {
          if (itemBuilder_ == null) {
            itemBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                ArrayItem, ArrayItem.Builder, ArrayItemOrBuilder>(
                    item_,
                    ((bitField0_ & 0x00000001) == 0x00000001),
                    getParentForChildren(),
                    isClean());
            item_ = null;
          }
          return itemBuilder_;
        }
        
        // @@protoc_insertion_point(builder_scope:apsara.odps.ArrayAny)
      }
      
      static {
        defaultInstance = new ArrayAny(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:apsara.odps.ArrayAny)
    }
    
    public interface ConstantOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // optional int64 Integer = 1;
      boolean hasInteger();
      long getInteger();
      
      // optional double Double = 2;
      boolean hasDouble();
      double getDouble();
      
      // optional string String = 3;
      boolean hasString();
      String getString();
      
      // optional int64 Datetime = 4;
      boolean hasDatetime();
      long getDatetime();
      
      // optional string Decimal = 5;
      boolean hasDecimal();
      String getDecimal();
      
      // optional bool Bool = 6;
      boolean hasBool();
      boolean getBool();
      
      // optional .apsara.odps.ArrayAny Array = 14;
      boolean hasArray();
      ArrayAny getArray();
      ArrayAnyOrBuilder getArrayOrBuilder();
    }
    public static final class Constant extends
        com.google.protobuf.GeneratedMessage
        implements ConstantOrBuilder {
      // Use Constant.newBuilder() to construct.
      private Constant(Builder builder) {
        super(builder);
      }
      private Constant(boolean noInit) {}
      
      private static final Constant defaultInstance;
      public static Constant getDefaultInstance() {
        return defaultInstance;
      }
      
      public Constant getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ExpressionProtos.internal_static_apsara_odps_Constant_descriptor;
      }
      
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ExpressionProtos.internal_static_apsara_odps_Constant_fieldAccessorTable;
      }
      
      private int bitField0_;
      // optional int64 Integer = 1;
      public static final int INTEGER_FIELD_NUMBER = 1;
      private long integer_;
      public boolean hasInteger() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public long getInteger() {
        return integer_;
      }
      
      // optional double Double = 2;
      public static final int DOUBLE_FIELD_NUMBER = 2;
      private double double_;
      public boolean hasDouble() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public double getDouble() {
        return double_;
      }
      
      // optional string String = 3;
      public static final int STRING_FIELD_NUMBER = 3;
      private Object string_;
      public boolean hasString() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public String getString() {
        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() {
        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 int64 Datetime = 4;
      public static final int DATETIME_FIELD_NUMBER = 4;
      private long datetime_;
      public boolean hasDatetime() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public long getDatetime() {
        return datetime_;
      }
      
      // optional string Decimal = 5;
      public static final int DECIMAL_FIELD_NUMBER = 5;
      private Object decimal_;
      public boolean hasDecimal() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public String getDecimal() {
        Object ref = decimal_;
        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)) {
            decimal_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getDecimalBytes() {
        Object ref = decimal_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          decimal_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional bool Bool = 6;
      public static final int BOOL_FIELD_NUMBER = 6;
      private boolean bool_;
      public boolean hasBool() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      public boolean getBool() {
        return bool_;
      }
      
      // optional .apsara.odps.ArrayAny Array = 14;
      public static final int ARRAY_FIELD_NUMBER = 14;
      private ArrayAny array_;
      public boolean hasArray() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      public ArrayAny getArray() {
        return array_;
      }
      public ArrayAnyOrBuilder getArrayOrBuilder() {
        return array_;
      }
      
      private void initFields() {
        integer_ = 0L;
        double_ = 0D;
        string_ = "";
        datetime_ = 0L;
        decimal_ = "";
        bool_ = false;
        array_ = ArrayAny.getDefaultInstance();
      }
      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.writeInt64(1, integer_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeDouble(2, double_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBytes(3, getStringBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeInt64(4, datetime_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeBytes(5, getDecimalBytes());
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeBool(6, bool_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          output.writeMessage(14, 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
            .computeInt64Size(1, integer_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeDoubleSize(2, double_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(3, getStringBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(4, datetime_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(5, getDecimalBytes());
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(6, bool_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(14, array_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      private static final long serialVersionUID = 0L;
      @Override
      protected Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }
      
      public static Constant parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static Constant parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static Constant parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static Constant parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static Constant parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static Constant parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static Constant parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static Constant 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 Constant parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static Constant 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(Constant prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      @Override
      protected Builder newBuilderForType(
          BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements ConstantOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ExpressionProtos.internal_static_apsara_odps_Constant_descriptor;
        }
        
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ExpressionProtos.internal_static_apsara_odps_Constant_fieldAccessorTable;
        }
        
        // Construct using apsara.odps.ExpressionProtos.Constant.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getArrayFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          integer_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000001);
          double_ = 0D;
          bitField0_ = (bitField0_ & ~0x00000002);
          string_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          datetime_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000008);
          decimal_ = "";
          bitField0_ = (bitField0_ & ~0x00000010);
          bool_ = false;
          bitField0_ = (bitField0_ & ~0x00000020);
          if (arrayBuilder_ == null) {
            array_ = ArrayAny.getDefaultInstance();
          } else {
            arrayBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000040);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return Constant.getDescriptor();
        }
        
        public Constant getDefaultInstanceForType() {
          return Constant.getDefaultInstance();
        }
        
        public Constant build() {
          Constant result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private Constant buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          Constant result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public Constant buildPartial() {
          Constant result = new Constant(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.integer_ = integer_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.double_ = double_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.string_ = string_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.datetime_ = datetime_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          result.decimal_ = decimal_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000020;
          }
          result.bool_ = bool_;
          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
            to_bitField0_ |= 0x00000040;
          }
          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 Constant) {
            return mergeFrom((Constant)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(Constant other) {
          if (other == Constant.getDefaultInstance()) return this;
          if (other.hasInteger()) {
            setInteger(other.getInteger());
          }
          if (other.hasDouble()) {
            setDouble(other.getDouble());
          }
          if (other.hasString()) {
            setString(other.getString());
          }
          if (other.hasDatetime()) {
            setDatetime(other.getDatetime());
          }
          if (other.hasDecimal()) {
            setDecimal(other.getDecimal());
          }
          if (other.hasBool()) {
            setBool(other.getBool());
          }
          if (other.hasArray()) {
            mergeArray(other.getArray());
          }
          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;
                integer_ = input.readInt64();
                break;
              }
              case 17: {
                bitField0_ |= 0x00000002;
                double_ = input.readDouble();
                break;
              }
              case 26: {
                bitField0_ |= 0x00000004;
                string_ = input.readBytes();
                break;
              }
              case 32: {
                bitField0_ |= 0x00000008;
                datetime_ = input.readInt64();
                break;
              }
              case 42: {
                bitField0_ |= 0x00000010;
                decimal_ = input.readBytes();
                break;
              }
              case 48: {
                bitField0_ |= 0x00000020;
                bool_ = input.readBool();
                break;
              }
              case 114: {
                ArrayAny.Builder subBuilder = ArrayAny.newBuilder();
                if (hasArray()) {
                  subBuilder.mergeFrom(getArray());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setArray(subBuilder.buildPartial());
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // optional int64 Integer = 1;
        private long integer_ ;
        public boolean hasInteger() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public long getInteger() {
          return integer_;
        }
        public Builder setInteger(long value) {
          bitField0_ |= 0x00000001;
          integer_ = value;
          onChanged();
          return this;
        }
        public Builder clearInteger() {
          bitField0_ = (bitField0_ & ~0x00000001);
          integer_ = 0L;
          onChanged();
          return this;
        }
        
        // optional double Double = 2;
        private double double_ ;
        public boolean hasDouble() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public double getDouble() {
          return double_;
        }
        public Builder setDouble(double value) {
          bitField0_ |= 0x00000002;
          double_ = value;
          onChanged();
          return this;
        }
        public Builder clearDouble() {
          bitField0_ = (bitField0_ & ~0x00000002);
          double_ = 0D;
          onChanged();
          return this;
        }
        
        // optional string String = 3;
        private Object string_ = "";
        public boolean hasString() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public String getString() {
          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_ |= 0x00000004;
          string_ = value;
          onChanged();
          return this;
        }
        public Builder clearString() {
          bitField0_ = (bitField0_ & ~0x00000004);
          string_ = getDefaultInstance().getString();
          onChanged();
          return this;
        }
        void setString(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000004;
          string_ = value;
          onChanged();
        }
        
        // optional int64 Datetime = 4;
        private long datetime_ ;
        public boolean hasDatetime() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public long getDatetime() {
          return datetime_;
        }
        public Builder setDatetime(long value) {
          bitField0_ |= 0x00000008;
          datetime_ = value;
          onChanged();
          return this;
        }
        public Builder clearDatetime() {
          bitField0_ = (bitField0_ & ~0x00000008);
          datetime_ = 0L;
          onChanged();
          return this;
        }
        
        // optional string Decimal = 5;
        private Object decimal_ = "";
        public boolean hasDecimal() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        public String getDecimal() {
          Object ref = decimal_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            decimal_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setDecimal(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000010;
          decimal_ = value;
          onChanged();
          return this;
        }
        public Builder clearDecimal() {
          bitField0_ = (bitField0_ & ~0x00000010);
          decimal_ = getDefaultInstance().getDecimal();
          onChanged();
          return this;
        }
        void setDecimal(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000010;
          decimal_ = value;
          onChanged();
        }
        
        // optional bool Bool = 6;
        private boolean bool_ ;
        public boolean hasBool() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        public boolean getBool() {
          return bool_;
        }
        public Builder setBool(boolean value) {
          bitField0_ |= 0x00000020;
          bool_ = value;
          onChanged();
          return this;
        }
        public Builder clearBool() {
          bitField0_ = (bitField0_ & ~0x00000020);
          bool_ = false;
          onChanged();
          return this;
        }
        
        // optional .apsara.odps.ArrayAny Array = 14;
        private ArrayAny array_ = ArrayAny.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            ArrayAny, ArrayAny.Builder, ArrayAnyOrBuilder> arrayBuilder_;
        public boolean hasArray() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        public ArrayAny getArray() {
          if (arrayBuilder_ == null) {
            return array_;
          } else {
            return arrayBuilder_.getMessage();
          }
        }
        public Builder setArray(ArrayAny value) {
          if (arrayBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            array_ = value;
            onChanged();
          } else {
            arrayBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        public Builder setArray(
            ArrayAny.Builder builderForValue) {
          if (arrayBuilder_ == null) {
            array_ = builderForValue.build();
            onChanged();
          } else {
            arrayBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        public Builder mergeArray(ArrayAny value) {
          if (arrayBuilder_ == null) {
            if (((bitField0_ & 0x00000040) == 0x00000040) &&
                array_ != ArrayAny.getDefaultInstance()) {
              array_ =
                ArrayAny.newBuilder(array_).mergeFrom(value).buildPartial();
            } else {
              array_ = value;
            }
            onChanged();
          } else {
            arrayBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        public Builder clearArray() {
          if (arrayBuilder_ == null) {
            array_ = ArrayAny.getDefaultInstance();
            onChanged();
          } else {
            arrayBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000040);
          return this;
        }
        public ArrayAny.Builder getArrayBuilder() {
          bitField0_ |= 0x00000040;
          onChanged();
          return getArrayFieldBuilder().getBuilder();
        }
        public ArrayAnyOrBuilder getArrayOrBuilder() {
          if (arrayBuilder_ != null) {
            return arrayBuilder_.getMessageOrBuilder();
          } else {
            return array_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            ArrayAny, ArrayAny.Builder, ArrayAnyOrBuilder>
            getArrayFieldBuilder() {
          if (arrayBuilder_ == null) {
            arrayBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                ArrayAny, ArrayAny.Builder, ArrayAnyOrBuilder>(
                    array_,
                    getParentForChildren(),
                    isClean());
            array_ = null;
          }
          return arrayBuilder_;
        }
        
        // @@protoc_insertion_point(builder_scope:apsara.odps.Constant)
      }
      
      static {
        defaultInstance = new Constant(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:apsara.odps.Constant)
    }
    
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_apsara_odps_Reference_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_apsara_odps_Reference_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_apsara_odps_Null_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_apsara_odps_Null_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_apsara_odps_ArrayAny_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_apsara_odps_ArrayAny_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_apsara_odps_ArrayAny_ArrayItem_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_apsara_odps_ArrayAny_ArrayItem_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_apsara_odps_Constant_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_apsara_odps_Constant_fieldAccessorTable;
    
    public static com.google.protobuf.Descriptors.FileDescriptor
        getDescriptor() {
      return descriptor;
    }
    private static com.google.protobuf.Descriptors.FileDescriptor
        descriptor;
    static {
      String[] descriptorData = {
        "\n\027common/expression.proto\022\013apsara.odps\032\022" +
        "common/types.proto\"\'\n\tReference\022\014\n\004Name\030" +
        "\001 \002(\t\022\014\n\004From\030\002 \001(\t\"\006\n\004Null\"\355\001\n\010ArrayAny" +
        "\022-\n\004Item\030\001 \003(\0132\037.apsara.odps.ArrayAny.Ar" +
        "rayItem\032\261\001\n\tArrayItem\022\024\n\014ArrayInteger\030\001 " +
        "\001(\003\022\023\n\013ArrayDouble\030\002 \001(\001\022\023\n\013ArrayString\030" +
        "\003 \001(\t\022\025\n\rArrayDatetime\030\004 \001(\003\022\021\n\tArrayBoo" +
        "l\030\005 \001(\010\022\024\n\014ArrayDecimal\030\006 \001(\t\022$\n\tArrayNu" +
        "ll\030\007 \001(\0132\021.apsara.odps.Null\"\222\001\n\010Constant" +
        "\022\017\n\007Integer\030\001 \001(\003\022\016\n\006Double\030\002 \001(\001\022\016\n\006Str",
        "ing\030\003 \001(\t\022\020\n\010Datetime\030\004 \001(\003\022\017\n\007Decimal\030\005" +
        " \001(\t\022\014\n\004Bool\030\006 \001(\010\022$\n\005Array\030\016 \001(\0132\025.apsa" +
        "ra.odps.ArrayAnyB\022B\020ExpressionProtos"
      };
      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_apsara_odps_Reference_descriptor =
              getDescriptor().getMessageTypes().get(0);
            internal_static_apsara_odps_Reference_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_apsara_odps_Reference_descriptor,
                new String[] { "Name", "From", },
                Reference.class,
                Reference.Builder.class);
            internal_static_apsara_odps_Null_descriptor =
              getDescriptor().getMessageTypes().get(1);
            internal_static_apsara_odps_Null_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_apsara_odps_Null_descriptor,
                new String[] { },
                Null.class,
                Null.Builder.class);
            internal_static_apsara_odps_ArrayAny_descriptor =
              getDescriptor().getMessageTypes().get(2);
            internal_static_apsara_odps_ArrayAny_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_apsara_odps_ArrayAny_descriptor,
                new String[] { "Item", },
                ArrayAny.class,
                ArrayAny.Builder.class);
            internal_static_apsara_odps_ArrayAny_ArrayItem_descriptor =
              internal_static_apsara_odps_ArrayAny_descriptor.getNestedTypes().get(0);
            internal_static_apsara_odps_ArrayAny_ArrayItem_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_apsara_odps_ArrayAny_ArrayItem_descriptor,
                new String[] { "ArrayInteger", "ArrayDouble", "ArrayString", "ArrayDatetime", "ArrayBool", "ArrayDecimal", "ArrayNull", },
                ArrayAny.ArrayItem.class,
                ArrayAny.ArrayItem.Builder.class);
            internal_static_apsara_odps_Constant_descriptor =
              getDescriptor().getMessageTypes().get(3);
            internal_static_apsara_odps_Constant_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_apsara_odps_Constant_descriptor,
                new String[] { "Integer", "Double", "String", "Datetime", "Decimal", "Bool", "Array", },
                Constant.class,
                Constant.Builder.class);
            return null;
          }
        };
      com.google.protobuf.Descriptors.FileDescriptor
        .internalBuildGeneratedFileFrom(descriptorData,
          new com.google.protobuf.Descriptors.FileDescriptor[] {
            TypesProtos.getDescriptor(),
          }, assigner);
    }
    
    // @@protoc_insertion_point(outer_class_scope)
  }
  