content: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: lot/datasource.proto
  
  package apsara.odps.lot;
  
  public final class DataSourceProtos {
    private DataSourceProtos() {}
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistry registry) {
    }
    public interface DataSourceOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required string Id = 1;
      boolean hasId();
      String getId();
      
      // optional .apsara.odps.lot.TableScan TableScan = 2;
      boolean hasTableScan();
      TableScanProtos.TableScan getTableScan();
      TableScanProtos.TableScanOrBuilder getTableScanOrBuilder();
      
      // optional .apsara.odps.lot.LanguageSource LanguageSource = 3;
      boolean hasLanguageSource();
      LanguageSourceProtos.LanguageSource getLanguageSource();
      LanguageSourceProtos.LanguageSourceOrBuilder getLanguageSourceOrBuilder();
      
      // optional .apsara.odps.lot.ViewSource ViewSource = 4;
      boolean hasViewSource();
      ViewSourceProtos.ViewSource getViewSource();
      ViewSourceProtos.ViewSourceOrBuilder getViewSourceOrBuilder();
    }
    public static final class DataSource extends
        com.google.protobuf.GeneratedMessage
        implements DataSourceOrBuilder {
      // Use DataSource.newBuilder() to construct.
      private DataSource(Builder builder) {
        super(builder);
      }
      private DataSource(boolean noInit) {}
      
      private static final DataSource defaultInstance;
      public static DataSource getDefaultInstance() {
        return defaultInstance;
      }
      
      public DataSource getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return DataSourceProtos.internal_static_apsara_odps_lot_DataSource_descriptor;
      }
      
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DataSourceProtos.internal_static_apsara_odps_lot_DataSource_fieldAccessorTable;
      }
      
      private int bitField0_;
      // required string Id = 1;
      public static final int ID_FIELD_NUMBER = 1;
      private Object id_;
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getId() {
        Object ref = id_;
        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)) {
            id_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getIdBytes() {
        Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional .apsara.odps.lot.TableScan TableScan = 2;
      public static final int TABLESCAN_FIELD_NUMBER = 2;
      private TableScanProtos.TableScan tableScan_;
      public boolean hasTableScan() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public TableScanProtos.TableScan getTableScan() {
        return tableScan_;
      }
      public TableScanProtos.TableScanOrBuilder getTableScanOrBuilder() {
        return tableScan_;
      }
      
      // optional .apsara.odps.lot.LanguageSource LanguageSource = 3;
      public static final int LANGUAGESOURCE_FIELD_NUMBER = 3;
      private LanguageSourceProtos.LanguageSource languageSource_;
      public boolean hasLanguageSource() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public LanguageSourceProtos.LanguageSource getLanguageSource() {
        return languageSource_;
      }
      public LanguageSourceProtos.LanguageSourceOrBuilder getLanguageSourceOrBuilder() {
        return languageSource_;
      }
      
      // optional .apsara.odps.lot.ViewSource ViewSource = 4;
      public static final int VIEWSOURCE_FIELD_NUMBER = 4;
      private ViewSourceProtos.ViewSource viewSource_;
      public boolean hasViewSource() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public ViewSourceProtos.ViewSource getViewSource() {
        return viewSource_;
      }
      public ViewSourceProtos.ViewSourceOrBuilder getViewSourceOrBuilder() {
        return viewSource_;
      }
      
      private void initFields() {
        id_ = "";
        tableScan_ = TableScanProtos.TableScan.getDefaultInstance();
        languageSource_ = LanguageSourceProtos.LanguageSource.getDefaultInstance();
        viewSource_ = ViewSourceProtos.ViewSource.getDefaultInstance();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        if (!hasId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (hasTableScan()) {
          if (!getTableScan().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasLanguageSource()) {
          if (!getLanguageSource().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasViewSource()) {
          if (!getViewSource().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
      
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeBytes(1, getIdBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(2, tableScan_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeMessage(3, languageSource_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeMessage(4, viewSource_);
        }
        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, getIdBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, tableScan_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, languageSource_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, viewSource_);
        }
        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 DataSource parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static DataSource parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static DataSource parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static DataSource parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static DataSource parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static DataSource parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static DataSource parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static DataSource 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 DataSource parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static DataSource 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(DataSource 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 DataSourceOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DataSourceProtos.internal_static_apsara_odps_lot_DataSource_descriptor;
        }
        
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DataSourceProtos.internal_static_apsara_odps_lot_DataSource_fieldAccessorTable;
        }
        
        // Construct using apsara.odps.lot.DataSourceProtos.DataSource.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getTableScanFieldBuilder();
            getLanguageSourceFieldBuilder();
            getViewSourceFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          id_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          if (tableScanBuilder_ == null) {
            tableScan_ = TableScanProtos.TableScan.getDefaultInstance();
          } else {
            tableScanBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          if (languageSourceBuilder_ == null) {
            languageSource_ = LanguageSourceProtos.LanguageSource.getDefaultInstance();
          } else {
            languageSourceBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          if (viewSourceBuilder_ == null) {
            viewSource_ = ViewSourceProtos.ViewSource.getDefaultInstance();
          } else {
            viewSourceBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DataSource.getDescriptor();
        }
        
        public DataSource getDefaultInstanceForType() {
          return DataSource.getDefaultInstance();
        }
        
        public DataSource build() {
          DataSource result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private DataSource buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          DataSource result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public DataSource buildPartial() {
          DataSource result = new DataSource(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.id_ = id_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          if (tableScanBuilder_ == null) {
            result.tableScan_ = tableScan_;
          } else {
            result.tableScan_ = tableScanBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          if (languageSourceBuilder_ == null) {
            result.languageSource_ = languageSource_;
          } else {
            result.languageSource_ = languageSourceBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          if (viewSourceBuilder_ == null) {
            result.viewSource_ = viewSource_;
          } else {
            result.viewSource_ = viewSourceBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof DataSource) {
            return mergeFrom((DataSource)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(DataSource other) {
          if (other == DataSource.getDefaultInstance()) return this;
          if (other.hasId()) {
            setId(other.getId());
          }
          if (other.hasTableScan()) {
            mergeTableScan(other.getTableScan());
          }
          if (other.hasLanguageSource()) {
            mergeLanguageSource(other.getLanguageSource());
          }
          if (other.hasViewSource()) {
            mergeViewSource(other.getViewSource());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasId()) {
            
            return false;
          }
          if (hasTableScan()) {
            if (!getTableScan().isInitialized()) {
              
              return false;
            }
          }
          if (hasLanguageSource()) {
            if (!getLanguageSource().isInitialized()) {
              
              return false;
            }
          }
          if (hasViewSource()) {
            if (!getViewSource().isInitialized()) {
              
              return false;
            }
          }
          return true;
        }
        
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  onChanged();
                  return this;
                }
                break;
              }
              case 10: {
                bitField0_ |= 0x00000001;
                id_ = input.readBytes();
                break;
              }
              case 18: {
                TableScanProtos.TableScan.Builder subBuilder = TableScanProtos.TableScan.newBuilder();
                if (hasTableScan()) {
                  subBuilder.mergeFrom(getTableScan());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setTableScan(subBuilder.buildPartial());
                break;
              }
              case 26: {
                LanguageSourceProtos.LanguageSource.Builder subBuilder = LanguageSourceProtos.LanguageSource.newBuilder();
                if (hasLanguageSource()) {
                  subBuilder.mergeFrom(getLanguageSource());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setLanguageSource(subBuilder.buildPartial());
                break;
              }
              case 34: {
                ViewSourceProtos.ViewSource.Builder subBuilder = ViewSourceProtos.ViewSource.newBuilder();
                if (hasViewSource()) {
                  subBuilder.mergeFrom(getViewSource());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setViewSource(subBuilder.buildPartial());
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // required string Id = 1;
        private Object id_ = "";
        public boolean hasId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public String getId() {
          Object ref = id_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            id_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setId(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          id_ = value;
          onChanged();
          return this;
        }
        public Builder clearId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          id_ = getDefaultInstance().getId();
          onChanged();
          return this;
        }
        void setId(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000001;
          id_ = value;
          onChanged();
        }
        
        // optional .apsara.odps.lot.TableScan TableScan = 2;
        private TableScanProtos.TableScan tableScan_ = TableScanProtos.TableScan.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            TableScanProtos.TableScan, TableScanProtos.TableScan.Builder, TableScanProtos.TableScanOrBuilder> tableScanBuilder_;
        public boolean hasTableScan() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public TableScanProtos.TableScan getTableScan() {
          if (tableScanBuilder_ == null) {
            return tableScan_;
          } else {
            return tableScanBuilder_.getMessage();
          }
        }
        public Builder setTableScan(TableScanProtos.TableScan value) {
          if (tableScanBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            tableScan_ = value;
            onChanged();
          } else {
            tableScanBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        public Builder setTableScan(
            TableScanProtos.TableScan.Builder builderForValue) {
          if (tableScanBuilder_ == null) {
            tableScan_ = builderForValue.build();
            onChanged();
          } else {
            tableScanBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        public Builder mergeTableScan(TableScanProtos.TableScan value) {
          if (tableScanBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002) &&
                tableScan_ != TableScanProtos.TableScan.getDefaultInstance()) {
              tableScan_ =
                TableScanProtos.TableScan.newBuilder(tableScan_).mergeFrom(value).buildPartial();
            } else {
              tableScan_ = value;
            }
            onChanged();
          } else {
            tableScanBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        public Builder clearTableScan() {
          if (tableScanBuilder_ == null) {
            tableScan_ = TableScanProtos.TableScan.getDefaultInstance();
            onChanged();
          } else {
            tableScanBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        public TableScanProtos.TableScan.Builder getTableScanBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getTableScanFieldBuilder().getBuilder();
        }
        public TableScanProtos.TableScanOrBuilder getTableScanOrBuilder() {
          if (tableScanBuilder_ != null) {
            return tableScanBuilder_.getMessageOrBuilder();
          } else {
            return tableScan_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            TableScanProtos.TableScan, TableScanProtos.TableScan.Builder, TableScanProtos.TableScanOrBuilder>
            getTableScanFieldBuilder() {
          if (tableScanBuilder_ == null) {
            tableScanBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                TableScanProtos.TableScan, TableScanProtos.TableScan.Builder, TableScanProtos.TableScanOrBuilder>(
                    tableScan_,
                    getParentForChildren(),
                    isClean());
            tableScan_ = null;
          }
          return tableScanBuilder_;
        }
        
        // optional .apsara.odps.lot.LanguageSource LanguageSource = 3;
        private LanguageSourceProtos.LanguageSource languageSource_ = LanguageSourceProtos.LanguageSource.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            LanguageSourceProtos.LanguageSource, LanguageSourceProtos.LanguageSource.Builder, LanguageSourceProtos.LanguageSourceOrBuilder> languageSourceBuilder_;
        public boolean hasLanguageSource() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public LanguageSourceProtos.LanguageSource getLanguageSource() {
          if (languageSourceBuilder_ == null) {
            return languageSource_;
          } else {
            return languageSourceBuilder_.getMessage();
          }
        }
        public Builder setLanguageSource(LanguageSourceProtos.LanguageSource value) {
          if (languageSourceBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            languageSource_ = value;
            onChanged();
          } else {
            languageSourceBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder setLanguageSource(
            LanguageSourceProtos.LanguageSource.Builder builderForValue) {
          if (languageSourceBuilder_ == null) {
            languageSource_ = builderForValue.build();
            onChanged();
          } else {
            languageSourceBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder mergeLanguageSource(LanguageSourceProtos.LanguageSource value) {
          if (languageSourceBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004) &&
                languageSource_ != LanguageSourceProtos.LanguageSource.getDefaultInstance()) {
              languageSource_ =
                LanguageSourceProtos.LanguageSource.newBuilder(languageSource_).mergeFrom(value).buildPartial();
            } else {
              languageSource_ = value;
            }
            onChanged();
          } else {
            languageSourceBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder clearLanguageSource() {
          if (languageSourceBuilder_ == null) {
            languageSource_ = LanguageSourceProtos.LanguageSource.getDefaultInstance();
            onChanged();
          } else {
            languageSourceBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
        public LanguageSourceProtos.LanguageSource.Builder getLanguageSourceBuilder() {
          bitField0_ |= 0x00000004;
          onChanged();
          return getLanguageSourceFieldBuilder().getBuilder();
        }
        public LanguageSourceProtos.LanguageSourceOrBuilder getLanguageSourceOrBuilder() {
          if (languageSourceBuilder_ != null) {
            return languageSourceBuilder_.getMessageOrBuilder();
          } else {
            return languageSource_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            LanguageSourceProtos.LanguageSource, LanguageSourceProtos.LanguageSource.Builder, LanguageSourceProtos.LanguageSourceOrBuilder>
            getLanguageSourceFieldBuilder() {
          if (languageSourceBuilder_ == null) {
            languageSourceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                LanguageSourceProtos.LanguageSource, LanguageSourceProtos.LanguageSource.Builder, LanguageSourceProtos.LanguageSourceOrBuilder>(
                    languageSource_,
                    getParentForChildren(),
                    isClean());
            languageSource_ = null;
          }
          return languageSourceBuilder_;
        }
        
        // optional .apsara.odps.lot.ViewSource ViewSource = 4;
        private ViewSourceProtos.ViewSource viewSource_ = ViewSourceProtos.ViewSource.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            ViewSourceProtos.ViewSource, ViewSourceProtos.ViewSource.Builder, ViewSourceProtos.ViewSourceOrBuilder> viewSourceBuilder_;
        public boolean hasViewSource() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public ViewSourceProtos.ViewSource getViewSource() {
          if (viewSourceBuilder_ == null) {
            return viewSource_;
          } else {
            return viewSourceBuilder_.getMessage();
          }
        }
        public Builder setViewSource(ViewSourceProtos.ViewSource value) {
          if (viewSourceBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            viewSource_ = value;
            onChanged();
          } else {
            viewSourceBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder setViewSource(
            ViewSourceProtos.ViewSource.Builder builderForValue) {
          if (viewSourceBuilder_ == null) {
            viewSource_ = builderForValue.build();
            onChanged();
          } else {
            viewSourceBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder mergeViewSource(ViewSourceProtos.ViewSource value) {
          if (viewSourceBuilder_ == null) {
            if (((bitField0_ & 0x00000008) == 0x00000008) &&
                viewSource_ != ViewSourceProtos.ViewSource.getDefaultInstance()) {
              viewSource_ =
                ViewSourceProtos.ViewSource.newBuilder(viewSource_).mergeFrom(value).buildPartial();
            } else {
              viewSource_ = value;
            }
            onChanged();
          } else {
            viewSourceBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder clearViewSource() {
          if (viewSourceBuilder_ == null) {
            viewSource_ = ViewSourceProtos.ViewSource.getDefaultInstance();
            onChanged();
          } else {
            viewSourceBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
        public ViewSourceProtos.ViewSource.Builder getViewSourceBuilder() {
          bitField0_ |= 0x00000008;
          onChanged();
          return getViewSourceFieldBuilder().getBuilder();
        }
        public ViewSourceProtos.ViewSourceOrBuilder getViewSourceOrBuilder() {
          if (viewSourceBuilder_ != null) {
            return viewSourceBuilder_.getMessageOrBuilder();
          } else {
            return viewSource_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            ViewSourceProtos.ViewSource, ViewSourceProtos.ViewSource.Builder, ViewSourceProtos.ViewSourceOrBuilder>
            getViewSourceFieldBuilder() {
          if (viewSourceBuilder_ == null) {
            viewSourceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                ViewSourceProtos.ViewSource, ViewSourceProtos.ViewSource.Builder, ViewSourceProtos.ViewSourceOrBuilder>(
                    viewSource_,
                    getParentForChildren(),
                    isClean());
            viewSource_ = null;
          }
          return viewSourceBuilder_;
        }
        
        // @@protoc_insertion_point(builder_scope:apsara.odps.lot.DataSource)
      }
      
      static {
        defaultInstance = new DataSource(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:apsara.odps.lot.DataSource)
    }
    
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_apsara_odps_lot_DataSource_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_apsara_odps_lot_DataSource_fieldAccessorTable;
    
    public static com.google.protobuf.Descriptors.FileDescriptor
        getDescriptor() {
      return descriptor;
    }
    private static com.google.protobuf.Descriptors.FileDescriptor
        descriptor;
    static {
      String[] descriptorData = {
        "\n\024lot/datasource.proto\022\017apsara.odps.lot\032" +
        "\023lot/tablescan.proto\032\030lot/languagesource" +
        ".proto\032\024lot/viewsource.proto\"\261\001\n\nDataSou" +
        "rce\022\n\n\002Id\030\001 \002(\t\022-\n\tTableScan\030\002 \001(\0132\032.aps" +
        "ara.odps.lot.TableScan\0227\n\016LanguageSource" +
        "\030\003 \001(\0132\037.apsara.odps.lot.LanguageSource\022" +
        "/\n\nViewSource\030\004 \001(\0132\033.apsara.odps.lot.Vi" +
        "ewSourceB\022B\020DataSourceProtos"
      };
      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_DataSource_descriptor =
              getDescriptor().getMessageTypes().get(0);
            internal_static_apsara_odps_lot_DataSource_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_apsara_odps_lot_DataSource_descriptor,
                new String[] { "Id", "TableScan", "LanguageSource", "ViewSource", },
                DataSource.class,
                DataSource.Builder.class);
            return null;
          }
        };
      com.google.protobuf.Descriptors.FileDescriptor
        .internalBuildGeneratedFileFrom(descriptorData,
          new com.google.protobuf.Descriptors.FileDescriptor[] {
            TableScanProtos.getDescriptor(),
            LanguageSourceProtos.getDescriptor(),
            ViewSourceProtos.getDescriptor(),
          }, assigner);
    }
    
    // @@protoc_insertion_point(outer_class_scope)
  }
  