content: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: lot/lottask.proto
  
  package apsara.odps.lot;
  
  public final class Lottask {
    private Lottask() {}
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistry registry) {
    }
    public interface LotTaskOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // optional int64 Version = 1 [default = 19851003];
      boolean hasVersion();
      long getVersion();
      
      // repeated group Environment = 2 {
      java.util.List<LotTask.Environment>
          getEnvironmentList();
      LotTask.Environment getEnvironment(int index);
      int getEnvironmentCount();
      java.util.List<? extends LotTask.EnvironmentOrBuilder>
          getEnvironmentOrBuilderList();
      LotTask.EnvironmentOrBuilder getEnvironmentOrBuilder(
          int index);
      
      // optional .apsara.odps.lot.DDL DDL = 3;
      boolean hasDDL();
      DDLProtos.DDL getDDL();
      DDLProtos.DDLOrBuilder getDDLOrBuilder();
      
      // optional .apsara.odps.lot.LogicalOperatorTree Lot = 4;
      boolean hasLot();
      Lot.LogicalOperatorTree getLot();
      Lot.LogicalOperatorTreeOrBuilder getLotOrBuilder();
      
      // repeated .apsara.odps.lot.TemporaryFunction TempFunctions = 5;
      java.util.List<ExpressionProtos.TemporaryFunction>
          getTempFunctionsList();
      ExpressionProtos.TemporaryFunction getTempFunctions(int index);
      int getTempFunctionsCount();
      java.util.List<? extends ExpressionProtos.TemporaryFunctionOrBuilder>
          getTempFunctionsOrBuilderList();
      ExpressionProtos.TemporaryFunctionOrBuilder getTempFunctionsOrBuilder(
          int index);
    }
    public static final class LotTask extends
        com.google.protobuf.GeneratedMessage
        implements LotTaskOrBuilder {
      // Use LotTask.newBuilder() to construct.
      private LotTask(Builder builder) {
        super(builder);
      }
      private LotTask(boolean noInit) {}
      
      private static final LotTask defaultInstance;
      public static LotTask getDefaultInstance() {
        return defaultInstance;
      }
      
      public LotTask getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Lottask.internal_static_apsara_odps_lot_LotTask_descriptor;
      }
      
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Lottask.internal_static_apsara_odps_lot_LotTask_fieldAccessorTable;
      }
      
      public interface EnvironmentOrBuilder
          extends com.google.protobuf.MessageOrBuilder {
        
        // required string Key = 1;
        boolean hasKey();
        String getKey();
        
        // required string Value = 2;
        boolean hasValue();
        String getValue();
      }
      public static final class Environment extends
          com.google.protobuf.GeneratedMessage
          implements EnvironmentOrBuilder {
        // Use Environment.newBuilder() to construct.
        private Environment(Builder builder) {
          super(builder);
        }
        private Environment(boolean noInit) {}
        
        private static final Environment defaultInstance;
        public static Environment getDefaultInstance() {
          return defaultInstance;
        }
        
        public Environment getDefaultInstanceForType() {
          return defaultInstance;
        }
        
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return Lottask.internal_static_apsara_odps_lot_LotTask_Environment_descriptor;
        }
        
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return Lottask.internal_static_apsara_odps_lot_LotTask_Environment_fieldAccessorTable;
        }
        
        private int bitField0_;
        // required string Key = 1;
        public static final int KEY_FIELD_NUMBER = 1;
        private Object key_;
        public boolean hasKey() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public String getKey() {
          Object ref = key_;
          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)) {
              key_ = s;
            }
            return s;
          }
        }
        private com.google.protobuf.ByteString getKeyBytes() {
          Object ref = key_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8((String) ref);
            key_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        
        // required string Value = 2;
        public static final int VALUE_FIELD_NUMBER = 2;
        private Object value_;
        public boolean hasValue() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public String getValue() {
          Object ref = value_;
          if (ref instanceof String) {
            return (String) ref;
          } else {
            com.google.protobuf.ByteString bs = 
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            if (com.google.protobuf.Internal.isValidUtf8(bs)) {
              value_ = s;
            }
            return s;
          }
        }
        private com.google.protobuf.ByteString getValueBytes() {
          Object ref = value_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8((String) ref);
            value_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        
        private void initFields() {
          key_ = "";
          value_ = "";
        }
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized != -1) return isInitialized == 1;
          
          if (!hasKey()) {
            memoizedIsInitialized = 0;
            return false;
          }
          if (!hasValue()) {
            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, getKeyBytes());
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeBytes(2, getValueBytes());
          }
          getUnknownFields().writeTo(output);
        }
        
        private int memoizedSerializedSize = -1;
        public int getSerializedSize() {
          int size = memoizedSerializedSize;
          if (size != -1) return size;
        
          size = 0;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBytesSize(1, getKeyBytes());
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBytesSize(2, getValueBytes());
          }
          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 Environment parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return newBuilder().mergeFrom(data).buildParsed();
        }
        public static Environment parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return newBuilder().mergeFrom(data, extensionRegistry)
                   .buildParsed();
        }
        public static Environment parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return newBuilder().mergeFrom(data).buildParsed();
        }
        public static Environment parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return newBuilder().mergeFrom(data, extensionRegistry)
                   .buildParsed();
        }
        public static Environment parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return newBuilder().mergeFrom(input).buildParsed();
        }
        public static Environment parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return newBuilder().mergeFrom(input, extensionRegistry)
                   .buildParsed();
        }
        public static Environment parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          Builder builder = newBuilder();
          if (builder.mergeDelimitedFrom(input)) {
            return builder.buildParsed();
          } else {
            return null;
          }
        }
        public static Environment 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 Environment parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return newBuilder().mergeFrom(input).buildParsed();
        }
        public static Environment 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(Environment 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 EnvironmentOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return Lottask.internal_static_apsara_odps_lot_LotTask_Environment_descriptor;
          }
          
          protected FieldAccessorTable
              internalGetFieldAccessorTable() {
            return Lottask.internal_static_apsara_odps_lot_LotTask_Environment_fieldAccessorTable;
          }
          
          // Construct using apsara.odps.lot.Lottask.LotTask.Environment.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();
            key_ = "";
            bitField0_ = (bitField0_ & ~0x00000001);
            value_ = "";
            bitField0_ = (bitField0_ & ~0x00000002);
            return this;
          }
          
          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }
          
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return Environment.getDescriptor();
          }
          
          public Environment getDefaultInstanceForType() {
            return Environment.getDefaultInstance();
          }
          
          public Environment build() {
            Environment result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
          
          private Environment buildParsed()
              throws com.google.protobuf.InvalidProtocolBufferException {
            Environment result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(
                result).asInvalidProtocolBufferException();
            }
            return result;
          }
          
          public Environment buildPartial() {
            Environment result = new Environment(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.key_ = key_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.value_ = value_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }
          
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof Environment) {
              return mergeFrom((Environment)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
          
          public Builder mergeFrom(Environment other) {
            if (other == Environment.getDefaultInstance()) return this;
            if (other.hasKey()) {
              setKey(other.getKey());
            }
            if (other.hasValue()) {
              setValue(other.getValue());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            return this;
          }
          
          public final boolean isInitialized() {
            if (!hasKey()) {
              
              return false;
            }
            if (!hasValue()) {
              
              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;
                  key_ = input.readBytes();
                  break;
                }
                case 18: {
                  bitField0_ |= 0x00000002;
                  value_ = input.readBytes();
                  break;
                }
              }
            }
          }
          
          private int bitField0_;
          
          // required string Key = 1;
          private Object key_ = "";
          public boolean hasKey() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          public String getKey() {
            Object ref = key_;
            if (!(ref instanceof String)) {
              String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
              key_ = s;
              return s;
            } else {
              return (String) ref;
            }
          }
          public Builder setKey(String value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
            key_ = value;
            onChanged();
            return this;
          }
          public Builder clearKey() {
            bitField0_ = (bitField0_ & ~0x00000001);
            key_ = getDefaultInstance().getKey();
            onChanged();
            return this;
          }
          void setKey(com.google.protobuf.ByteString value) {
            bitField0_ |= 0x00000001;
            key_ = value;
            onChanged();
          }
          
          // required string Value = 2;
          private Object value_ = "";
          public boolean hasValue() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          public String getValue() {
            Object ref = value_;
            if (!(ref instanceof String)) {
              String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
              value_ = s;
              return s;
            } else {
              return (String) ref;
            }
          }
          public Builder setValue(String value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
            value_ = value;
            onChanged();
            return this;
          }
          public Builder clearValue() {
            bitField0_ = (bitField0_ & ~0x00000002);
            value_ = getDefaultInstance().getValue();
            onChanged();
            return this;
          }
          void setValue(com.google.protobuf.ByteString value) {
            bitField0_ |= 0x00000002;
            value_ = value;
            onChanged();
          }
          
          // @@protoc_insertion_point(builder_scope:apsara.odps.lot.LotTask.Environment)
        }
        
        static {
          defaultInstance = new Environment(true);
          defaultInstance.initFields();
        }
        
        // @@protoc_insertion_point(class_scope:apsara.odps.lot.LotTask.Environment)
      }
      
      private int bitField0_;
      // optional int64 Version = 1 [default = 19851003];
      public static final int VERSION_FIELD_NUMBER = 1;
      private long version_;
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public long getVersion() {
        return version_;
      }
      
      // repeated group Environment = 2 {
      public static final int ENVIRONMENT_FIELD_NUMBER = 2;
      private java.util.List<Environment> environment_;
      public java.util.List<Environment> getEnvironmentList() {
        return environment_;
      }
      public java.util.List<? extends EnvironmentOrBuilder>
          getEnvironmentOrBuilderList() {
        return environment_;
      }
      public int getEnvironmentCount() {
        return environment_.size();
      }
      public Environment getEnvironment(int index) {
        return environment_.get(index);
      }
      public EnvironmentOrBuilder getEnvironmentOrBuilder(
          int index) {
        return environment_.get(index);
      }
      
      // optional .apsara.odps.lot.DDL DDL = 3;
      public static final int DDL_FIELD_NUMBER = 3;
      private DDLProtos.DDL dDL_;
      public boolean hasDDL() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public DDLProtos.DDL getDDL() {
        return dDL_;
      }
      public DDLProtos.DDLOrBuilder getDDLOrBuilder() {
        return dDL_;
      }
      
      // optional .apsara.odps.lot.LogicalOperatorTree Lot = 4;
      public static final int LOT_FIELD_NUMBER = 4;
      private Lot.LogicalOperatorTree lot_;
      public boolean hasLot() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public Lot.LogicalOperatorTree getLot() {
        return lot_;
      }
      public Lot.LogicalOperatorTreeOrBuilder getLotOrBuilder() {
        return lot_;
      }
      
      // repeated .apsara.odps.lot.TemporaryFunction TempFunctions = 5;
      public static final int TEMPFUNCTIONS_FIELD_NUMBER = 5;
      private java.util.List<ExpressionProtos.TemporaryFunction> tempFunctions_;
      public java.util.List<ExpressionProtos.TemporaryFunction> getTempFunctionsList() {
        return tempFunctions_;
      }
      public java.util.List<? extends ExpressionProtos.TemporaryFunctionOrBuilder>
          getTempFunctionsOrBuilderList() {
        return tempFunctions_;
      }
      public int getTempFunctionsCount() {
        return tempFunctions_.size();
      }
      public ExpressionProtos.TemporaryFunction getTempFunctions(int index) {
        return tempFunctions_.get(index);
      }
      public ExpressionProtos.TemporaryFunctionOrBuilder getTempFunctionsOrBuilder(
          int index) {
        return tempFunctions_.get(index);
      }
      
      private void initFields() {
        version_ = 19851003L;
        environment_ = java.util.Collections.emptyList();
        dDL_ = DDLProtos.DDL.getDefaultInstance();
        lot_ = Lot.LogicalOperatorTree.getDefaultInstance();
        tempFunctions_ = java.util.Collections.emptyList();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        for (int i = 0; i < getEnvironmentCount(); i++) {
          if (!getEnvironment(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasDDL()) {
          if (!getDDL().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasLot()) {
          if (!getLot().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getTempFunctionsCount(); i++) {
          if (!getTempFunctions(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
      
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeInt64(1, version_);
        }
        for (int i = 0; i < environment_.size(); i++) {
          output.writeGroup(2, environment_.get(i));
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(3, dDL_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeMessage(4, lot_);
        }
        for (int i = 0; i < tempFunctions_.size(); i++) {
          output.writeMessage(5, tempFunctions_.get(i));
        }
        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, version_);
        }
        for (int i = 0; i < environment_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeGroupSize(2, environment_.get(i));
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, dDL_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, lot_);
        }
        for (int i = 0; i < tempFunctions_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, tempFunctions_.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 LotTask parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static LotTask parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static LotTask parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static LotTask parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static LotTask parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static LotTask parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static LotTask parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static LotTask 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 LotTask parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static LotTask 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(LotTask 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 LotTaskOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return Lottask.internal_static_apsara_odps_lot_LotTask_descriptor;
        }
        
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return Lottask.internal_static_apsara_odps_lot_LotTask_fieldAccessorTable;
        }
        
        // Construct using apsara.odps.lot.Lottask.LotTask.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getEnvironmentFieldBuilder();
            getDDLFieldBuilder();
            getLotFieldBuilder();
            getTempFunctionsFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          version_ = 19851003L;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (environmentBuilder_ == null) {
            environment_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            environmentBuilder_.clear();
          }
          if (dDLBuilder_ == null) {
            dDL_ = DDLProtos.DDL.getDefaultInstance();
          } else {
            dDLBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          if (lotBuilder_ == null) {
            lot_ = Lot.LogicalOperatorTree.getDefaultInstance();
          } else {
            lotBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          if (tempFunctionsBuilder_ == null) {
            tempFunctions_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            tempFunctionsBuilder_.clear();
          }
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return LotTask.getDescriptor();
        }
        
        public LotTask getDefaultInstanceForType() {
          return LotTask.getDefaultInstance();
        }
        
        public LotTask build() {
          LotTask result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private LotTask buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          LotTask result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public LotTask buildPartial() {
          LotTask result = new LotTask(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.version_ = version_;
          if (environmentBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              environment_ = java.util.Collections.unmodifiableList(environment_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.environment_ = environment_;
          } else {
            result.environment_ = environmentBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000002;
          }
          if (dDLBuilder_ == null) {
            result.dDL_ = dDL_;
          } else {
            result.dDL_ = dDLBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000004;
          }
          if (lotBuilder_ == null) {
            result.lot_ = lot_;
          } else {
            result.lot_ = lotBuilder_.build();
          }
          if (tempFunctionsBuilder_ == null) {
            if (((bitField0_ & 0x00000010) == 0x00000010)) {
              tempFunctions_ = java.util.Collections.unmodifiableList(tempFunctions_);
              bitField0_ = (bitField0_ & ~0x00000010);
            }
            result.tempFunctions_ = tempFunctions_;
          } else {
            result.tempFunctions_ = tempFunctionsBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof LotTask) {
            return mergeFrom((LotTask)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(LotTask other) {
          if (other == LotTask.getDefaultInstance()) return this;
          if (other.hasVersion()) {
            setVersion(other.getVersion());
          }
          if (environmentBuilder_ == null) {
            if (!other.environment_.isEmpty()) {
              if (environment_.isEmpty()) {
                environment_ = other.environment_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureEnvironmentIsMutable();
                environment_.addAll(other.environment_);
              }
              onChanged();
            }
          } else {
            if (!other.environment_.isEmpty()) {
              if (environmentBuilder_.isEmpty()) {
                environmentBuilder_.dispose();
                environmentBuilder_ = null;
                environment_ = other.environment_;
                bitField0_ = (bitField0_ & ~0x00000002);
                environmentBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getEnvironmentFieldBuilder() : null;
              } else {
                environmentBuilder_.addAllMessages(other.environment_);
              }
            }
          }
          if (other.hasDDL()) {
            mergeDDL(other.getDDL());
          }
          if (other.hasLot()) {
            mergeLot(other.getLot());
          }
          if (tempFunctionsBuilder_ == null) {
            if (!other.tempFunctions_.isEmpty()) {
              if (tempFunctions_.isEmpty()) {
                tempFunctions_ = other.tempFunctions_;
                bitField0_ = (bitField0_ & ~0x00000010);
              } else {
                ensureTempFunctionsIsMutable();
                tempFunctions_.addAll(other.tempFunctions_);
              }
              onChanged();
            }
          } else {
            if (!other.tempFunctions_.isEmpty()) {
              if (tempFunctionsBuilder_.isEmpty()) {
                tempFunctionsBuilder_.dispose();
                tempFunctionsBuilder_ = null;
                tempFunctions_ = other.tempFunctions_;
                bitField0_ = (bitField0_ & ~0x00000010);
                tempFunctionsBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getTempFunctionsFieldBuilder() : null;
              } else {
                tempFunctionsBuilder_.addAllMessages(other.tempFunctions_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          for (int i = 0; i < getEnvironmentCount(); i++) {
            if (!getEnvironment(i).isInitialized()) {
              
              return false;
            }
          }
          if (hasDDL()) {
            if (!getDDL().isInitialized()) {
              
              return false;
            }
          }
          if (hasLot()) {
            if (!getLot().isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getTempFunctionsCount(); i++) {
            if (!getTempFunctions(i).isInitialized()) {
              
              return false;
            }
          }
          return true;
        }
        
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  onChanged();
                  return this;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                version_ = input.readInt64();
                break;
              }
              case 19: {
                Environment.Builder subBuilder = Environment.newBuilder();
                input.readGroup(2, subBuilder, extensionRegistry);
                addEnvironment(subBuilder.buildPartial());
                break;
              }
              case 26: {
                DDLProtos.DDL.Builder subBuilder = DDLProtos.DDL.newBuilder();
                if (hasDDL()) {
                  subBuilder.mergeFrom(getDDL());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setDDL(subBuilder.buildPartial());
                break;
              }
              case 34: {
                Lot.LogicalOperatorTree.Builder subBuilder = Lot.LogicalOperatorTree.newBuilder();
                if (hasLot()) {
                  subBuilder.mergeFrom(getLot());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setLot(subBuilder.buildPartial());
                break;
              }
              case 42: {
                ExpressionProtos.TemporaryFunction.Builder subBuilder = ExpressionProtos.TemporaryFunction.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addTempFunctions(subBuilder.buildPartial());
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // optional int64 Version = 1 [default = 19851003];
        private long version_ = 19851003L;
        public boolean hasVersion() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public long getVersion() {
          return version_;
        }
        public Builder setVersion(long value) {
          bitField0_ |= 0x00000001;
          version_ = value;
          onChanged();
          return this;
        }
        public Builder clearVersion() {
          bitField0_ = (bitField0_ & ~0x00000001);
          version_ = 19851003L;
          onChanged();
          return this;
        }
        
        // repeated group Environment = 2 {
        private java.util.List<Environment> environment_ =
          java.util.Collections.emptyList();
        private void ensureEnvironmentIsMutable() {
          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
            environment_ = new java.util.ArrayList<Environment>(environment_);
            bitField0_ |= 0x00000002;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            Environment, Environment.Builder, EnvironmentOrBuilder> environmentBuilder_;
        
        public java.util.List<Environment> getEnvironmentList() {
          if (environmentBuilder_ == null) {
            return java.util.Collections.unmodifiableList(environment_);
          } else {
            return environmentBuilder_.getMessageList();
          }
        }
        public int getEnvironmentCount() {
          if (environmentBuilder_ == null) {
            return environment_.size();
          } else {
            return environmentBuilder_.getCount();
          }
        }
        public Environment getEnvironment(int index) {
          if (environmentBuilder_ == null) {
            return environment_.get(index);
          } else {
            return environmentBuilder_.getMessage(index);
          }
        }
        public Builder setEnvironment(
            int index, Environment value) {
          if (environmentBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureEnvironmentIsMutable();
            environment_.set(index, value);
            onChanged();
          } else {
            environmentBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setEnvironment(
            int index, Environment.Builder builderForValue) {
          if (environmentBuilder_ == null) {
            ensureEnvironmentIsMutable();
            environment_.set(index, builderForValue.build());
            onChanged();
          } else {
            environmentBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addEnvironment(Environment value) {
          if (environmentBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureEnvironmentIsMutable();
            environment_.add(value);
            onChanged();
          } else {
            environmentBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addEnvironment(
            int index, Environment value) {
          if (environmentBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureEnvironmentIsMutable();
            environment_.add(index, value);
            onChanged();
          } else {
            environmentBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addEnvironment(
            Environment.Builder builderForValue) {
          if (environmentBuilder_ == null) {
            ensureEnvironmentIsMutable();
            environment_.add(builderForValue.build());
            onChanged();
          } else {
            environmentBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addEnvironment(
            int index, Environment.Builder builderForValue) {
          if (environmentBuilder_ == null) {
            ensureEnvironmentIsMutable();
            environment_.add(index, builderForValue.build());
            onChanged();
          } else {
            environmentBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllEnvironment(
            Iterable<? extends Environment> values) {
          if (environmentBuilder_ == null) {
            ensureEnvironmentIsMutable();
            super.addAll(values, environment_);
            onChanged();
          } else {
            environmentBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearEnvironment() {
          if (environmentBuilder_ == null) {
            environment_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            environmentBuilder_.clear();
          }
          return this;
        }
        public Builder removeEnvironment(int index) {
          if (environmentBuilder_ == null) {
            ensureEnvironmentIsMutable();
            environment_.remove(index);
            onChanged();
          } else {
            environmentBuilder_.remove(index);
          }
          return this;
        }
        public Environment.Builder getEnvironmentBuilder(
            int index) {
          return getEnvironmentFieldBuilder().getBuilder(index);
        }
        public EnvironmentOrBuilder getEnvironmentOrBuilder(
            int index) {
          if (environmentBuilder_ == null) {
            return environment_.get(index);  } else {
            return environmentBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends EnvironmentOrBuilder>
             getEnvironmentOrBuilderList() {
          if (environmentBuilder_ != null) {
            return environmentBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(environment_);
          }
        }
        public Environment.Builder addEnvironmentBuilder() {
          return getEnvironmentFieldBuilder().addBuilder(
              Environment.getDefaultInstance());
        }
        public Environment.Builder addEnvironmentBuilder(
            int index) {
          return getEnvironmentFieldBuilder().addBuilder(
              index, Environment.getDefaultInstance());
        }
        public java.util.List<Environment.Builder>
             getEnvironmentBuilderList() {
          return getEnvironmentFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            Environment, Environment.Builder, EnvironmentOrBuilder>
            getEnvironmentFieldBuilder() {
          if (environmentBuilder_ == null) {
            environmentBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                Environment, Environment.Builder, EnvironmentOrBuilder>(
                    environment_,
                    ((bitField0_ & 0x00000002) == 0x00000002),
                    getParentForChildren(),
                    isClean());
            environment_ = null;
          }
          return environmentBuilder_;
        }
        
        // optional .apsara.odps.lot.DDL DDL = 3;
        private DDLProtos.DDL dDL_ = DDLProtos.DDL.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            DDLProtos.DDL, DDLProtos.DDL.Builder, DDLProtos.DDLOrBuilder> dDLBuilder_;
        public boolean hasDDL() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public DDLProtos.DDL getDDL() {
          if (dDLBuilder_ == null) {
            return dDL_;
          } else {
            return dDLBuilder_.getMessage();
          }
        }
        public Builder setDDL(DDLProtos.DDL value) {
          if (dDLBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            dDL_ = value;
            onChanged();
          } else {
            dDLBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder setDDL(
            DDLProtos.DDL.Builder builderForValue) {
          if (dDLBuilder_ == null) {
            dDL_ = builderForValue.build();
            onChanged();
          } else {
            dDLBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder mergeDDL(DDLProtos.DDL value) {
          if (dDLBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004) &&
                dDL_ != DDLProtos.DDL.getDefaultInstance()) {
              dDL_ =
                DDLProtos.DDL.newBuilder(dDL_).mergeFrom(value).buildPartial();
            } else {
              dDL_ = value;
            }
            onChanged();
          } else {
            dDLBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder clearDDL() {
          if (dDLBuilder_ == null) {
            dDL_ = DDLProtos.DDL.getDefaultInstance();
            onChanged();
          } else {
            dDLBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
        public DDLProtos.DDL.Builder getDDLBuilder() {
          bitField0_ |= 0x00000004;
          onChanged();
          return getDDLFieldBuilder().getBuilder();
        }
        public DDLProtos.DDLOrBuilder getDDLOrBuilder() {
          if (dDLBuilder_ != null) {
            return dDLBuilder_.getMessageOrBuilder();
          } else {
            return dDL_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            DDLProtos.DDL, DDLProtos.DDL.Builder, DDLProtos.DDLOrBuilder>
            getDDLFieldBuilder() {
          if (dDLBuilder_ == null) {
            dDLBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                DDLProtos.DDL, DDLProtos.DDL.Builder, DDLProtos.DDLOrBuilder>(
                    dDL_,
                    getParentForChildren(),
                    isClean());
            dDL_ = null;
          }
          return dDLBuilder_;
        }
        
        // optional .apsara.odps.lot.LogicalOperatorTree Lot = 4;
        private Lot.LogicalOperatorTree lot_ = Lot.LogicalOperatorTree.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            Lot.LogicalOperatorTree, Lot.LogicalOperatorTree.Builder, Lot.LogicalOperatorTreeOrBuilder> lotBuilder_;
        public boolean hasLot() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public Lot.LogicalOperatorTree getLot() {
          if (lotBuilder_ == null) {
            return lot_;
          } else {
            return lotBuilder_.getMessage();
          }
        }
        public Builder setLot(Lot.LogicalOperatorTree value) {
          if (lotBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            lot_ = value;
            onChanged();
          } else {
            lotBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder setLot(
            Lot.LogicalOperatorTree.Builder builderForValue) {
          if (lotBuilder_ == null) {
            lot_ = builderForValue.build();
            onChanged();
          } else {
            lotBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder mergeLot(Lot.LogicalOperatorTree value) {
          if (lotBuilder_ == null) {
            if (((bitField0_ & 0x00000008) == 0x00000008) &&
                lot_ != Lot.LogicalOperatorTree.getDefaultInstance()) {
              lot_ =
                Lot.LogicalOperatorTree.newBuilder(lot_).mergeFrom(value).buildPartial();
            } else {
              lot_ = value;
            }
            onChanged();
          } else {
            lotBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder clearLot() {
          if (lotBuilder_ == null) {
            lot_ = Lot.LogicalOperatorTree.getDefaultInstance();
            onChanged();
          } else {
            lotBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
        public Lot.LogicalOperatorTree.Builder getLotBuilder() {
          bitField0_ |= 0x00000008;
          onChanged();
          return getLotFieldBuilder().getBuilder();
        }
        public Lot.LogicalOperatorTreeOrBuilder getLotOrBuilder() {
          if (lotBuilder_ != null) {
            return lotBuilder_.getMessageOrBuilder();
          } else {
            return lot_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            Lot.LogicalOperatorTree, Lot.LogicalOperatorTree.Builder, Lot.LogicalOperatorTreeOrBuilder>
            getLotFieldBuilder() {
          if (lotBuilder_ == null) {
            lotBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                Lot.LogicalOperatorTree, Lot.LogicalOperatorTree.Builder, Lot.LogicalOperatorTreeOrBuilder>(
                    lot_,
                    getParentForChildren(),
                    isClean());
            lot_ = null;
          }
          return lotBuilder_;
        }
        
        // repeated .apsara.odps.lot.TemporaryFunction TempFunctions = 5;
        private java.util.List<ExpressionProtos.TemporaryFunction> tempFunctions_ =
          java.util.Collections.emptyList();
        private void ensureTempFunctionsIsMutable() {
          if (!((bitField0_ & 0x00000010) == 0x00000010)) {
            tempFunctions_ = new java.util.ArrayList<ExpressionProtos.TemporaryFunction>(tempFunctions_);
            bitField0_ |= 0x00000010;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            ExpressionProtos.TemporaryFunction, ExpressionProtos.TemporaryFunction.Builder, ExpressionProtos.TemporaryFunctionOrBuilder> tempFunctionsBuilder_;
        
        public java.util.List<ExpressionProtos.TemporaryFunction> getTempFunctionsList() {
          if (tempFunctionsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(tempFunctions_);
          } else {
            return tempFunctionsBuilder_.getMessageList();
          }
        }
        public int getTempFunctionsCount() {
          if (tempFunctionsBuilder_ == null) {
            return tempFunctions_.size();
          } else {
            return tempFunctionsBuilder_.getCount();
          }
        }
        public ExpressionProtos.TemporaryFunction getTempFunctions(int index) {
          if (tempFunctionsBuilder_ == null) {
            return tempFunctions_.get(index);
          } else {
            return tempFunctionsBuilder_.getMessage(index);
          }
        }
        public Builder setTempFunctions(
            int index, ExpressionProtos.TemporaryFunction value) {
          if (tempFunctionsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTempFunctionsIsMutable();
            tempFunctions_.set(index, value);
            onChanged();
          } else {
            tempFunctionsBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setTempFunctions(
            int index, ExpressionProtos.TemporaryFunction.Builder builderForValue) {
          if (tempFunctionsBuilder_ == null) {
            ensureTempFunctionsIsMutable();
            tempFunctions_.set(index, builderForValue.build());
            onChanged();
          } else {
            tempFunctionsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addTempFunctions(ExpressionProtos.TemporaryFunction value) {
          if (tempFunctionsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTempFunctionsIsMutable();
            tempFunctions_.add(value);
            onChanged();
          } else {
            tempFunctionsBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addTempFunctions(
            int index, ExpressionProtos.TemporaryFunction value) {
          if (tempFunctionsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTempFunctionsIsMutable();
            tempFunctions_.add(index, value);
            onChanged();
          } else {
            tempFunctionsBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addTempFunctions(
            ExpressionProtos.TemporaryFunction.Builder builderForValue) {
          if (tempFunctionsBuilder_ == null) {
            ensureTempFunctionsIsMutable();
            tempFunctions_.add(builderForValue.build());
            onChanged();
          } else {
            tempFunctionsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addTempFunctions(
            int index, ExpressionProtos.TemporaryFunction.Builder builderForValue) {
          if (tempFunctionsBuilder_ == null) {
            ensureTempFunctionsIsMutable();
            tempFunctions_.add(index, builderForValue.build());
            onChanged();
          } else {
            tempFunctionsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllTempFunctions(
            Iterable<? extends ExpressionProtos.TemporaryFunction> values) {
          if (tempFunctionsBuilder_ == null) {
            ensureTempFunctionsIsMutable();
            super.addAll(values, tempFunctions_);
            onChanged();
          } else {
            tempFunctionsBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearTempFunctions() {
          if (tempFunctionsBuilder_ == null) {
            tempFunctions_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
            onChanged();
          } else {
            tempFunctionsBuilder_.clear();
          }
          return this;
        }
        public Builder removeTempFunctions(int index) {
          if (tempFunctionsBuilder_ == null) {
            ensureTempFunctionsIsMutable();
            tempFunctions_.remove(index);
            onChanged();
          } else {
            tempFunctionsBuilder_.remove(index);
          }
          return this;
        }
        public ExpressionProtos.TemporaryFunction.Builder getTempFunctionsBuilder(
            int index) {
          return getTempFunctionsFieldBuilder().getBuilder(index);
        }
        public ExpressionProtos.TemporaryFunctionOrBuilder getTempFunctionsOrBuilder(
            int index) {
          if (tempFunctionsBuilder_ == null) {
            return tempFunctions_.get(index);  } else {
            return tempFunctionsBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends ExpressionProtos.TemporaryFunctionOrBuilder>
             getTempFunctionsOrBuilderList() {
          if (tempFunctionsBuilder_ != null) {
            return tempFunctionsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(tempFunctions_);
          }
        }
        public ExpressionProtos.TemporaryFunction.Builder addTempFunctionsBuilder() {
          return getTempFunctionsFieldBuilder().addBuilder(
              ExpressionProtos.TemporaryFunction.getDefaultInstance());
        }
        public ExpressionProtos.TemporaryFunction.Builder addTempFunctionsBuilder(
            int index) {
          return getTempFunctionsFieldBuilder().addBuilder(
              index, ExpressionProtos.TemporaryFunction.getDefaultInstance());
        }
        public java.util.List<ExpressionProtos.TemporaryFunction.Builder>
             getTempFunctionsBuilderList() {
          return getTempFunctionsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            ExpressionProtos.TemporaryFunction, ExpressionProtos.TemporaryFunction.Builder, ExpressionProtos.TemporaryFunctionOrBuilder>
            getTempFunctionsFieldBuilder() {
          if (tempFunctionsBuilder_ == null) {
            tempFunctionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                ExpressionProtos.TemporaryFunction, ExpressionProtos.TemporaryFunction.Builder, ExpressionProtos.TemporaryFunctionOrBuilder>(
                    tempFunctions_,
                    ((bitField0_ & 0x00000010) == 0x00000010),
                    getParentForChildren(),
                    isClean());
            tempFunctions_ = null;
          }
          return tempFunctionsBuilder_;
        }
        
        // @@protoc_insertion_point(builder_scope:apsara.odps.lot.LotTask)
      }
      
      static {
        defaultInstance = new LotTask(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:apsara.odps.lot.LotTask)
    }
    
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_apsara_odps_lot_LotTask_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_apsara_odps_lot_LotTask_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_apsara_odps_lot_LotTask_Environment_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_apsara_odps_lot_LotTask_Environment_fieldAccessorTable;
    
    public static com.google.protobuf.Descriptors.FileDescriptor
        getDescriptor() {
      return descriptor;
    }
    private static com.google.protobuf.Descriptors.FileDescriptor
        descriptor;
    static {
      String[] descriptorData = {
        "\n\021lot/lottask.proto\022\017apsara.odps.lot\032\rlo" +
        "t/lot.proto\032\rlot/ddl.proto\032\024lot/expressi" +
        "on.proto\"\233\002\n\007LotTask\022\031\n\007Version\030\001 \001(\003:\0101" +
        "9851003\0229\n\013environment\030\002 \003(\n2$.apsara.od" +
        "ps.lot.LotTask.Environment\022!\n\003DDL\030\003 \001(\0132" +
        "\024.apsara.odps.lot.DDL\0221\n\003Lot\030\004 \001(\0132$.aps" +
        "ara.odps.lot.LogicalOperatorTree\0229\n\rTemp" +
        "Functions\030\005 \003(\0132\".apsara.odps.lot.Tempor" +
        "aryFunction\032)\n\013Environment\022\013\n\003Key\030\001 \002(\t\022" +
        "\r\n\005Value\030\002 \002(\t"
      };
      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_lot_LotTask_descriptor =
              getDescriptor().getMessageTypes().get(0);
            internal_static_apsara_odps_lot_LotTask_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_apsara_odps_lot_LotTask_descriptor,
                new String[] { "Version", "Environment", "DDL", "Lot", "TempFunctions", },
                LotTask.class,
                LotTask.Builder.class);
            internal_static_apsara_odps_lot_LotTask_Environment_descriptor =
              internal_static_apsara_odps_lot_LotTask_descriptor.getNestedTypes().get(0);
            internal_static_apsara_odps_lot_LotTask_Environment_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_apsara_odps_lot_LotTask_Environment_descriptor,
                new String[] { "Key", "Value", },
                LotTask.Environment.class,
                LotTask.Environment.Builder.class);
            return null;
          }
        };
      com.google.protobuf.Descriptors.FileDescriptor
        .internalBuildGeneratedFileFrom(descriptorData,
          new com.google.protobuf.Descriptors.FileDescriptor[] {
            Lot.getDescriptor(),
            DDLProtos.getDescriptor(),
            ExpressionProtos.getDescriptor(),
          }, assigner);
    }
    
    // @@protoc_insertion_point(outer_class_scope)
  }
  