// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: mysqlx_crud.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Mysqlx.Crud {

  /// <summary>Holder for reflection information generated from mysqlx_crud.proto</summary>
  internal static partial class MysqlxCrudReflection {

    #region Descriptor
    /// <summary>File descriptor for mysqlx_crud.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static MysqlxCrudReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "ChFteXNxbHhfY3J1ZC5wcm90bxILTXlzcWx4LkNydWQaEW15c3FseF9leHBy",
            "LnByb3RvGhZteXNxbHhfZGF0YXR5cGVzLnByb3RvIlsKBkNvbHVtbhIMCgRu",
            "YW1lGAEgASgJEg0KBWFsaWFzGAIgASgJEjQKDWRvY3VtZW50X3BhdGgYAyAD",
            "KAsyHS5NeXNxbHguRXhwci5Eb2N1bWVudFBhdGhJdGVtIj4KClByb2plY3Rp",
            "b24SIQoGc291cmNlGAEgASgLMhEuTXlzcWx4LkV4cHIuRXhwchINCgVhbGlh",
            "cxgCIAEoCSIqCgpDb2xsZWN0aW9uEgwKBG5hbWUYASABKAkSDgoGc2NoZW1h",
            "GAIgASgJIioKBUxpbWl0EhEKCXJvd19jb3VudBgBIAEoBBIOCgZvZmZzZXQY",
            "AiABKAQiVAoJTGltaXRFeHByEiQKCXJvd19jb3VudBgBIAEoCzIRLk15c3Fs",
            "eC5FeHByLkV4cHISIQoGb2Zmc2V0GAIgASgLMhEuTXlzcWx4LkV4cHIuRXhw",
            "ciKNAQoFT3JkZXISHwoEZXhwchgBIAEoCzIRLk15c3FseC5FeHByLkV4cHIS",
            "LwoJZGlyZWN0aW9uGAIgASgOMhwuTXlzcWx4LkNydWQuT3JkZXIuRGlyZWN0",
            "aW9uIjIKCURpcmVjdGlvbhISCg5OT05FX0RpcmVjdGlvbhAAEgcKA0FTQxAB",
            "EggKBERFU0MQAiLBAgoPVXBkYXRlT3BlcmF0aW9uEi0KBnNvdXJjZRgBIAEo",
            "CzIdLk15c3FseC5FeHByLkNvbHVtbklkZW50aWZpZXISOgoJb3BlcmF0aW9u",
            "GAIgASgOMicuTXlzcWx4LkNydWQuVXBkYXRlT3BlcmF0aW9uLlVwZGF0ZVR5",
            "cGUSIAoFdmFsdWUYAyABKAsyES5NeXNxbHguRXhwci5FeHByIqABCgpVcGRh",
            "dGVUeXBlEhMKD05PTkVfVXBkYXRlVHlwZRAAEgcKA1NFVBABEg8KC0lURU1f",
            "UkVNT1ZFEAISDAoISVRFTV9TRVQQAxIQCgxJVEVNX1JFUExBQ0UQBBIOCgpJ",
            "VEVNX01FUkdFEAUSEAoMQVJSQVlfSU5TRVJUEAYSEAoMQVJSQVlfQVBQRU5E",
            "EAcSDwoLTUVSR0VfUEFUQ0gQCCKPBQoERmluZBIrCgpjb2xsZWN0aW9uGAIg",
            "ASgLMhcuTXlzcWx4LkNydWQuQ29sbGVjdGlvbhIqCgpkYXRhX21vZGVsGAMg",
            "ASgOMhYuTXlzcWx4LkNydWQuRGF0YU1vZGVsEisKCnByb2plY3Rpb24YBCAD",
            "KAsyFy5NeXNxbHguQ3J1ZC5Qcm9qZWN0aW9uEiMKCGNyaXRlcmlhGAUgASgL",
            "MhEuTXlzcWx4LkV4cHIuRXhwchImCgRhcmdzGAsgAygLMhguTXlzcWx4LkRh",
            "dGF0eXBlcy5TY2FsYXISIQoFb3JkZXIYByADKAsyEi5NeXNxbHguQ3J1ZC5P",
            "cmRlchIjCghncm91cGluZxgIIAMoCzIRLk15c3FseC5FeHByLkV4cHISLAoR",
            "Z3JvdXBpbmdfY3JpdGVyaWEYCSABKAsyES5NeXNxbHguRXhwci5FeHByEioK",
            "B2xvY2tpbmcYDCABKA4yGS5NeXNxbHguQ3J1ZC5GaW5kLlJvd0xvY2sSOQoP",
            "bG9ja2luZ19vcHRpb25zGA0gASgOMiAuTXlzcWx4LkNydWQuRmluZC5Sb3dM",
            "b2NrT3B0aW9ucxIhCgVsaW1pdBgGIAEoCzISLk15c3FseC5DcnVkLkxpbWl0",
            "EioKCmxpbWl0X2V4cHIYDiABKAsyFi5NeXNxbHguQ3J1ZC5MaW1pdEV4cHIi",
            "QAoHUm93TG9jaxIQCgxOT05FX1Jvd0xvY2sQABIPCgtTSEFSRURfTE9DSxAB",
            "EhIKDkVYQ0xVU0lWRV9MT0NLEAIiRgoOUm93TG9ja09wdGlvbnMSFwoTTk9O",
            "RV9Sb3dMb2NrT3B0aW9ucxAAEgoKBk5PV0FJVBABEg8KC1NLSVBfTE9DS0VE",
            "EAIimwIKBkluc2VydBIrCgpjb2xsZWN0aW9uGAEgASgLMhcuTXlzcWx4LkNy",
            "dWQuQ29sbGVjdGlvbhIqCgpkYXRhX21vZGVsGAIgASgOMhYuTXlzcWx4LkNy",
            "dWQuRGF0YU1vZGVsEicKCnByb2plY3Rpb24YAyADKAsyEy5NeXNxbHguQ3J1",
            "ZC5Db2x1bW4SKQoDcm93GAQgAygLMhwuTXlzcWx4LkNydWQuSW5zZXJ0LlR5",
            "cGVkUm93EiYKBGFyZ3MYBSADKAsyGC5NeXNxbHguRGF0YXR5cGVzLlNjYWxh",
            "chIOCgZ1cHNlcnQYBiABKAgaLAoIVHlwZWRSb3cSIAoFZmllbGQYASADKAsy",
            "ES5NeXNxbHguRXhwci5FeHByItECCgZVcGRhdGUSKwoKY29sbGVjdGlvbhgC",
            "IAEoCzIXLk15c3FseC5DcnVkLkNvbGxlY3Rpb24SKgoKZGF0YV9tb2RlbBgD",
            "IAEoDjIWLk15c3FseC5DcnVkLkRhdGFNb2RlbBIjCghjcml0ZXJpYRgEIAEo",
            "CzIRLk15c3FseC5FeHByLkV4cHISJgoEYXJncxgIIAMoCzIYLk15c3FseC5E",
            "YXRhdHlwZXMuU2NhbGFyEiEKBW9yZGVyGAYgAygLMhIuTXlzcWx4LkNydWQu",
            "T3JkZXISLwoJb3BlcmF0aW9uGAcgAygLMhwuTXlzcWx4LkNydWQuVXBkYXRl",
            "T3BlcmF0aW9uEiEKBWxpbWl0GAUgASgLMhIuTXlzcWx4LkNydWQuTGltaXQS",
            "KgoKbGltaXRfZXhwchgJIAEoCzIWLk15c3FseC5DcnVkLkxpbWl0RXhwciKg",
            "AgoGRGVsZXRlEisKCmNvbGxlY3Rpb24YASABKAsyFy5NeXNxbHguQ3J1ZC5D",
            "b2xsZWN0aW9uEioKCmRhdGFfbW9kZWwYAiABKA4yFi5NeXNxbHguQ3J1ZC5E",
            "YXRhTW9kZWwSIwoIY3JpdGVyaWEYAyABKAsyES5NeXNxbHguRXhwci5FeHBy",
            "EiYKBGFyZ3MYBiADKAsyGC5NeXNxbHguRGF0YXR5cGVzLlNjYWxhchIhCgVv",
            "cmRlchgFIAMoCzISLk15c3FseC5DcnVkLk9yZGVyEiEKBWxpbWl0GAQgASgL",
            "MhIuTXlzcWx4LkNydWQuTGltaXQSKgoKbGltaXRfZXhwchgHIAEoCzIWLk15",
            "c3FseC5DcnVkLkxpbWl0RXhwciKhAgoKQ3JlYXRlVmlldxIrCgpjb2xsZWN0",
            "aW9uGAEgASgLMhcuTXlzcWx4LkNydWQuQ29sbGVjdGlvbhIPCgdkZWZpbmVy",
            "GAIgASgJEi0KCWFsZ29yaXRobRgDIAEoDjIaLk15c3FseC5DcnVkLlZpZXdB",
            "bGdvcml0aG0SLgoIc2VjdXJpdHkYBCABKA4yHC5NeXNxbHguQ3J1ZC5WaWV3",
            "U3FsU2VjdXJpdHkSKwoFY2hlY2sYBSABKA4yHC5NeXNxbHguQ3J1ZC5WaWV3",
            "Q2hlY2tPcHRpb24SDgoGY29sdW1uGAYgAygJEh8KBHN0bXQYByABKAsyES5N",
            "eXNxbHguQ3J1ZC5GaW5kEhgKEHJlcGxhY2VfZXhpc3RpbmcYCCABKAgihwIK",
            "Ck1vZGlmeVZpZXcSKwoKY29sbGVjdGlvbhgBIAEoCzIXLk15c3FseC5DcnVk",
            "LkNvbGxlY3Rpb24SDwoHZGVmaW5lchgCIAEoCRItCglhbGdvcml0aG0YAyAB",
            "KA4yGi5NeXNxbHguQ3J1ZC5WaWV3QWxnb3JpdGhtEi4KCHNlY3VyaXR5GAQg",
            "ASgOMhwuTXlzcWx4LkNydWQuVmlld1NxbFNlY3VyaXR5EisKBWNoZWNrGAUg",
            "ASgOMhwuTXlzcWx4LkNydWQuVmlld0NoZWNrT3B0aW9uEg4KBmNvbHVtbhgG",
            "IAMoCRIfCgRzdG10GAcgASgLMhEuTXlzcWx4LkNydWQuRmluZCJKCghEcm9w",
            "VmlldxIrCgpjb2xsZWN0aW9uGAEgASgLMhcuTXlzcWx4LkNydWQuQ29sbGVj",
            "dGlvbhIRCglpZl9leGlzdHMYAiABKAgqOAoJRGF0YU1vZGVsEhIKDk5PTkVf",
            "RGF0YU1vZGVsEAASDAoIRE9DVU1FTlQQARIJCgVUQUJMRRACKlAKDVZpZXdB",
            "bGdvcml0aG0SFgoSTk9ORV9WaWV3QWxnb3JpdGhtEAASDQoJVU5ERUZJTkVE",
            "EAESCQoFTUVSR0UQAhINCglURU1QVEFCTEUQAypFCg9WaWV3U3FsU2VjdXJp",
            "dHkSGAoUTk9ORV9WaWV3U3FsU2VjdXJpdHkQABILCgdJTlZPS0VSEAESCwoH",
            "REVGSU5FUhACKkQKD1ZpZXdDaGVja09wdGlvbhIYChROT05FX1ZpZXdDaGVj",
            "a09wdGlvbhAAEgkKBUxPQ0FMEAESDAoIQ0FTQ0FERUQQAkIZChdjb20ubXlz",
            "cWwuY2oueC5wcm90b2J1ZmIGcHJvdG8z"));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Mysqlx.Expr.MysqlxExprReflection.Descriptor, global::Mysqlx.Datatypes.MysqlxDatatypesReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Mysqlx.Crud.DataModel), typeof(global::Mysqlx.Crud.ViewAlgorithm), typeof(global::Mysqlx.Crud.ViewSqlSecurity), typeof(global::Mysqlx.Crud.ViewCheckOption), }, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Mysqlx.Crud.Column), global::Mysqlx.Crud.Column.Parser, new[]{ "Name", "Alias", "DocumentPath" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Mysqlx.Crud.Projection), global::Mysqlx.Crud.Projection.Parser, new[]{ "Source", "Alias" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Mysqlx.Crud.Collection), global::Mysqlx.Crud.Collection.Parser, new[]{ "Name", "Schema" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Mysqlx.Crud.Limit), global::Mysqlx.Crud.Limit.Parser, new[]{ "RowCount", "Offset" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Mysqlx.Crud.LimitExpr), global::Mysqlx.Crud.LimitExpr.Parser, new[]{ "RowCount", "Offset" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Mysqlx.Crud.Order), global::Mysqlx.Crud.Order.Parser, new[]{ "Expr", "Direction" }, null, new[]{ typeof(global::Mysqlx.Crud.Order.Types.Direction) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Mysqlx.Crud.UpdateOperation), global::Mysqlx.Crud.UpdateOperation.Parser, new[]{ "Source", "Operation", "Value" }, null, new[]{ typeof(global::Mysqlx.Crud.UpdateOperation.Types.UpdateType) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Mysqlx.Crud.Find), global::Mysqlx.Crud.Find.Parser, new[]{ "Collection", "DataModel", "Projection", "Criteria", "Args", "Order", "Grouping", "GroupingCriteria", "Locking", "LockingOptions", "Limit", "LimitExpr" }, null, new[]{ typeof(global::Mysqlx.Crud.Find.Types.RowLock), typeof(global::Mysqlx.Crud.Find.Types.RowLockOptions) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Mysqlx.Crud.Insert), global::Mysqlx.Crud.Insert.Parser, new[]{ "Collection", "DataModel", "Projection", "Row", "Args", "Upsert" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Mysqlx.Crud.Insert.Types.TypedRow), global::Mysqlx.Crud.Insert.Types.TypedRow.Parser, new[]{ "Field" }, null, null, null)}),
            new pbr::GeneratedClrTypeInfo(typeof(global::Mysqlx.Crud.Update), global::Mysqlx.Crud.Update.Parser, new[]{ "Collection", "DataModel", "Criteria", "Args", "Order", "Operation", "Limit", "LimitExpr" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Mysqlx.Crud.Delete), global::Mysqlx.Crud.Delete.Parser, new[]{ "Collection", "DataModel", "Criteria", "Args", "Order", "Limit", "LimitExpr" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Mysqlx.Crud.CreateView), global::Mysqlx.Crud.CreateView.Parser, new[]{ "Collection", "Definer", "Algorithm", "Security", "Check", "Column", "Stmt", "ReplaceExisting" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Mysqlx.Crud.ModifyView), global::Mysqlx.Crud.ModifyView.Parser, new[]{ "Collection", "Definer", "Algorithm", "Security", "Check", "Column", "Stmt" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Mysqlx.Crud.DropView), global::Mysqlx.Crud.DropView.Parser, new[]{ "Collection", "IfExists" }, null, null, null)
          }));
    }
    #endregion

  }
  #region Enums
  /// <summary>
  /// DataModel to use for filters, names, ...
  /// </summary>
  internal enum DataModel {
    [pbr::OriginalName("NONE_DataModel")] NoneDataModel = 0,
    [pbr::OriginalName("DOCUMENT")] Document = 1,
    [pbr::OriginalName("TABLE")] Table = 2,
  }

  /// <summary>
  /// ViewAlgorithm defines how MySQL Server processes the view
  /// </summary>
  internal enum ViewAlgorithm {
    [pbr::OriginalName("NONE_ViewAlgorithm")] NoneViewAlgorithm = 0,
    /// <summary>
    /// MySQL chooses which algorithm to use
    /// </summary>
    [pbr::OriginalName("UNDEFINED")] Undefined = 1,
    /// <summary>
    /// the text of a statement that refers to the view and the view definition are merged
    /// </summary>
    [pbr::OriginalName("MERGE")] Merge = 2,
    /// <summary>
    /// the view are retrieved into a temporary table
    /// </summary>
    [pbr::OriginalName("TEMPTABLE")] Temptable = 3,
  }

  /// <summary>
  /// ViewSqlSecurity defines the security context in which the view is going to be
  /// executed, this means that VIEW can be executed with current user permissions or
  /// with permissions of the uses who defined the VIEW
  /// </summary>
  internal enum ViewSqlSecurity {
    [pbr::OriginalName("NONE_ViewSqlSecurity")] NoneViewSqlSecurity = 0,
    [pbr::OriginalName("INVOKER")] Invoker = 1,
    [pbr::OriginalName("DEFINER")] Definer = 2,
  }

  /// <summary>
  /// ViewCheckOption limits the write operations done on a `VIEW`
  /// (`INSERT`, `UPDATE`, `DELETE`) to rows in which the `WHERE` clause is `TRUE`
  /// </summary>
  internal enum ViewCheckOption {
    [pbr::OriginalName("NONE_ViewCheckOption")] NoneViewCheckOption = 0,
    /// <summary>
    /// the view WHERE clause is checked, but no underlying views are checked
    /// </summary>
    [pbr::OriginalName("LOCAL")] Local = 1,
    /// <summary>
    /// the view WHERE clause is checked, then checking recurses to underlying views
    /// </summary>
    [pbr::OriginalName("CASCADED")] Cascaded = 2,
  }

  #endregion

  #region Messages
  /// <summary>
  /// column definition
  /// </summary>
  internal sealed partial class Column : pb::IMessage<Column> {
    private static readonly pb::MessageParser<Column> _parser = new pb::MessageParser<Column>(() => new Column());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Column> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Mysqlx.Crud.MysqlxCrudReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Column() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Column(Column other) : this() {
      name_ = other.name_;
      alias_ = other.alias_;
      documentPath_ = other.documentPath_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Column Clone() {
      return new Column(this);
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 1;
    private string name_ = "";
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "alias" field.</summary>
    public const int AliasFieldNumber = 2;
    private string alias_ = "";
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Alias {
      get { return alias_; }
      set {
        alias_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "document_path" field.</summary>
    public const int DocumentPathFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Mysqlx.Expr.DocumentPathItem> _repeated_documentPath_codec
        = pb::FieldCodec.ForMessage(26, global::Mysqlx.Expr.DocumentPathItem.Parser);
    private readonly pbc::RepeatedField<global::Mysqlx.Expr.DocumentPathItem> documentPath_ = new pbc::RepeatedField<global::Mysqlx.Expr.DocumentPathItem>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Mysqlx.Expr.DocumentPathItem> DocumentPath {
      get { return documentPath_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as Column);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Column other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if (Alias != other.Alias) return false;
      if(!documentPath_.Equals(other.documentPath_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (Alias.Length != 0) hash ^= Alias.GetHashCode();
      hash ^= documentPath_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (Alias.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Alias);
      }
      documentPath_.WriteTo(output, _repeated_documentPath_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (Alias.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Alias);
      }
      size += documentPath_.CalculateSize(_repeated_documentPath_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Column other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.Alias.Length != 0) {
        Alias = other.Alias;
      }
      documentPath_.Add(other.documentPath_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            Alias = input.ReadString();
            break;
          }
          case 26: {
            documentPath_.AddEntriesFrom(input, _repeated_documentPath_codec);
            break;
          }
        }
      }
    }

  }

  /// <summary>
  /// a projection
  ///
  /// :param source: the expression identifying an element from the source data
  ///                which can include a column identifier or any expression
  /// :param alias: optional alias. Required for DOCUMENTs (clients may use 
  ///              the source string as default)
  /// </summary>
  internal sealed partial class Projection : pb::IMessage<Projection> {
    private static readonly pb::MessageParser<Projection> _parser = new pb::MessageParser<Projection>(() => new Projection());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Projection> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Mysqlx.Crud.MysqlxCrudReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Projection() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Projection(Projection other) : this() {
      source_ = other.source_ != null ? other.source_.Clone() : null;
      alias_ = other.alias_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Projection Clone() {
      return new Projection(this);
    }

    /// <summary>Field number for the "source" field.</summary>
    public const int SourceFieldNumber = 1;
    private global::Mysqlx.Expr.Expr source_;
    /// <summary>
    ///required
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Expr.Expr Source {
      get { return source_; }
      set {
        source_ = value;
      }
    }

    /// <summary>Field number for the "alias" field.</summary>
    public const int AliasFieldNumber = 2;
    private string alias_ = "";
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Alias {
      get { return alias_; }
      set {
        alias_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as Projection);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Projection other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Source, other.Source)) return false;
      if (Alias != other.Alias) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (source_ != null) hash ^= Source.GetHashCode();
      if (Alias.Length != 0) hash ^= Alias.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (source_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Source);
      }
      if (Alias.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Alias);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (source_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Source);
      }
      if (Alias.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Alias);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Projection other) {
      if (other == null) {
        return;
      }
      if (other.source_ != null) {
        if (source_ == null) {
          source_ = new global::Mysqlx.Expr.Expr();
        }
        Source.MergeFrom(other.Source);
      }
      if (other.Alias.Length != 0) {
        Alias = other.Alias;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (source_ == null) {
              source_ = new global::Mysqlx.Expr.Expr();
            }
            input.ReadMessage(source_);
            break;
          }
          case 18: {
            Alias = input.ReadString();
            break;
          }
        }
      }
    }

  }

  /// <summary>
  /// collection
  /// </summary>
  internal sealed partial class Collection : pb::IMessage<Collection> {
    private static readonly pb::MessageParser<Collection> _parser = new pb::MessageParser<Collection>(() => new Collection());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Collection> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Mysqlx.Crud.MysqlxCrudReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Collection() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Collection(Collection other) : this() {
      name_ = other.name_;
      schema_ = other.schema_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Collection Clone() {
      return new Collection(this);
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 1;
    private string name_ = "";
    /// <summary>
    ///required
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "schema" field.</summary>
    public const int SchemaFieldNumber = 2;
    private string schema_ = "";
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Schema {
      get { return schema_; }
      set {
        schema_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as Collection);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Collection other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if (Schema != other.Schema) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (Schema.Length != 0) hash ^= Schema.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (Schema.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Schema);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (Schema.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Schema);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Collection other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.Schema.Length != 0) {
        Schema = other.Schema;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            Schema = input.ReadString();
            break;
          }
        }
      }
    }

  }

  /// <summary>
  /// limit
  ///
  /// :param row_count: maximum rows to filter
  /// :param offset: maximum rows to skip before applying the row_count
  /// </summary>
  internal sealed partial class Limit : pb::IMessage<Limit> {
    private static readonly pb::MessageParser<Limit> _parser = new pb::MessageParser<Limit>(() => new Limit());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Limit> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Mysqlx.Crud.MysqlxCrudReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Limit() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Limit(Limit other) : this() {
      rowCount_ = other.rowCount_;
      offset_ = other.offset_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Limit Clone() {
      return new Limit(this);
    }

    /// <summary>Field number for the "row_count" field.</summary>
    public const int RowCountFieldNumber = 1;
    private ulong rowCount_;
    /// <summary>
    ///required
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ulong RowCount {
      get { return rowCount_; }
      set {
        rowCount_ = value;
      }
    }

    /// <summary>Field number for the "offset" field.</summary>
    public const int OffsetFieldNumber = 2;
    private ulong offset_;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ulong Offset {
      get { return offset_; }
      set {
        offset_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as Limit);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Limit other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (RowCount != other.RowCount) return false;
      if (Offset != other.Offset) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (RowCount != 0UL) hash ^= RowCount.GetHashCode();
      if (Offset != 0UL) hash ^= Offset.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (RowCount != 0UL) {
        output.WriteRawTag(8);
        output.WriteUInt64(RowCount);
      }
      if (Offset != 0UL) {
        output.WriteRawTag(16);
        output.WriteUInt64(Offset);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (RowCount != 0UL) {
        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(RowCount);
      }
      if (Offset != 0UL) {
        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Offset);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Limit other) {
      if (other == null) {
        return;
      }
      if (other.RowCount != 0UL) {
        RowCount = other.RowCount;
      }
      if (other.Offset != 0UL) {
        Offset = other.Offset;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            RowCount = input.ReadUInt64();
            break;
          }
          case 16: {
            Offset = input.ReadUInt64();
            break;
          }
        }
      }
    }

  }

  /// <summary>
  /// limit expression
  ///
  /// LimitExpr in comparison to Limit, is able to specify that row_count and
  /// offset are placeholders.
  /// This message support expressions of following types Expr/literal/UINT,
  /// Expr/PLACEHOLDER.
  ///
  /// :param row_count: maximum rows to filter
  /// :param offset: maximum rows to skip before applying the row_count
  /// </summary>
  internal sealed partial class LimitExpr : pb::IMessage<LimitExpr> {
    private static readonly pb::MessageParser<LimitExpr> _parser = new pb::MessageParser<LimitExpr>(() => new LimitExpr());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<LimitExpr> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Mysqlx.Crud.MysqlxCrudReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LimitExpr() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LimitExpr(LimitExpr other) : this() {
      rowCount_ = other.rowCount_ != null ? other.rowCount_.Clone() : null;
      offset_ = other.offset_ != null ? other.offset_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LimitExpr Clone() {
      return new LimitExpr(this);
    }

    /// <summary>Field number for the "row_count" field.</summary>
    public const int RowCountFieldNumber = 1;
    private global::Mysqlx.Expr.Expr rowCount_;
    /// <summary>
    ///required
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Expr.Expr RowCount {
      get { return rowCount_; }
      set {
        rowCount_ = value;
      }
    }

    /// <summary>Field number for the "offset" field.</summary>
    public const int OffsetFieldNumber = 2;
    private global::Mysqlx.Expr.Expr offset_;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Expr.Expr Offset {
      get { return offset_; }
      set {
        offset_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as LimitExpr);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(LimitExpr other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(RowCount, other.RowCount)) return false;
      if (!object.Equals(Offset, other.Offset)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (rowCount_ != null) hash ^= RowCount.GetHashCode();
      if (offset_ != null) hash ^= Offset.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (rowCount_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(RowCount);
      }
      if (offset_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Offset);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (rowCount_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(RowCount);
      }
      if (offset_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Offset);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(LimitExpr other) {
      if (other == null) {
        return;
      }
      if (other.rowCount_ != null) {
        if (rowCount_ == null) {
          rowCount_ = new global::Mysqlx.Expr.Expr();
        }
        RowCount.MergeFrom(other.RowCount);
      }
      if (other.offset_ != null) {
        if (offset_ == null) {
          offset_ = new global::Mysqlx.Expr.Expr();
        }
        Offset.MergeFrom(other.Offset);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (rowCount_ == null) {
              rowCount_ = new global::Mysqlx.Expr.Expr();
            }
            input.ReadMessage(rowCount_);
            break;
          }
          case 18: {
            if (offset_ == null) {
              offset_ = new global::Mysqlx.Expr.Expr();
            }
            input.ReadMessage(offset_);
            break;
          }
        }
      }
    }

  }

  /// <summary>
  /// sort order
  /// </summary>
  internal sealed partial class Order : pb::IMessage<Order> {
    private static readonly pb::MessageParser<Order> _parser = new pb::MessageParser<Order>(() => new Order());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Order> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Mysqlx.Crud.MysqlxCrudReflection.Descriptor.MessageTypes[5]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Order() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Order(Order other) : this() {
      expr_ = other.expr_ != null ? other.expr_.Clone() : null;
      direction_ = other.direction_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Order Clone() {
      return new Order(this);
    }

    /// <summary>Field number for the "expr" field.</summary>
    public const int ExprFieldNumber = 1;
    private global::Mysqlx.Expr.Expr expr_;
    /// <summary>
    ///required
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Expr.Expr Expr {
      get { return expr_; }
      set {
        expr_ = value;
      }
    }

    /// <summary>Field number for the "direction" field.</summary>
    public const int DirectionFieldNumber = 2;
    private global::Mysqlx.Crud.Order.Types.Direction direction_ = 0;
    /// <summary>
    ///optional//[ default=ASC ]
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.Order.Types.Direction Direction {
      get { return direction_; }
      set {
        direction_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as Order);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Order other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Expr, other.Expr)) return false;
      if (Direction != other.Direction) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (expr_ != null) hash ^= Expr.GetHashCode();
      if (Direction != 0) hash ^= Direction.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (expr_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Expr);
      }
      if (Direction != 0) {
        output.WriteRawTag(16);
        output.WriteEnum((int) Direction);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (expr_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Expr);
      }
      if (Direction != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Direction);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Order other) {
      if (other == null) {
        return;
      }
      if (other.expr_ != null) {
        if (expr_ == null) {
          expr_ = new global::Mysqlx.Expr.Expr();
        }
        Expr.MergeFrom(other.Expr);
      }
      if (other.Direction != 0) {
        Direction = other.Direction;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (expr_ == null) {
              expr_ = new global::Mysqlx.Expr.Expr();
            }
            input.ReadMessage(expr_);
            break;
          }
          case 16: {
            direction_ = (global::Mysqlx.Crud.Order.Types.Direction) input.ReadEnum();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the Order message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    internal static partial class Types {
      internal enum Direction {
        [pbr::OriginalName("NONE_Direction")] NoneDirection = 0,
        [pbr::OriginalName("ASC")] Asc = 1,
        [pbr::OriginalName("DESC")] Desc = 2,
      }

    }
    #endregion

  }

  /// <summary>
  /// update operations
  ///
  /// :param source: specification of the value to be updated
  ///      if data_model is TABLE, a column name may be specified and also a document path, if the column has type JSON
  ///      if data_model is DOCUMENT, only document paths are allowed
  ///      in both cases, schema and table must be not set
  /// :param operation: the type of operation to be performed
  /// :param value: an expression to be computed as the new value for the operation
  /// </summary>
  internal sealed partial class UpdateOperation : pb::IMessage<UpdateOperation> {
    private static readonly pb::MessageParser<UpdateOperation> _parser = new pb::MessageParser<UpdateOperation>(() => new UpdateOperation());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<UpdateOperation> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Mysqlx.Crud.MysqlxCrudReflection.Descriptor.MessageTypes[6]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public UpdateOperation() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public UpdateOperation(UpdateOperation other) : this() {
      source_ = other.source_ != null ? other.source_.Clone() : null;
      operation_ = other.operation_;
      value_ = other.value_ != null ? other.value_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public UpdateOperation Clone() {
      return new UpdateOperation(this);
    }

    /// <summary>Field number for the "source" field.</summary>
    public const int SourceFieldNumber = 1;
    private global::Mysqlx.Expr.ColumnIdentifier source_;
    /// <summary>
    ///required
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Expr.ColumnIdentifier Source {
      get { return source_; }
      set {
        source_ = value;
      }
    }

    /// <summary>Field number for the "operation" field.</summary>
    public const int OperationFieldNumber = 2;
    private global::Mysqlx.Crud.UpdateOperation.Types.UpdateType operation_ = 0;
    /// <summary>
    ///required
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.UpdateOperation.Types.UpdateType Operation {
      get { return operation_; }
      set {
        operation_ = value;
      }
    }

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 3;
    private global::Mysqlx.Expr.Expr value_;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Expr.Expr Value {
      get { return value_; }
      set {
        value_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as UpdateOperation);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(UpdateOperation other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Source, other.Source)) return false;
      if (Operation != other.Operation) return false;
      if (!object.Equals(Value, other.Value)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (source_ != null) hash ^= Source.GetHashCode();
      if (Operation != 0) hash ^= Operation.GetHashCode();
      if (value_ != null) hash ^= Value.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (source_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Source);
      }
      if (Operation != 0) {
        output.WriteRawTag(16);
        output.WriteEnum((int) Operation);
      }
      if (value_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Value);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (source_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Source);
      }
      if (Operation != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Operation);
      }
      if (value_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(UpdateOperation other) {
      if (other == null) {
        return;
      }
      if (other.source_ != null) {
        if (source_ == null) {
          source_ = new global::Mysqlx.Expr.ColumnIdentifier();
        }
        Source.MergeFrom(other.Source);
      }
      if (other.Operation != 0) {
        Operation = other.Operation;
      }
      if (other.value_ != null) {
        if (value_ == null) {
          value_ = new global::Mysqlx.Expr.Expr();
        }
        Value.MergeFrom(other.Value);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (source_ == null) {
              source_ = new global::Mysqlx.Expr.ColumnIdentifier();
            }
            input.ReadMessage(source_);
            break;
          }
          case 16: {
            operation_ = (global::Mysqlx.Crud.UpdateOperation.Types.UpdateType) input.ReadEnum();
            break;
          }
          case 26: {
            if (value_ == null) {
              value_ = new global::Mysqlx.Expr.Expr();
            }
            input.ReadMessage(value_);
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the UpdateOperation message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    internal static partial class Types {
      internal enum UpdateType {
        [pbr::OriginalName("NONE_UpdateType")] NoneUpdateType = 0,
        /// <summary>
        /// only allowed for TABLE
        /// </summary>
        [pbr::OriginalName("SET")] Set = 1,
        /// <summary>
        /// no value (removes the identified path from a object or array)
        /// </summary>
        [pbr::OriginalName("ITEM_REMOVE")] ItemRemove = 2,
        /// <summary>
        /// sets the new value on the identified path
        /// </summary>
        [pbr::OriginalName("ITEM_SET")] ItemSet = 3,
        /// <summary>
        /// replaces a value if the path exists
        /// </summary>
        [pbr::OriginalName("ITEM_REPLACE")] ItemReplace = 4,
        /// <summary>
        /// source and value must be documents
        /// </summary>
        [pbr::OriginalName("ITEM_MERGE")] ItemMerge = 5,
        /// <summary>
        /// insert the value in the array at the index identified in the source path
        /// </summary>
        [pbr::OriginalName("ARRAY_INSERT")] ArrayInsert = 6,
        /// <summary>
        /// append the value on the array at the identified path
        /// </summary>
        [pbr::OriginalName("ARRAY_APPEND")] ArrayAppend = 7,
        /// <summary>
        /// merge JSON object value with the provided patch expression
        /// </summary>
        [pbr::OriginalName("MERGE_PATCH")] MergePatch = 8,
      }

    }
    #endregion

  }

  /// <summary>
  /// Find Documents/Rows in a Collection/Table
  ///
  /// .. uml::
  ///
  ///   client -> server: Find
  ///   ... one or more Resultset ...
  ///
  /// :param collection: collection to insert into
  /// :param data_model: datamodel that the operations refer to
  /// :param projection: list of column projections that shall be returned
  /// :param args: values for parameters used in filter expression
  /// :param criteria: filter criteria
  /// :param limit: numbers of rows that shall be skipped and returned (user can set one of: limit, limit_expr)
  /// :param order: sort-order in which the rows/document shall be returned in
  /// :param grouping: column expression list for aggregation (GROUP BY)
  /// :param grouping_criteria: filter criteria for aggregated groups
  /// :param locking: perform row locking on matches
  /// :param locking_options: additional options how to handle locked rows
  /// :param limit_expr: numbers of rows that shall be skipped and returned (user can set one of: limit, limit_expr)
  /// :Returns: :protobuf:msg:`Mysqlx.Resultset::`
  /// </summary>
  internal sealed partial class Find : pb::IMessage<Find> {
    private static readonly pb::MessageParser<Find> _parser = new pb::MessageParser<Find>(() => new Find());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Find> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Mysqlx.Crud.MysqlxCrudReflection.Descriptor.MessageTypes[7]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Find() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Find(Find other) : this() {
      collection_ = other.collection_ != null ? other.collection_.Clone() : null;
      dataModel_ = other.dataModel_;
      projection_ = other.projection_.Clone();
      criteria_ = other.criteria_ != null ? other.criteria_.Clone() : null;
      args_ = other.args_.Clone();
      order_ = other.order_.Clone();
      grouping_ = other.grouping_.Clone();
      groupingCriteria_ = other.groupingCriteria_ != null ? other.groupingCriteria_.Clone() : null;
      locking_ = other.locking_;
      lockingOptions_ = other.lockingOptions_;
      limit_ = other.limit_ != null ? other.limit_.Clone() : null;
      limitExpr_ = other.limitExpr_ != null ? other.limitExpr_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Find Clone() {
      return new Find(this);
    }

    /// <summary>Field number for the "collection" field.</summary>
    public const int CollectionFieldNumber = 2;
    private global::Mysqlx.Crud.Collection collection_;
    /// <summary>
    ///required
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.Collection Collection {
      get { return collection_; }
      set {
        collection_ = value;
      }
    }

    /// <summary>Field number for the "data_model" field.</summary>
    public const int DataModelFieldNumber = 3;
    private global::Mysqlx.Crud.DataModel dataModel_ = 0;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.DataModel DataModel {
      get { return dataModel_; }
      set {
        dataModel_ = value;
      }
    }

    /// <summary>Field number for the "projection" field.</summary>
    public const int ProjectionFieldNumber = 4;
    private static readonly pb::FieldCodec<global::Mysqlx.Crud.Projection> _repeated_projection_codec
        = pb::FieldCodec.ForMessage(34, global::Mysqlx.Crud.Projection.Parser);
    private readonly pbc::RepeatedField<global::Mysqlx.Crud.Projection> projection_ = new pbc::RepeatedField<global::Mysqlx.Crud.Projection>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Mysqlx.Crud.Projection> Projection {
      get { return projection_; }
    }

    /// <summary>Field number for the "criteria" field.</summary>
    public const int CriteriaFieldNumber = 5;
    private global::Mysqlx.Expr.Expr criteria_;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Expr.Expr Criteria {
      get { return criteria_; }
      set {
        criteria_ = value;
      }
    }

    /// <summary>Field number for the "args" field.</summary>
    public const int ArgsFieldNumber = 11;
    private static readonly pb::FieldCodec<global::Mysqlx.Datatypes.Scalar> _repeated_args_codec
        = pb::FieldCodec.ForMessage(90, global::Mysqlx.Datatypes.Scalar.Parser);
    private readonly pbc::RepeatedField<global::Mysqlx.Datatypes.Scalar> args_ = new pbc::RepeatedField<global::Mysqlx.Datatypes.Scalar>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Mysqlx.Datatypes.Scalar> Args {
      get { return args_; }
    }

    /// <summary>Field number for the "order" field.</summary>
    public const int OrderFieldNumber = 7;
    private static readonly pb::FieldCodec<global::Mysqlx.Crud.Order> _repeated_order_codec
        = pb::FieldCodec.ForMessage(58, global::Mysqlx.Crud.Order.Parser);
    private readonly pbc::RepeatedField<global::Mysqlx.Crud.Order> order_ = new pbc::RepeatedField<global::Mysqlx.Crud.Order>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Mysqlx.Crud.Order> Order {
      get { return order_; }
    }

    /// <summary>Field number for the "grouping" field.</summary>
    public const int GroupingFieldNumber = 8;
    private static readonly pb::FieldCodec<global::Mysqlx.Expr.Expr> _repeated_grouping_codec
        = pb::FieldCodec.ForMessage(66, global::Mysqlx.Expr.Expr.Parser);
    private readonly pbc::RepeatedField<global::Mysqlx.Expr.Expr> grouping_ = new pbc::RepeatedField<global::Mysqlx.Expr.Expr>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Mysqlx.Expr.Expr> Grouping {
      get { return grouping_; }
    }

    /// <summary>Field number for the "grouping_criteria" field.</summary>
    public const int GroupingCriteriaFieldNumber = 9;
    private global::Mysqlx.Expr.Expr groupingCriteria_;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Expr.Expr GroupingCriteria {
      get { return groupingCriteria_; }
      set {
        groupingCriteria_ = value;
      }
    }

    /// <summary>Field number for the "locking" field.</summary>
    public const int LockingFieldNumber = 12;
    private global::Mysqlx.Crud.Find.Types.RowLock locking_ = 0;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.Find.Types.RowLock Locking {
      get { return locking_; }
      set {
        locking_ = value;
      }
    }

    /// <summary>Field number for the "locking_options" field.</summary>
    public const int LockingOptionsFieldNumber = 13;
    private global::Mysqlx.Crud.Find.Types.RowLockOptions lockingOptions_ = 0;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.Find.Types.RowLockOptions LockingOptions {
      get { return lockingOptions_; }
      set {
        lockingOptions_ = value;
      }
    }

    /// <summary>Field number for the "limit" field.</summary>
    public const int LimitFieldNumber = 6;
    private global::Mysqlx.Crud.Limit limit_;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.Limit Limit {
      get { return limit_; }
      set {
        limit_ = value;
      }
    }

    /// <summary>Field number for the "limit_expr" field.</summary>
    public const int LimitExprFieldNumber = 14;
    private global::Mysqlx.Crud.LimitExpr limitExpr_;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.LimitExpr LimitExpr {
      get { return limitExpr_; }
      set {
        limitExpr_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as Find);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Find other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Collection, other.Collection)) return false;
      if (DataModel != other.DataModel) return false;
      if(!projection_.Equals(other.projection_)) return false;
      if (!object.Equals(Criteria, other.Criteria)) return false;
      if(!args_.Equals(other.args_)) return false;
      if(!order_.Equals(other.order_)) return false;
      if(!grouping_.Equals(other.grouping_)) return false;
      if (!object.Equals(GroupingCriteria, other.GroupingCriteria)) return false;
      if (Locking != other.Locking) return false;
      if (LockingOptions != other.LockingOptions) return false;
      if (!object.Equals(Limit, other.Limit)) return false;
      if (!object.Equals(LimitExpr, other.LimitExpr)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (collection_ != null) hash ^= Collection.GetHashCode();
      if (DataModel != 0) hash ^= DataModel.GetHashCode();
      hash ^= projection_.GetHashCode();
      if (criteria_ != null) hash ^= Criteria.GetHashCode();
      hash ^= args_.GetHashCode();
      hash ^= order_.GetHashCode();
      hash ^= grouping_.GetHashCode();
      if (groupingCriteria_ != null) hash ^= GroupingCriteria.GetHashCode();
      if (Locking != 0) hash ^= Locking.GetHashCode();
      if (LockingOptions != 0) hash ^= LockingOptions.GetHashCode();
      if (limit_ != null) hash ^= Limit.GetHashCode();
      if (limitExpr_ != null) hash ^= LimitExpr.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (collection_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Collection);
      }
      if (DataModel != 0) {
        output.WriteRawTag(24);
        output.WriteEnum((int) DataModel);
      }
      projection_.WriteTo(output, _repeated_projection_codec);
      if (criteria_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(Criteria);
      }
      if (limit_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(Limit);
      }
      order_.WriteTo(output, _repeated_order_codec);
      grouping_.WriteTo(output, _repeated_grouping_codec);
      if (groupingCriteria_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(GroupingCriteria);
      }
      args_.WriteTo(output, _repeated_args_codec);
      if (Locking != 0) {
        output.WriteRawTag(96);
        output.WriteEnum((int) Locking);
      }
      if (LockingOptions != 0) {
        output.WriteRawTag(104);
        output.WriteEnum((int) LockingOptions);
      }
      if (limitExpr_ != null) {
        output.WriteRawTag(114);
        output.WriteMessage(LimitExpr);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (collection_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Collection);
      }
      if (DataModel != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) DataModel);
      }
      size += projection_.CalculateSize(_repeated_projection_codec);
      if (criteria_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Criteria);
      }
      size += args_.CalculateSize(_repeated_args_codec);
      size += order_.CalculateSize(_repeated_order_codec);
      size += grouping_.CalculateSize(_repeated_grouping_codec);
      if (groupingCriteria_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GroupingCriteria);
      }
      if (Locking != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Locking);
      }
      if (LockingOptions != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) LockingOptions);
      }
      if (limit_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Limit);
      }
      if (limitExpr_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(LimitExpr);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Find other) {
      if (other == null) {
        return;
      }
      if (other.collection_ != null) {
        if (collection_ == null) {
          collection_ = new global::Mysqlx.Crud.Collection();
        }
        Collection.MergeFrom(other.Collection);
      }
      if (other.DataModel != 0) {
        DataModel = other.DataModel;
      }
      projection_.Add(other.projection_);
      if (other.criteria_ != null) {
        if (criteria_ == null) {
          criteria_ = new global::Mysqlx.Expr.Expr();
        }
        Criteria.MergeFrom(other.Criteria);
      }
      args_.Add(other.args_);
      order_.Add(other.order_);
      grouping_.Add(other.grouping_);
      if (other.groupingCriteria_ != null) {
        if (groupingCriteria_ == null) {
          groupingCriteria_ = new global::Mysqlx.Expr.Expr();
        }
        GroupingCriteria.MergeFrom(other.GroupingCriteria);
      }
      if (other.Locking != 0) {
        Locking = other.Locking;
      }
      if (other.LockingOptions != 0) {
        LockingOptions = other.LockingOptions;
      }
      if (other.limit_ != null) {
        if (limit_ == null) {
          limit_ = new global::Mysqlx.Crud.Limit();
        }
        Limit.MergeFrom(other.Limit);
      }
      if (other.limitExpr_ != null) {
        if (limitExpr_ == null) {
          limitExpr_ = new global::Mysqlx.Crud.LimitExpr();
        }
        LimitExpr.MergeFrom(other.LimitExpr);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 18: {
            if (collection_ == null) {
              collection_ = new global::Mysqlx.Crud.Collection();
            }
            input.ReadMessage(collection_);
            break;
          }
          case 24: {
            dataModel_ = (global::Mysqlx.Crud.DataModel) input.ReadEnum();
            break;
          }
          case 34: {
            projection_.AddEntriesFrom(input, _repeated_projection_codec);
            break;
          }
          case 42: {
            if (criteria_ == null) {
              criteria_ = new global::Mysqlx.Expr.Expr();
            }
            input.ReadMessage(criteria_);
            break;
          }
          case 50: {
            if (limit_ == null) {
              limit_ = new global::Mysqlx.Crud.Limit();
            }
            input.ReadMessage(limit_);
            break;
          }
          case 58: {
            order_.AddEntriesFrom(input, _repeated_order_codec);
            break;
          }
          case 66: {
            grouping_.AddEntriesFrom(input, _repeated_grouping_codec);
            break;
          }
          case 74: {
            if (groupingCriteria_ == null) {
              groupingCriteria_ = new global::Mysqlx.Expr.Expr();
            }
            input.ReadMessage(groupingCriteria_);
            break;
          }
          case 90: {
            args_.AddEntriesFrom(input, _repeated_args_codec);
            break;
          }
          case 96: {
            locking_ = (global::Mysqlx.Crud.Find.Types.RowLock) input.ReadEnum();
            break;
          }
          case 104: {
            lockingOptions_ = (global::Mysqlx.Crud.Find.Types.RowLockOptions) input.ReadEnum();
            break;
          }
          case 114: {
            if (limitExpr_ == null) {
              limitExpr_ = new global::Mysqlx.Crud.LimitExpr();
            }
            input.ReadMessage(limitExpr_);
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the Find message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    internal static partial class Types {
      internal enum RowLock {
        [pbr::OriginalName("NONE_RowLock")] NoneRowLock = 0,
        /// <summary>
        /// Lock matching rows against updates
        /// </summary>
        [pbr::OriginalName("SHARED_LOCK")] SharedLock = 1,
        /// <summary>
        /// Lock matching rows so no other transaction can read or write to it
        /// </summary>
        [pbr::OriginalName("EXCLUSIVE_LOCK")] ExclusiveLock = 2,
      }

      internal enum RowLockOptions {
        [pbr::OriginalName("NONE_RowLockOptions")] NoneRowLockOptions = 0,
        /// <summary>
        /// Do not wait to acquire row lock, fail with an error if a requested row is locked
        /// </summary>
        [pbr::OriginalName("NOWAIT")] Nowait = 1,
        /// <summary>
        /// Do not wait to acquire a row lock, remove locked rows from the result set
        /// </summary>
        [pbr::OriginalName("SKIP_LOCKED")] SkipLocked = 2,
      }

    }
    #endregion

  }

  /// <summary>
  /// Insert documents/rows into a collection/table
  ///
  /// :param collection: collection to insert into
  /// :param data_model: datamodel that the operations refer to
  /// :param projection: name of the columns to insert data into (empty if data_model is DOCUMENT)
  /// :param row: set of rows to insert into the collection/table (a single expression with a JSON document literal or an OBJECT expression)
  /// :param args: values for parameters used in row expressions
  /// :param upsert: true if this should be treated as an Upsert (that is, update on duplicate key)
  /// :Returns: :protobuf:msg:`Mysqlx.Resultset::`
  /// </summary>
  internal sealed partial class Insert : pb::IMessage<Insert> {
    private static readonly pb::MessageParser<Insert> _parser = new pb::MessageParser<Insert>(() => new Insert());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Insert> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Mysqlx.Crud.MysqlxCrudReflection.Descriptor.MessageTypes[8]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Insert() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Insert(Insert other) : this() {
      collection_ = other.collection_ != null ? other.collection_.Clone() : null;
      dataModel_ = other.dataModel_;
      projection_ = other.projection_.Clone();
      row_ = other.row_.Clone();
      args_ = other.args_.Clone();
      upsert_ = other.upsert_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Insert Clone() {
      return new Insert(this);
    }

    /// <summary>Field number for the "collection" field.</summary>
    public const int CollectionFieldNumber = 1;
    private global::Mysqlx.Crud.Collection collection_;
    /// <summary>
    ///required
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.Collection Collection {
      get { return collection_; }
      set {
        collection_ = value;
      }
    }

    /// <summary>Field number for the "data_model" field.</summary>
    public const int DataModelFieldNumber = 2;
    private global::Mysqlx.Crud.DataModel dataModel_ = 0;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.DataModel DataModel {
      get { return dataModel_; }
      set {
        dataModel_ = value;
      }
    }

    /// <summary>Field number for the "projection" field.</summary>
    public const int ProjectionFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Mysqlx.Crud.Column> _repeated_projection_codec
        = pb::FieldCodec.ForMessage(26, global::Mysqlx.Crud.Column.Parser);
    private readonly pbc::RepeatedField<global::Mysqlx.Crud.Column> projection_ = new pbc::RepeatedField<global::Mysqlx.Crud.Column>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Mysqlx.Crud.Column> Projection {
      get { return projection_; }
    }

    /// <summary>Field number for the "row" field.</summary>
    public const int RowFieldNumber = 4;
    private static readonly pb::FieldCodec<global::Mysqlx.Crud.Insert.Types.TypedRow> _repeated_row_codec
        = pb::FieldCodec.ForMessage(34, global::Mysqlx.Crud.Insert.Types.TypedRow.Parser);
    private readonly pbc::RepeatedField<global::Mysqlx.Crud.Insert.Types.TypedRow> row_ = new pbc::RepeatedField<global::Mysqlx.Crud.Insert.Types.TypedRow>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Mysqlx.Crud.Insert.Types.TypedRow> Row {
      get { return row_; }
    }

    /// <summary>Field number for the "args" field.</summary>
    public const int ArgsFieldNumber = 5;
    private static readonly pb::FieldCodec<global::Mysqlx.Datatypes.Scalar> _repeated_args_codec
        = pb::FieldCodec.ForMessage(42, global::Mysqlx.Datatypes.Scalar.Parser);
    private readonly pbc::RepeatedField<global::Mysqlx.Datatypes.Scalar> args_ = new pbc::RepeatedField<global::Mysqlx.Datatypes.Scalar>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Mysqlx.Datatypes.Scalar> Args {
      get { return args_; }
    }

    /// <summary>Field number for the "upsert" field.</summary>
    public const int UpsertFieldNumber = 6;
    private bool upsert_;
    /// <summary>
    ///optional//[default = false]
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Upsert {
      get { return upsert_; }
      set {
        upsert_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as Insert);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Insert other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Collection, other.Collection)) return false;
      if (DataModel != other.DataModel) return false;
      if(!projection_.Equals(other.projection_)) return false;
      if(!row_.Equals(other.row_)) return false;
      if(!args_.Equals(other.args_)) return false;
      if (Upsert != other.Upsert) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (collection_ != null) hash ^= Collection.GetHashCode();
      if (DataModel != 0) hash ^= DataModel.GetHashCode();
      hash ^= projection_.GetHashCode();
      hash ^= row_.GetHashCode();
      hash ^= args_.GetHashCode();
      if (Upsert != false) hash ^= Upsert.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (collection_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Collection);
      }
      if (DataModel != 0) {
        output.WriteRawTag(16);
        output.WriteEnum((int) DataModel);
      }
      projection_.WriteTo(output, _repeated_projection_codec);
      row_.WriteTo(output, _repeated_row_codec);
      args_.WriteTo(output, _repeated_args_codec);
      if (Upsert != false) {
        output.WriteRawTag(48);
        output.WriteBool(Upsert);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (collection_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Collection);
      }
      if (DataModel != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) DataModel);
      }
      size += projection_.CalculateSize(_repeated_projection_codec);
      size += row_.CalculateSize(_repeated_row_codec);
      size += args_.CalculateSize(_repeated_args_codec);
      if (Upsert != false) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Insert other) {
      if (other == null) {
        return;
      }
      if (other.collection_ != null) {
        if (collection_ == null) {
          collection_ = new global::Mysqlx.Crud.Collection();
        }
        Collection.MergeFrom(other.Collection);
      }
      if (other.DataModel != 0) {
        DataModel = other.DataModel;
      }
      projection_.Add(other.projection_);
      row_.Add(other.row_);
      args_.Add(other.args_);
      if (other.Upsert != false) {
        Upsert = other.Upsert;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (collection_ == null) {
              collection_ = new global::Mysqlx.Crud.Collection();
            }
            input.ReadMessage(collection_);
            break;
          }
          case 16: {
            dataModel_ = (global::Mysqlx.Crud.DataModel) input.ReadEnum();
            break;
          }
          case 26: {
            projection_.AddEntriesFrom(input, _repeated_projection_codec);
            break;
          }
          case 34: {
            row_.AddEntriesFrom(input, _repeated_row_codec);
            break;
          }
          case 42: {
            args_.AddEntriesFrom(input, _repeated_args_codec);
            break;
          }
          case 48: {
            Upsert = input.ReadBool();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the Insert message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    internal static partial class Types {
      internal sealed partial class TypedRow : pb::IMessage<TypedRow> {
        private static readonly pb::MessageParser<TypedRow> _parser = new pb::MessageParser<TypedRow>(() => new TypedRow());
        private pb::UnknownFieldSet _unknownFields;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pb::MessageParser<TypedRow> Parser { get { return _parser; } }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Mysqlx.Crud.Insert.Descriptor.NestedTypes[0]; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public TypedRow() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public TypedRow(TypedRow other) : this() {
          field_ = other.field_.Clone();
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public TypedRow Clone() {
          return new TypedRow(this);
        }

        /// <summary>Field number for the "field" field.</summary>
        public const int FieldFieldNumber = 1;
        private static readonly pb::FieldCodec<global::Mysqlx.Expr.Expr> _repeated_field_codec
            = pb::FieldCodec.ForMessage(10, global::Mysqlx.Expr.Expr.Parser);
        private readonly pbc::RepeatedField<global::Mysqlx.Expr.Expr> field_ = new pbc::RepeatedField<global::Mysqlx.Expr.Expr>();
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public pbc::RepeatedField<global::Mysqlx.Expr.Expr> Field {
          get { return field_; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override bool Equals(object other) {
          return Equals(other as TypedRow);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(TypedRow other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if(!field_.Equals(other.field_)) return false;
          return Equals(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          hash ^= field_.GetHashCode();
          if (_unknownFields != null) {
            hash ^= _unknownFields.GetHashCode();
          }
          return hash;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override string ToString() {
          return pb::JsonFormatter.ToDiagnosticString(this);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void WriteTo(pb::CodedOutputStream output) {
          field_.WriteTo(output, _repeated_field_codec);
          if (_unknownFields != null) {
            _unknownFields.WriteTo(output);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          size += field_.CalculateSize(_repeated_field_codec);
          if (_unknownFields != null) {
            size += _unknownFields.CalculateSize();
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(TypedRow other) {
          if (other == null) {
            return;
          }
          field_.Add(other.field_);
          _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 10: {
                field_.AddEntriesFrom(input, _repeated_field_codec);
                break;
              }
            }
          }
        }

      }

    }
    #endregion

  }

  /// <summary>
  /// Update documents/rows in a collection/table
  ///
  /// :param collection: collection to change
  /// :param data_model: datamodel that the operations refer to
  /// :param criteria: filter expression to match rows that the operations will apply on
  /// :param args: values for parameters used in filter expression
  /// :param limit: limits the number of rows to match (user can set one of: limit, limit_expr)
  /// :param order: specifies order of matched rows
  /// :param operation: list of operations to be applied. Valid operations will depend on the data_model.
  /// :param limit_expr: limits the number of rows to match (user can set one of: limit, limit_expr)
  /// :Returns: :protobuf:msg:`Mysqlx.Resultset::`
  /// </summary>
  internal sealed partial class Update : pb::IMessage<Update> {
    private static readonly pb::MessageParser<Update> _parser = new pb::MessageParser<Update>(() => new Update());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Update> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Mysqlx.Crud.MysqlxCrudReflection.Descriptor.MessageTypes[9]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Update() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Update(Update other) : this() {
      collection_ = other.collection_ != null ? other.collection_.Clone() : null;
      dataModel_ = other.dataModel_;
      criteria_ = other.criteria_ != null ? other.criteria_.Clone() : null;
      args_ = other.args_.Clone();
      order_ = other.order_.Clone();
      operation_ = other.operation_.Clone();
      limit_ = other.limit_ != null ? other.limit_.Clone() : null;
      limitExpr_ = other.limitExpr_ != null ? other.limitExpr_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Update Clone() {
      return new Update(this);
    }

    /// <summary>Field number for the "collection" field.</summary>
    public const int CollectionFieldNumber = 2;
    private global::Mysqlx.Crud.Collection collection_;
    /// <summary>
    ///required
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.Collection Collection {
      get { return collection_; }
      set {
        collection_ = value;
      }
    }

    /// <summary>Field number for the "data_model" field.</summary>
    public const int DataModelFieldNumber = 3;
    private global::Mysqlx.Crud.DataModel dataModel_ = 0;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.DataModel DataModel {
      get { return dataModel_; }
      set {
        dataModel_ = value;
      }
    }

    /// <summary>Field number for the "criteria" field.</summary>
    public const int CriteriaFieldNumber = 4;
    private global::Mysqlx.Expr.Expr criteria_;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Expr.Expr Criteria {
      get { return criteria_; }
      set {
        criteria_ = value;
      }
    }

    /// <summary>Field number for the "args" field.</summary>
    public const int ArgsFieldNumber = 8;
    private static readonly pb::FieldCodec<global::Mysqlx.Datatypes.Scalar> _repeated_args_codec
        = pb::FieldCodec.ForMessage(66, global::Mysqlx.Datatypes.Scalar.Parser);
    private readonly pbc::RepeatedField<global::Mysqlx.Datatypes.Scalar> args_ = new pbc::RepeatedField<global::Mysqlx.Datatypes.Scalar>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Mysqlx.Datatypes.Scalar> Args {
      get { return args_; }
    }

    /// <summary>Field number for the "order" field.</summary>
    public const int OrderFieldNumber = 6;
    private static readonly pb::FieldCodec<global::Mysqlx.Crud.Order> _repeated_order_codec
        = pb::FieldCodec.ForMessage(50, global::Mysqlx.Crud.Order.Parser);
    private readonly pbc::RepeatedField<global::Mysqlx.Crud.Order> order_ = new pbc::RepeatedField<global::Mysqlx.Crud.Order>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Mysqlx.Crud.Order> Order {
      get { return order_; }
    }

    /// <summary>Field number for the "operation" field.</summary>
    public const int OperationFieldNumber = 7;
    private static readonly pb::FieldCodec<global::Mysqlx.Crud.UpdateOperation> _repeated_operation_codec
        = pb::FieldCodec.ForMessage(58, global::Mysqlx.Crud.UpdateOperation.Parser);
    private readonly pbc::RepeatedField<global::Mysqlx.Crud.UpdateOperation> operation_ = new pbc::RepeatedField<global::Mysqlx.Crud.UpdateOperation>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Mysqlx.Crud.UpdateOperation> Operation {
      get { return operation_; }
    }

    /// <summary>Field number for the "limit" field.</summary>
    public const int LimitFieldNumber = 5;
    private global::Mysqlx.Crud.Limit limit_;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.Limit Limit {
      get { return limit_; }
      set {
        limit_ = value;
      }
    }

    /// <summary>Field number for the "limit_expr" field.</summary>
    public const int LimitExprFieldNumber = 9;
    private global::Mysqlx.Crud.LimitExpr limitExpr_;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.LimitExpr LimitExpr {
      get { return limitExpr_; }
      set {
        limitExpr_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as Update);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Update other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Collection, other.Collection)) return false;
      if (DataModel != other.DataModel) return false;
      if (!object.Equals(Criteria, other.Criteria)) return false;
      if(!args_.Equals(other.args_)) return false;
      if(!order_.Equals(other.order_)) return false;
      if(!operation_.Equals(other.operation_)) return false;
      if (!object.Equals(Limit, other.Limit)) return false;
      if (!object.Equals(LimitExpr, other.LimitExpr)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (collection_ != null) hash ^= Collection.GetHashCode();
      if (DataModel != 0) hash ^= DataModel.GetHashCode();
      if (criteria_ != null) hash ^= Criteria.GetHashCode();
      hash ^= args_.GetHashCode();
      hash ^= order_.GetHashCode();
      hash ^= operation_.GetHashCode();
      if (limit_ != null) hash ^= Limit.GetHashCode();
      if (limitExpr_ != null) hash ^= LimitExpr.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (collection_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Collection);
      }
      if (DataModel != 0) {
        output.WriteRawTag(24);
        output.WriteEnum((int) DataModel);
      }
      if (criteria_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Criteria);
      }
      if (limit_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(Limit);
      }
      order_.WriteTo(output, _repeated_order_codec);
      operation_.WriteTo(output, _repeated_operation_codec);
      args_.WriteTo(output, _repeated_args_codec);
      if (limitExpr_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(LimitExpr);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (collection_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Collection);
      }
      if (DataModel != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) DataModel);
      }
      if (criteria_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Criteria);
      }
      size += args_.CalculateSize(_repeated_args_codec);
      size += order_.CalculateSize(_repeated_order_codec);
      size += operation_.CalculateSize(_repeated_operation_codec);
      if (limit_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Limit);
      }
      if (limitExpr_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(LimitExpr);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Update other) {
      if (other == null) {
        return;
      }
      if (other.collection_ != null) {
        if (collection_ == null) {
          collection_ = new global::Mysqlx.Crud.Collection();
        }
        Collection.MergeFrom(other.Collection);
      }
      if (other.DataModel != 0) {
        DataModel = other.DataModel;
      }
      if (other.criteria_ != null) {
        if (criteria_ == null) {
          criteria_ = new global::Mysqlx.Expr.Expr();
        }
        Criteria.MergeFrom(other.Criteria);
      }
      args_.Add(other.args_);
      order_.Add(other.order_);
      operation_.Add(other.operation_);
      if (other.limit_ != null) {
        if (limit_ == null) {
          limit_ = new global::Mysqlx.Crud.Limit();
        }
        Limit.MergeFrom(other.Limit);
      }
      if (other.limitExpr_ != null) {
        if (limitExpr_ == null) {
          limitExpr_ = new global::Mysqlx.Crud.LimitExpr();
        }
        LimitExpr.MergeFrom(other.LimitExpr);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 18: {
            if (collection_ == null) {
              collection_ = new global::Mysqlx.Crud.Collection();
            }
            input.ReadMessage(collection_);
            break;
          }
          case 24: {
            dataModel_ = (global::Mysqlx.Crud.DataModel) input.ReadEnum();
            break;
          }
          case 34: {
            if (criteria_ == null) {
              criteria_ = new global::Mysqlx.Expr.Expr();
            }
            input.ReadMessage(criteria_);
            break;
          }
          case 42: {
            if (limit_ == null) {
              limit_ = new global::Mysqlx.Crud.Limit();
            }
            input.ReadMessage(limit_);
            break;
          }
          case 50: {
            order_.AddEntriesFrom(input, _repeated_order_codec);
            break;
          }
          case 58: {
            operation_.AddEntriesFrom(input, _repeated_operation_codec);
            break;
          }
          case 66: {
            args_.AddEntriesFrom(input, _repeated_args_codec);
            break;
          }
          case 74: {
            if (limitExpr_ == null) {
              limitExpr_ = new global::Mysqlx.Crud.LimitExpr();
            }
            input.ReadMessage(limitExpr_);
            break;
          }
        }
      }
    }

  }

  /// <summary>
  /// Delete documents/rows from a Collection/Table
  ///
  /// :param collection: collection to change
  /// :param data_model: datamodel that the operations refer to
  /// :param criteria: filter expression to match rows that the operations will apply on
  /// :param args: values for parameters used in filter expression
  /// :param limit: limits the number of rows to match (user can set one of: limit, limit_expr)
  /// :param order: specifies order of matched rows
  /// :param limit_expr: limits the number of rows to match (user can set one of: limit, limit_expr)
  /// :Returns: :protobuf:msg:`Mysqlx.Resultset::`
  /// </summary>
  internal sealed partial class Delete : pb::IMessage<Delete> {
    private static readonly pb::MessageParser<Delete> _parser = new pb::MessageParser<Delete>(() => new Delete());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Delete> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Mysqlx.Crud.MysqlxCrudReflection.Descriptor.MessageTypes[10]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Delete() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Delete(Delete other) : this() {
      collection_ = other.collection_ != null ? other.collection_.Clone() : null;
      dataModel_ = other.dataModel_;
      criteria_ = other.criteria_ != null ? other.criteria_.Clone() : null;
      args_ = other.args_.Clone();
      order_ = other.order_.Clone();
      limit_ = other.limit_ != null ? other.limit_.Clone() : null;
      limitExpr_ = other.limitExpr_ != null ? other.limitExpr_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Delete Clone() {
      return new Delete(this);
    }

    /// <summary>Field number for the "collection" field.</summary>
    public const int CollectionFieldNumber = 1;
    private global::Mysqlx.Crud.Collection collection_;
    /// <summary>
    ///required
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.Collection Collection {
      get { return collection_; }
      set {
        collection_ = value;
      }
    }

    /// <summary>Field number for the "data_model" field.</summary>
    public const int DataModelFieldNumber = 2;
    private global::Mysqlx.Crud.DataModel dataModel_ = 0;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.DataModel DataModel {
      get { return dataModel_; }
      set {
        dataModel_ = value;
      }
    }

    /// <summary>Field number for the "criteria" field.</summary>
    public const int CriteriaFieldNumber = 3;
    private global::Mysqlx.Expr.Expr criteria_;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Expr.Expr Criteria {
      get { return criteria_; }
      set {
        criteria_ = value;
      }
    }

    /// <summary>Field number for the "args" field.</summary>
    public const int ArgsFieldNumber = 6;
    private static readonly pb::FieldCodec<global::Mysqlx.Datatypes.Scalar> _repeated_args_codec
        = pb::FieldCodec.ForMessage(50, global::Mysqlx.Datatypes.Scalar.Parser);
    private readonly pbc::RepeatedField<global::Mysqlx.Datatypes.Scalar> args_ = new pbc::RepeatedField<global::Mysqlx.Datatypes.Scalar>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Mysqlx.Datatypes.Scalar> Args {
      get { return args_; }
    }

    /// <summary>Field number for the "order" field.</summary>
    public const int OrderFieldNumber = 5;
    private static readonly pb::FieldCodec<global::Mysqlx.Crud.Order> _repeated_order_codec
        = pb::FieldCodec.ForMessage(42, global::Mysqlx.Crud.Order.Parser);
    private readonly pbc::RepeatedField<global::Mysqlx.Crud.Order> order_ = new pbc::RepeatedField<global::Mysqlx.Crud.Order>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Mysqlx.Crud.Order> Order {
      get { return order_; }
    }

    /// <summary>Field number for the "limit" field.</summary>
    public const int LimitFieldNumber = 4;
    private global::Mysqlx.Crud.Limit limit_;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.Limit Limit {
      get { return limit_; }
      set {
        limit_ = value;
      }
    }

    /// <summary>Field number for the "limit_expr" field.</summary>
    public const int LimitExprFieldNumber = 7;
    private global::Mysqlx.Crud.LimitExpr limitExpr_;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.LimitExpr LimitExpr {
      get { return limitExpr_; }
      set {
        limitExpr_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as Delete);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Delete other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Collection, other.Collection)) return false;
      if (DataModel != other.DataModel) return false;
      if (!object.Equals(Criteria, other.Criteria)) return false;
      if(!args_.Equals(other.args_)) return false;
      if(!order_.Equals(other.order_)) return false;
      if (!object.Equals(Limit, other.Limit)) return false;
      if (!object.Equals(LimitExpr, other.LimitExpr)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (collection_ != null) hash ^= Collection.GetHashCode();
      if (DataModel != 0) hash ^= DataModel.GetHashCode();
      if (criteria_ != null) hash ^= Criteria.GetHashCode();
      hash ^= args_.GetHashCode();
      hash ^= order_.GetHashCode();
      if (limit_ != null) hash ^= Limit.GetHashCode();
      if (limitExpr_ != null) hash ^= LimitExpr.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (collection_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Collection);
      }
      if (DataModel != 0) {
        output.WriteRawTag(16);
        output.WriteEnum((int) DataModel);
      }
      if (criteria_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Criteria);
      }
      if (limit_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Limit);
      }
      order_.WriteTo(output, _repeated_order_codec);
      args_.WriteTo(output, _repeated_args_codec);
      if (limitExpr_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(LimitExpr);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (collection_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Collection);
      }
      if (DataModel != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) DataModel);
      }
      if (criteria_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Criteria);
      }
      size += args_.CalculateSize(_repeated_args_codec);
      size += order_.CalculateSize(_repeated_order_codec);
      if (limit_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Limit);
      }
      if (limitExpr_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(LimitExpr);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Delete other) {
      if (other == null) {
        return;
      }
      if (other.collection_ != null) {
        if (collection_ == null) {
          collection_ = new global::Mysqlx.Crud.Collection();
        }
        Collection.MergeFrom(other.Collection);
      }
      if (other.DataModel != 0) {
        DataModel = other.DataModel;
      }
      if (other.criteria_ != null) {
        if (criteria_ == null) {
          criteria_ = new global::Mysqlx.Expr.Expr();
        }
        Criteria.MergeFrom(other.Criteria);
      }
      args_.Add(other.args_);
      order_.Add(other.order_);
      if (other.limit_ != null) {
        if (limit_ == null) {
          limit_ = new global::Mysqlx.Crud.Limit();
        }
        Limit.MergeFrom(other.Limit);
      }
      if (other.limitExpr_ != null) {
        if (limitExpr_ == null) {
          limitExpr_ = new global::Mysqlx.Crud.LimitExpr();
        }
        LimitExpr.MergeFrom(other.LimitExpr);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (collection_ == null) {
              collection_ = new global::Mysqlx.Crud.Collection();
            }
            input.ReadMessage(collection_);
            break;
          }
          case 16: {
            dataModel_ = (global::Mysqlx.Crud.DataModel) input.ReadEnum();
            break;
          }
          case 26: {
            if (criteria_ == null) {
              criteria_ = new global::Mysqlx.Expr.Expr();
            }
            input.ReadMessage(criteria_);
            break;
          }
          case 34: {
            if (limit_ == null) {
              limit_ = new global::Mysqlx.Crud.Limit();
            }
            input.ReadMessage(limit_);
            break;
          }
          case 42: {
            order_.AddEntriesFrom(input, _repeated_order_codec);
            break;
          }
          case 50: {
            args_.AddEntriesFrom(input, _repeated_args_codec);
            break;
          }
          case 58: {
            if (limitExpr_ == null) {
              limitExpr_ = new global::Mysqlx.Crud.LimitExpr();
            }
            input.ReadMessage(limitExpr_);
            break;
          }
        }
      }
    }

  }

  internal sealed partial class CreateView : pb::IMessage<CreateView> {
    private static readonly pb::MessageParser<CreateView> _parser = new pb::MessageParser<CreateView>(() => new CreateView());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<CreateView> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Mysqlx.Crud.MysqlxCrudReflection.Descriptor.MessageTypes[11]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public CreateView() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public CreateView(CreateView other) : this() {
      collection_ = other.collection_ != null ? other.collection_.Clone() : null;
      definer_ = other.definer_;
      algorithm_ = other.algorithm_;
      security_ = other.security_;
      check_ = other.check_;
      column_ = other.column_.Clone();
      stmt_ = other.stmt_ != null ? other.stmt_.Clone() : null;
      replaceExisting_ = other.replaceExisting_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public CreateView Clone() {
      return new CreateView(this);
    }

    /// <summary>Field number for the "collection" field.</summary>
    public const int CollectionFieldNumber = 1;
    private global::Mysqlx.Crud.Collection collection_;
    /// <summary>
    ///required
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.Collection Collection {
      get { return collection_; }
      set {
        collection_ = value;
      }
    }

    /// <summary>Field number for the "definer" field.</summary>
    public const int DefinerFieldNumber = 2;
    private string definer_ = "";
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Definer {
      get { return definer_; }
      set {
        definer_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "algorithm" field.</summary>
    public const int AlgorithmFieldNumber = 3;
    private global::Mysqlx.Crud.ViewAlgorithm algorithm_ = 0;
    /// <summary>
    ///optional//[default = UNDEFINED]
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.ViewAlgorithm Algorithm {
      get { return algorithm_; }
      set {
        algorithm_ = value;
      }
    }

    /// <summary>Field number for the "security" field.</summary>
    public const int SecurityFieldNumber = 4;
    private global::Mysqlx.Crud.ViewSqlSecurity security_ = 0;
    /// <summary>
    ///optional//[default = DEFINER]
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.ViewSqlSecurity Security {
      get { return security_; }
      set {
        security_ = value;
      }
    }

    /// <summary>Field number for the "check" field.</summary>
    public const int CheckFieldNumber = 5;
    private global::Mysqlx.Crud.ViewCheckOption check_ = 0;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.ViewCheckOption Check {
      get { return check_; }
      set {
        check_ = value;
      }
    }

    /// <summary>Field number for the "column" field.</summary>
    public const int ColumnFieldNumber = 6;
    private static readonly pb::FieldCodec<string> _repeated_column_codec
        = pb::FieldCodec.ForString(50);
    private readonly pbc::RepeatedField<string> column_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<string> Column {
      get { return column_; }
    }

    /// <summary>Field number for the "stmt" field.</summary>
    public const int StmtFieldNumber = 7;
    private global::Mysqlx.Crud.Find stmt_;
    /// <summary>
    ///required
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.Find Stmt {
      get { return stmt_; }
      set {
        stmt_ = value;
      }
    }

    /// <summary>Field number for the "replace_existing" field.</summary>
    public const int ReplaceExistingFieldNumber = 8;
    private bool replaceExisting_;
    /// <summary>
    ///optional//[default = false]
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool ReplaceExisting {
      get { return replaceExisting_; }
      set {
        replaceExisting_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as CreateView);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(CreateView other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Collection, other.Collection)) return false;
      if (Definer != other.Definer) return false;
      if (Algorithm != other.Algorithm) return false;
      if (Security != other.Security) return false;
      if (Check != other.Check) return false;
      if(!column_.Equals(other.column_)) return false;
      if (!object.Equals(Stmt, other.Stmt)) return false;
      if (ReplaceExisting != other.ReplaceExisting) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (collection_ != null) hash ^= Collection.GetHashCode();
      if (Definer.Length != 0) hash ^= Definer.GetHashCode();
      if (Algorithm != 0) hash ^= Algorithm.GetHashCode();
      if (Security != 0) hash ^= Security.GetHashCode();
      if (Check != 0) hash ^= Check.GetHashCode();
      hash ^= column_.GetHashCode();
      if (stmt_ != null) hash ^= Stmt.GetHashCode();
      if (ReplaceExisting != false) hash ^= ReplaceExisting.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (collection_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Collection);
      }
      if (Definer.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Definer);
      }
      if (Algorithm != 0) {
        output.WriteRawTag(24);
        output.WriteEnum((int) Algorithm);
      }
      if (Security != 0) {
        output.WriteRawTag(32);
        output.WriteEnum((int) Security);
      }
      if (Check != 0) {
        output.WriteRawTag(40);
        output.WriteEnum((int) Check);
      }
      column_.WriteTo(output, _repeated_column_codec);
      if (stmt_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(Stmt);
      }
      if (ReplaceExisting != false) {
        output.WriteRawTag(64);
        output.WriteBool(ReplaceExisting);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (collection_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Collection);
      }
      if (Definer.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Definer);
      }
      if (Algorithm != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Algorithm);
      }
      if (Security != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Security);
      }
      if (Check != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Check);
      }
      size += column_.CalculateSize(_repeated_column_codec);
      if (stmt_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Stmt);
      }
      if (ReplaceExisting != false) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(CreateView other) {
      if (other == null) {
        return;
      }
      if (other.collection_ != null) {
        if (collection_ == null) {
          collection_ = new global::Mysqlx.Crud.Collection();
        }
        Collection.MergeFrom(other.Collection);
      }
      if (other.Definer.Length != 0) {
        Definer = other.Definer;
      }
      if (other.Algorithm != 0) {
        Algorithm = other.Algorithm;
      }
      if (other.Security != 0) {
        Security = other.Security;
      }
      if (other.Check != 0) {
        Check = other.Check;
      }
      column_.Add(other.column_);
      if (other.stmt_ != null) {
        if (stmt_ == null) {
          stmt_ = new global::Mysqlx.Crud.Find();
        }
        Stmt.MergeFrom(other.Stmt);
      }
      if (other.ReplaceExisting != false) {
        ReplaceExisting = other.ReplaceExisting;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (collection_ == null) {
              collection_ = new global::Mysqlx.Crud.Collection();
            }
            input.ReadMessage(collection_);
            break;
          }
          case 18: {
            Definer = input.ReadString();
            break;
          }
          case 24: {
            algorithm_ = (global::Mysqlx.Crud.ViewAlgorithm) input.ReadEnum();
            break;
          }
          case 32: {
            security_ = (global::Mysqlx.Crud.ViewSqlSecurity) input.ReadEnum();
            break;
          }
          case 40: {
            check_ = (global::Mysqlx.Crud.ViewCheckOption) input.ReadEnum();
            break;
          }
          case 50: {
            column_.AddEntriesFrom(input, _repeated_column_codec);
            break;
          }
          case 58: {
            if (stmt_ == null) {
              stmt_ = new global::Mysqlx.Crud.Find();
            }
            input.ReadMessage(stmt_);
            break;
          }
          case 64: {
            ReplaceExisting = input.ReadBool();
            break;
          }
        }
      }
    }

  }

  internal sealed partial class ModifyView : pb::IMessage<ModifyView> {
    private static readonly pb::MessageParser<ModifyView> _parser = new pb::MessageParser<ModifyView>(() => new ModifyView());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<ModifyView> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Mysqlx.Crud.MysqlxCrudReflection.Descriptor.MessageTypes[12]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ModifyView() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ModifyView(ModifyView other) : this() {
      collection_ = other.collection_ != null ? other.collection_.Clone() : null;
      definer_ = other.definer_;
      algorithm_ = other.algorithm_;
      security_ = other.security_;
      check_ = other.check_;
      column_ = other.column_.Clone();
      stmt_ = other.stmt_ != null ? other.stmt_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ModifyView Clone() {
      return new ModifyView(this);
    }

    /// <summary>Field number for the "collection" field.</summary>
    public const int CollectionFieldNumber = 1;
    private global::Mysqlx.Crud.Collection collection_;
    /// <summary>
    ///required
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.Collection Collection {
      get { return collection_; }
      set {
        collection_ = value;
      }
    }

    /// <summary>Field number for the "definer" field.</summary>
    public const int DefinerFieldNumber = 2;
    private string definer_ = "";
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Definer {
      get { return definer_; }
      set {
        definer_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "algorithm" field.</summary>
    public const int AlgorithmFieldNumber = 3;
    private global::Mysqlx.Crud.ViewAlgorithm algorithm_ = 0;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.ViewAlgorithm Algorithm {
      get { return algorithm_; }
      set {
        algorithm_ = value;
      }
    }

    /// <summary>Field number for the "security" field.</summary>
    public const int SecurityFieldNumber = 4;
    private global::Mysqlx.Crud.ViewSqlSecurity security_ = 0;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.ViewSqlSecurity Security {
      get { return security_; }
      set {
        security_ = value;
      }
    }

    /// <summary>Field number for the "check" field.</summary>
    public const int CheckFieldNumber = 5;
    private global::Mysqlx.Crud.ViewCheckOption check_ = 0;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.ViewCheckOption Check {
      get { return check_; }
      set {
        check_ = value;
      }
    }

    /// <summary>Field number for the "column" field.</summary>
    public const int ColumnFieldNumber = 6;
    private static readonly pb::FieldCodec<string> _repeated_column_codec
        = pb::FieldCodec.ForString(50);
    private readonly pbc::RepeatedField<string> column_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<string> Column {
      get { return column_; }
    }

    /// <summary>Field number for the "stmt" field.</summary>
    public const int StmtFieldNumber = 7;
    private global::Mysqlx.Crud.Find stmt_;
    /// <summary>
    ///optional
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.Find Stmt {
      get { return stmt_; }
      set {
        stmt_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as ModifyView);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(ModifyView other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Collection, other.Collection)) return false;
      if (Definer != other.Definer) return false;
      if (Algorithm != other.Algorithm) return false;
      if (Security != other.Security) return false;
      if (Check != other.Check) return false;
      if(!column_.Equals(other.column_)) return false;
      if (!object.Equals(Stmt, other.Stmt)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (collection_ != null) hash ^= Collection.GetHashCode();
      if (Definer.Length != 0) hash ^= Definer.GetHashCode();
      if (Algorithm != 0) hash ^= Algorithm.GetHashCode();
      if (Security != 0) hash ^= Security.GetHashCode();
      if (Check != 0) hash ^= Check.GetHashCode();
      hash ^= column_.GetHashCode();
      if (stmt_ != null) hash ^= Stmt.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (collection_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Collection);
      }
      if (Definer.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Definer);
      }
      if (Algorithm != 0) {
        output.WriteRawTag(24);
        output.WriteEnum((int) Algorithm);
      }
      if (Security != 0) {
        output.WriteRawTag(32);
        output.WriteEnum((int) Security);
      }
      if (Check != 0) {
        output.WriteRawTag(40);
        output.WriteEnum((int) Check);
      }
      column_.WriteTo(output, _repeated_column_codec);
      if (stmt_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(Stmt);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (collection_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Collection);
      }
      if (Definer.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Definer);
      }
      if (Algorithm != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Algorithm);
      }
      if (Security != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Security);
      }
      if (Check != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Check);
      }
      size += column_.CalculateSize(_repeated_column_codec);
      if (stmt_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Stmt);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ModifyView other) {
      if (other == null) {
        return;
      }
      if (other.collection_ != null) {
        if (collection_ == null) {
          collection_ = new global::Mysqlx.Crud.Collection();
        }
        Collection.MergeFrom(other.Collection);
      }
      if (other.Definer.Length != 0) {
        Definer = other.Definer;
      }
      if (other.Algorithm != 0) {
        Algorithm = other.Algorithm;
      }
      if (other.Security != 0) {
        Security = other.Security;
      }
      if (other.Check != 0) {
        Check = other.Check;
      }
      column_.Add(other.column_);
      if (other.stmt_ != null) {
        if (stmt_ == null) {
          stmt_ = new global::Mysqlx.Crud.Find();
        }
        Stmt.MergeFrom(other.Stmt);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (collection_ == null) {
              collection_ = new global::Mysqlx.Crud.Collection();
            }
            input.ReadMessage(collection_);
            break;
          }
          case 18: {
            Definer = input.ReadString();
            break;
          }
          case 24: {
            algorithm_ = (global::Mysqlx.Crud.ViewAlgorithm) input.ReadEnum();
            break;
          }
          case 32: {
            security_ = (global::Mysqlx.Crud.ViewSqlSecurity) input.ReadEnum();
            break;
          }
          case 40: {
            check_ = (global::Mysqlx.Crud.ViewCheckOption) input.ReadEnum();
            break;
          }
          case 50: {
            column_.AddEntriesFrom(input, _repeated_column_codec);
            break;
          }
          case 58: {
            if (stmt_ == null) {
              stmt_ = new global::Mysqlx.Crud.Find();
            }
            input.ReadMessage(stmt_);
            break;
          }
        }
      }
    }

  }

  internal sealed partial class DropView : pb::IMessage<DropView> {
    private static readonly pb::MessageParser<DropView> _parser = new pb::MessageParser<DropView>(() => new DropView());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<DropView> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Mysqlx.Crud.MysqlxCrudReflection.Descriptor.MessageTypes[13]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DropView() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DropView(DropView other) : this() {
      collection_ = other.collection_ != null ? other.collection_.Clone() : null;
      ifExists_ = other.ifExists_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DropView Clone() {
      return new DropView(this);
    }

    /// <summary>Field number for the "collection" field.</summary>
    public const int CollectionFieldNumber = 1;
    private global::Mysqlx.Crud.Collection collection_;
    /// <summary>
    ///required
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Mysqlx.Crud.Collection Collection {
      get { return collection_; }
      set {
        collection_ = value;
      }
    }

    /// <summary>Field number for the "if_exists" field.</summary>
    public const int IfExistsFieldNumber = 2;
    private bool ifExists_;
    /// <summary>
    ///optional//[ default = false ]
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool IfExists {
      get { return ifExists_; }
      set {
        ifExists_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as DropView);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(DropView other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Collection, other.Collection)) return false;
      if (IfExists != other.IfExists) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (collection_ != null) hash ^= Collection.GetHashCode();
      if (IfExists != false) hash ^= IfExists.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (collection_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Collection);
      }
      if (IfExists != false) {
        output.WriteRawTag(16);
        output.WriteBool(IfExists);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (collection_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Collection);
      }
      if (IfExists != false) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(DropView other) {
      if (other == null) {
        return;
      }
      if (other.collection_ != null) {
        if (collection_ == null) {
          collection_ = new global::Mysqlx.Crud.Collection();
        }
        Collection.MergeFrom(other.Collection);
      }
      if (other.IfExists != false) {
        IfExists = other.IfExists;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (collection_ == null) {
              collection_ = new global::Mysqlx.Crud.Collection();
            }
            input.ReadMessage(collection_);
            break;
          }
          case 16: {
            IfExists = input.ReadBool();
            break;
          }
        }
      }
    }

  }

  #endregion

}

#endregion Designer generated code
